[SCM] eclipse - Powerful IDE written in java - Debian package. branch, upstream-3.6, updated. 0529185d16731ae2249a85dcb4c6700e9fd8bc2b

Benjamin Drung bdrung-guest at alioth.debian.org
Thu Jun 10 15:56:08 UTC 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "eclipse - Powerful IDE written in java - Debian package.".

The branch, upstream-3.6 has been updated
       via  0529185d16731ae2249a85dcb4c6700e9fd8bc2b (commit)
      from  5c5f9ca0fccff82201a83a25a93d4412764cdac0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0529185d16731ae2249a85dcb4c6700e9fd8bc2b
Author: Benjamin Drung <bdrung at ubuntu.com>
Date:   Thu Jun 10 17:52:31 2010 +0200

    Import a post-RC4 release of eclipse 3.6.0 (eclipse-3.6.0-src.tar.bz2).

-----------------------------------------------------------------------

Summary of changes:
 eclipse/directory.txt                              |  923 ++++----
 eclipse/featureVersions.properties                 |   52 +-
 eclipse/features/master-equinox/build.properties   |    4 +-
 .../features/org.eclipse.cvs/feature.properties    |   86 +-
 eclipse/features/org.eclipse.cvs/license.html      |   94 +-
 .../features/org.eclipse.cvs/rootfiles/notice.html |   94 +-
 .../sourceTemplateFeature/feature.properties       |   88 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../feature.properties                             |  230 ++-
 .../license.html                                   |  186 +-
 .../feature.properties                             |  230 ++-
 .../org.eclipse.equinox.core.sdk/license.html      |  186 +-
 .../macosx/ppc/Eclipse.app/Contents/Info.plist     |  146 +-
 .../macosx/x86/Eclipse.app/Contents/Info.plist     |  146 +-
 .../macosx/ppc/Eclipse.app/Contents/Info.plist     |    6 +-
 .../macosx/x86/Eclipse.app/Contents/Info.plist     |    6 +-
 .../macosx/x86_64/Eclipse.app/Contents/Info.plist  |    6 +-
 .../build.properties                               |    5 +-
 .../customBuildCallbacks.xml                       |    4 +
 .../feature.properties                             |  120 +-
 .../library/gtk/build.sh                           |    5 +-
 .../org.eclipse.equinox.executable/license.html    |   94 +-
 .../target.build.properties                        |    7 +-
 .../target.build.xml                               |   17 +
 .../feature.properties                             |   88 +-
 .../license.html                                   |   94 +-
 .../org.eclipse.equinox.p2.sdk/feature.properties  |   86 +-
 .../org.eclipse.equinox.p2.sdk/license.html        |  100 +-
 .../feature.properties                             |   86 +-
 .../org.eclipse.equinox.p2.user.ui/license.html    |  102 +-
 .../sourceTemplateFeature/feature.properties       |  120 +-
 .../sourceTemplateFeature/license.html             |  102 +-
 .../org.eclipse.equinox.sdk/feature.properties     |   92 +-
 .../features/org.eclipse.equinox.sdk/feature.xml   |    4 +
 .../features/org.eclipse.equinox.sdk/license.html  |   94 +-
 .../build.properties                               |    4 +-
 .../feature.properties                             |  230 ++-
 .../org.eclipse.equinox.server.core/license.html   |  186 +-
 .../build.properties                               |    4 +-
 .../feature.properties                             |  230 ++-
 .../org.eclipse.equinox.server.jetty/license.html  |  186 +-
 .../feature.properties                             |  230 ++-
 .../org.eclipse.equinox.server.p2/license.html     |  186 +-
 .../build.properties                               |    4 +-
 .../feature.properties                             |  230 ++-
 .../license.html                                   |  186 +-
 .../build.properties                               |    4 +-
 .../feature.properties                             |  230 ++-
 .../org.eclipse.equinox.server.simple/license.html |  186 +-
 .../feature.properties                             |  230 ++-
 .../license.html                                   |  186 +-
 .../feature.properties                             |  120 +-
 .../org.eclipse.equinox.weaving.sdk/license.html   |   94 +-
 .../features/org.eclipse.help/feature.properties   |   88 +-
 eclipse/features/org.eclipse.help/license.html     |   94 +-
 .../sourceTemplateFeature/feature.properties       |   88 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../features/org.eclipse.jdt/feature.properties    |   90 +-
 eclipse/features/org.eclipse.jdt/license.html      |   94 +-
 .../features/org.eclipse.jdt/rootfiles/notice.html |   94 +-
 .../sourceTemplateFeature/feature.properties       |   90 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../sourceTemplatePlugin/about.properties          |    4 +-
 .../sourceTemplatePlugin/plugin.properties         |    4 +-
 .../feature.properties                             |   88 +-
 .../license.html                                   |   94 +-
 .../features/org.eclipse.pde/feature.properties    |   90 +-
 eclipse/features/org.eclipse.pde/license.html      |   94 +-
 .../sourceTemplateFeature/feature.properties       |   94 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../sourceTemplatePlugin/about.properties          |    4 +-
 .../org.eclipse.platform/feature.properties        |   88 +-
 eclipse/features/org.eclipse.platform/feature.xml  |   11 -
 eclipse/features/org.eclipse.platform/license.html |   94 +-
 .../org.eclipse.platform/rootfiles/notice.html     |   94 +-
 .../rootfiles/readme/readme_eclipse.html           |  726 ++++---
 .../sourceTemplateFeature/feature.properties       |   88 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../sourceTemplatePlugin/about.properties          |    4 +-
 .../features/org.eclipse.rcp/feature.properties    |   88 +-
 eclipse/features/org.eclipse.rcp/feature.xml       |   42 +
 eclipse/features/org.eclipse.rcp/license.html      |   94 +-
 .../sourceTemplateFeature/feature.properties       |   88 +-
 .../sourceTemplateFeature/license.html             |   94 +-
 .../org.eclipse.releng.tools/feature.properties    |   88 +-
 .../features/org.eclipse.releng.tools/license.html |   94 +-
 eclipse/features/org.eclipse.sdk/build.properties  |    4 +-
 .../features/org.eclipse.sdk/feature.properties    |   88 +-
 eclipse/features/org.eclipse.sdk/license.html      |   94 +-
 eclipse/label.properties                           |    6 +-
 eclipse/maps/org.eclipse.releng/maps/ant.map       |   12 +-
 eclipse/maps/org.eclipse.releng/maps/compare.map   |   12 +-
 eclipse/maps/org.eclipse.releng/maps/core-hpux.map |    2 +-
 .../maps/org.eclipse.releng/maps/core-macosx.map   |    2 +-
 eclipse/maps/org.eclipse.releng/maps/core-qnx.map  |    3 -
 .../org.eclipse.releng/maps/core-variables.map     |    2 +-
 eclipse/maps/org.eclipse.releng/maps/core.map      |  170 +-
 eclipse/maps/org.eclipse.releng/maps/doc.map       |   10 +-
 .../org.eclipse.releng/maps/equinox-incubator.map  |   28 +-
 eclipse/maps/org.eclipse.releng/maps/feature.map   |   48 +-
 eclipse/maps/org.eclipse.releng/maps/jdtapt.map    |   16 +-
 eclipse/maps/org.eclipse.releng/maps/jdtcore.map   |   16 +-
 eclipse/maps/org.eclipse.releng/maps/jdtdebug.map  |   24 +-
 eclipse/maps/org.eclipse.releng/maps/jdtui.map     |   32 +-
 eclipse/maps/org.eclipse.releng/maps/orbit.map     |  108 +-
 eclipse/maps/org.eclipse.releng/maps/p2.map        |  114 +-
 eclipse/maps/org.eclipse.releng/maps/pde.map       |   56 +-
 eclipse/maps/org.eclipse.releng/maps/rcp.map       |    4 +-
 eclipse/maps/org.eclipse.releng/maps/releng.map    |    8 +-
 eclipse/maps/org.eclipse.releng/maps/swt.map       |   62 +-
 eclipse/maps/org.eclipse.releng/maps/team.map      |   38 +-
 .../maps/org.eclipse.releng/maps/testframework.map |    2 +-
 eclipse/maps/org.eclipse.releng/maps/text.map      |   24 +-
 eclipse/maps/org.eclipse.releng/maps/ui.map        |   66 +-
 eclipse/maps/org.eclipse.releng/maps/update.map    |   14 +-
 .../maps/org.eclipse.releng/maps/userassist.map    |   26 +-
 eclipse/pluginVersions.properties                  |  587 +++---
 .../META-INF/ECLIPSEF.RSA                          |  Bin 5637 -> 0 bytes
 .../META-INF/ECLIPSEF.SF                           |  179 --
 .../META-INF/MANIFEST.MF                           |  234 ---
 .../plugin.properties                              |   12 -
 .../META-INF/ECLIPSEF.RSA                          |  Bin 0 -> 5639 bytes
 .../META-INF/ECLIPSEF.SF                           |  179 ++
 .../META-INF/MANIFEST.MF                           |  234 +++
 .../META-INF/eclipse.inf                           |    0
 .../about.html                                     |    0
 .../about_files/LICENSE.dom.html                   |    0
 .../about_files/LICENSE.sax.txt                    |    0
 .../about_files/NOTICE                             |    0
 .../about_files/asl-v20.txt                        |    0
 .../bin/ant                                        |    0
 .../bin/ant.bat                                    |    0
 .../bin/ant.cmd                                    |    0
 .../bin/antRun                                     |    0
 .../bin/antRun.bat                                 |    0
 .../bin/antRun.pl                                  |    0
 .../bin/antenv.cmd                                 |    0
 .../bin/complete-ant-cmd.pl                        |    0
 .../bin/envset.cmd                                 |    0
 .../bin/lcp.bat                                    |    0
 .../bin/runant.pl                                  |    0
 .../bin/runant.py                                  |    0
 .../bin/runrc.cmd                                  |    0
 .../etc/changelog.xsl                              |    0
 .../etc/checkstyle/checkstyle-frames.xsl           |    0
 .../etc/checkstyle/checkstyle-text.xsl             |    0
 .../etc/checkstyle/checkstyle-xdoc.xsl             |    0
 .../etc/coverage-frames.xsl                        |    0
 .../etc/jdepend-frames.xsl                         |    0
 .../etc/jdepend.xsl                                |    0
 .../etc/junit-frames-xalan1.xsl                    |    0
 .../etc/junit-frames.xsl                           |    0
 .../etc/junit-noframes.xsl                         |    0
 .../etc/log.xsl                                    |    0
 .../etc/maudit-frames.xsl                          |    0
 .../etc/mmetrics-frames.xsl                        |    0
 .../etc/tagdiff.xsl                                |    0
 .../plugin.properties                              |   12 +
 eclipse/plugins/org.eclipse.ant.core/plugin.xml    |    5 +-
 .../plugins/org.eclipse.ant.launching/plugin.xml   |    5 +-
 .../ant/internal/launching/AntLaunchingUtil.java   |   19 +-
 .../launchConfigurations/AntLaunchDelegate.java    |    9 +-
 .../launching/launchConfigurations/AntProcess.java |   34 +-
 .../ui/launchConfigurations/AntJRETab.java         |   16 +-
 eclipse/plugins/org.eclipse.ant.ui/plugin.xml      |    5 +-
 .../compare/internal/core/patch/DiffProject.java   |    2 +-
 .../internal/core/patch/FileDiffResult.java        |    6 +-
 .../compare/internal/core/patch/FilePatch2.java    |    2 +-
 .../eclipse/compare/internal/core/patch/Hunk.java  |    2 +-
 .../compare/internal/core/patch/HunkResult.java    |    2 +-
 .../compare/internal/core/patch/LineReader.java    |    2 +-
 .../compare/internal/core/patch/PatchReader.java   |    2 +-
 .../org/eclipse/compare/patch/PatchBuilder.java    |    2 +-
 .../eclipse/compare/patch/PatchConfiguration.java  |    2 +-
 .../rangedifferencer/DifferencesIterator.java      |    2 +-
 .../compare/rangedifferencer/RangeDifferencer.java |   30 +-
 .../org.eclipse.compare.win32/META-INF/MANIFEST.MF |    2 +-
 .../contentmergeviewer/ContentMergeViewer.java     |    6 +-
 .../eclipse/compare/internal/AdapterFactory.java   |   10 +
 .../CompareContentViewerSwitchingPane.java         |    4 +-
 .../internal/CompareEditorSelectionProvider.java   |   54 +-
 .../compare/internal/CompareMessages.properties    |    4 +-
 .../compare/internal/patch/InputPatchPage.java     |    2 +-
 .../compare/internal/patch/PatchDiffNode.java      |    2 +-
 .../internal/patch/PatchFileTypedElement.java      |    5 +-
 .../internal/patch/PatchProjectDiffNode.java       |    2 +-
 .../compare/internal/patch/PatchTargetPage.java    |    2 +-
 .../compare/internal/patch/PatchWizard.java        |    2 +-
 .../internal/patch/WorkspaceFileDiffResult.java    |   16 +-
 .../icons/full}/obj16/message_info.gif             |  Bin 267 -> 267 bytes
 .../icons/full/obj16/warning_st_obj.gif            |  Bin 324 -> 0 bytes
 .../plugins/org.eclipse.compare/plugin.properties  |    2 +-
 .../schema/structureCreators.exsd                  |   44 +-
 .../org.eclipse.core.boot/META-INF/MANIFEST.MF     |    2 +-
 .../databinding/beans/BeanListProperty.java        |    2 +-
 .../beans/BeanListPropertyDecorator.java           |    2 +-
 .../databinding/beans/BeanMapProperty.java         |    2 +-
 .../beans/BeanMapPropertyDecorator.java            |    2 +-
 .../databinding/beans/BeanSetProperty.java         |    2 +-
 .../beans/BeanSetPropertyDecorator.java            |    2 +-
 .../beans/BeanValuePropertyDecorator.java          |    2 +-
 .../databinding/beans/PojoListProperty.java        |    2 +-
 .../beans/PojoListPropertyDecorator.java           |    2 +-
 .../databinding/beans/PojoMapProperty.java         |    2 +-
 .../beans/PojoMapPropertyDecorator.java            |    2 +-
 .../databinding/beans/PojoSetProperty.java         |    2 +-
 .../beans/PojoSetPropertyDecorator.java            |    2 +-
 .../beans/PojoValuePropertyDecorator.java          |    2 +-
 .../eclipse/core/databinding/observable/Diffs.java |    2 +-
 .../databinding/observable/IDisposeListener.java   |    2 +-
 .../core/databinding/observable/list/ListDiff.java |    2 +-
 .../observable/map/ComputedObservableMap.java      |    2 +-
 .../core/databinding/observable/map/MapDiff.java   |    2 +-
 .../core/databinding/observable/set/SetDiff.java   |    2 +-
 .../internal/databinding/identity/IdentityMap.java |    2 +-
 .../internal/databinding/identity/IdentitySet.java |    2 +-
 .../databinding/identity/IdentityWrapper.java      |    2 +-
 .../property/list/DelegatingListProperty.java      |    2 +-
 .../databinding/property/list/IListProperty.java   |    2 +-
 .../databinding/property/list/ListProperty.java    |    2 +-
 .../property/list/MultiListProperty.java           |    2 +-
 .../property/list/SimpleListProperty.java          |    7 +-
 .../property/map/DelegatingMapProperty.java        |    2 +-
 .../databinding/property/map/IMapProperty.java     |    2 +-
 .../core/databinding/property/map/MapProperty.java |    2 +-
 .../property/map/SimpleMapProperty.java            |    7 +-
 .../property/set/DelegatingSetProperty.java        |    2 +-
 .../databinding/property/set/ISetProperty.java     |    2 +-
 .../core/databinding/property/set/SetProperty.java |    2 +-
 .../property/set/SimpleSetProperty.java            |    7 +-
 .../databinding/property/set/UnionSetProperty.java |    2 +-
 .../property/value/DelegatingValueProperty.java    |    2 +-
 .../databinding/property/value/IValueProperty.java |    2 +-
 .../property/value/SimpleValueProperty.java        |    2 +-
 .../databinding/property/value/ValueProperty.java  |    2 +-
 .../property/ListPropertyDetailValuesList.java     |    2 +-
 .../property/MapPropertyDetailValuesMap.java       |    2 +-
 .../property/SetPropertyDetailValuesMap.java       |    2 +-
 .../property/ValuePropertyDetailList.java          |    2 +-
 .../property/ValuePropertyDetailMap.java           |    2 +-
 .../property/ValuePropertyDetailSet.java           |    2 +-
 .../property/ValuePropertyDetailValue.java         |    2 +-
 .../property/list/SelfListProperty.java            |    2 +-
 .../list/SimplePropertyObservableList.java         |    2 +-
 .../databinding/property/map/SelfMapProperty.java  |    2 +-
 .../property/map/SimplePropertyObservableMap.java  |    2 +-
 .../property/set/SimplePropertyObservableSet.java  |    2 +-
 .../value/ListSimpleValueObservableList.java       |    2 +-
 .../value/MapSimpleValueObservableMap.java         |    2 +-
 .../value/SetSimpleValueObservableMap.java         |    2 +-
 .../DataBindingContextBindingsProperty.java        |    2 +-
 ...ngContextValidationStatusProvidersProperty.java |    2 +-
 .../core/internal/databinding/IdentityMap.java     |    2 +-
 .../core/internal/databinding/IdentitySet.java     |    2 +-
 .../core/internal/databinding/IdentityWrapper.java |    2 +-
 .../ValidationStatusProviderModelsProperty.java    |    2 +-
 .../ValidationStatusProviderTargetsProperty.java   |    2 +-
 .../conversion/StringToNumberParser.java           |    2 +-
 .../internal/expressions/ExpressionMessages.java   |    2 +-
 .../expressions/ExpressionMessages.properties      |    2 +-
 .../org.eclipse.core.externaltools/plugin.xml      |    5 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../BUILD_INFO.txt                                 |    8 +-
 .../org.eclipse.core.filesystem.qnx.x86/.project   |   11 -
 .../META-INF/MANIFEST.MF                           |    9 -
 .../org.eclipse.core.filesystem.qnx.x86/about.html |   28 -
 .../build.properties                               |   17 -
 .../fragment.properties                            |   12 -
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../natives/unix/hpux/PA_RISC.mak                  |    2 +-
 .../natives/unix/hpux/ia64_32.mak                  |    2 +-
 .../eclipse/core/filesystem/provider/FileTree.java |    4 +-
 .../eclipse/core/internal/jobs/ImplicitJobs.java   |   16 -
 .../org/eclipse/core/internal/jobs/JobManager.java |   33 +-
 .../eclipse/core/internal/jobs/OrderedLock.java    |   33 +-
 .../org/eclipse/core/internal/jobs/Semaphore.java  |   15 +-
 .../org/eclipse/core/internal/jobs/ThreadJob.java  |   36 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../org.eclipse.core.resources/natives/ref.c       |   10 +
 .../org.eclipse.core.resources/natives/ref.h       |    2 +-
 .../org.eclipse.core.resources/plugin.properties   |    6 +-
 .../eclipse/core/internal/events/AutoBuildJob.java |    8 +-
 .../eclipse/core/internal/events/BuildManager.java |   13 +-
 .../core/internal/localstore/UnifiedTree.java      |    2 +-
 .../org/eclipse/core/internal/resources/File.java  |    8 +-
 .../eclipse/core/internal/resources/Filter.java    |    4 +-
 .../internal/resources/IModelObjectConstants.java  |    4 +-
 .../eclipse/core/internal/resources/Marker.java    |    4 +-
 .../core/internal/resources/ModelObjectWriter.java |    7 +-
 .../org/eclipse/core/internal/resources/OS.java    |   21 +-
 .../eclipse/core/internal/resources/Project.java   |  122 +-
 .../internal/resources/ProjectDescription.java     |   59 +-
 .../resources/ProjectDescriptionReader.java        |   24 +
 .../core/internal/resources/ProjectInfo.java       |   10 +-
 .../eclipse/core/internal/resources/Resource.java  |   73 +-
 .../internal/resources/VariableDescription.java    |    4 +-
 .../org/eclipse/core/internal/utils/Messages.java  |    3 +
 .../core/internal/utils/messages.properties        |    3 +
 .../src/org/eclipse/core/resources/IResource.java  |    2 +-
 .../src/org/eclipse/core/resources/IWorkspace.java |    3 +-
 .../core/resources/IncrementalProjectBuilder.java  |   45 +-
 .../eclipse/core/resources/ResourceAttributes.java |    2 +-
 .../org/eclipse/core/resources/WorkspaceLock.java  |    5 +-
 .../core/resources/filtermatchers/package.html     |   21 +
 .../core/resources/variableresolvers/package.html  |   21 +
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../runtime/auth/AuthorizationDatabase.java        |    4 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../plugins/org.eclipse.core.variables/plugin.xml  |    5 +-
 .../eclipse/debug/core/ILaunchConfiguration.java   | 1198 ++++++------
 .../debug/core/ILaunchConfigurationType.java       |    2 +-
 .../core/model/ILaunchConfigurationDelegate.java   |   14 +-
 .../core/model/ILaunchConfigurationDelegate2.java  |   14 +-
 .../eclipse/debug/core/model/RuntimeProcess.java   |   20 +-
 .../AbstractSourceContainerTypeDelegate.java       |   14 +-
 .../debug/internal/core/DebugCoreMessages.java     |   14 +-
 .../internal/core/DebugCoreMessages.properties     |   14 +-
 .../debug/internal/core/IExpressionsListener2.java |   14 +-
 .../internal/core/LaunchConfigurationType.java     |    9 +
 .../eclipse/debug/internal/core/LaunchManager.java |   74 +-
 .../core/PreferredDelegateModifyListener.java      |   55 +
 eclipse/plugins/org.eclipse.debug.core/plugin.xml  |    8 +-
 .../plugins/org.eclipse.debug.ui/plugin.properties |   14 +-
 eclipse/plugins/org.eclipse.debug.ui/plugin.xml    |   17 +-
 .../schema/detailPaneFactories.exsd                |   11 +-
 .../ui/AbstractDebugListSelectionDialog.java       |    2 +-
 .../org/eclipse/debug/internal/ui/SWTFactory.java  |   10 +-
 .../breakpointGroups/GroupBreakpointsByAction.java |    2 +-
 .../breakpointGroups/PasteBreakpointsAction.java   |    2 +-
 .../breakpoints/BreakpointsExpandAllAction.java    |    4 +-
 .../ToggleBreakpointObjectActionDelegate.java      |   14 +-
 .../variables/ChangeVariableValueAction.java       |    2 +-
 .../ui/commands/actions/RestartCommandAction.java  |    8 +-
 .../ui/commands/actions/RestartCommandHandler.java |   27 +
 .../commands/actions/TerminateAndRemoveAction.java |   65 +-
 .../contexts/DebugModelContextBindingManager.java  |    4 +-
 .../adapters/AsynchronousDebugLabelAdapter.java    |    4 +-
 .../adapters/StackFrameViewerInputProvider.java    |    2 +-
 .../CreateLaunchConfigurationAction.java           |    2 +-
 .../DuplicateLaunchConfigurationAction.java        |    2 +-
 .../LaunchConfigurationTabGroupViewer.java         |  111 +-
 .../LaunchConfigurationView.java                   |    6 +-
 .../LaunchConfigurationsDialog.java                |   82 +-
 .../ui/launchConfigurations/LaunchHistory.java     |   47 +-
 .../provisional/AbstractAsyncTableRendering.java   |   16 +
 .../provisional/MemoryViewPresentationContext.java |    2 +-
 .../ui/model/elements/BreakpointLabelProvider.java |   97 +-
 .../elements/BreakpointManagerContentProvider.java | 2198 ++++++++++----------
 .../ui/model/elements/ElementLabelProvider.java    |   34 +-
 .../elements/ExpressionManagerContentProvider.java |    2 +
 .../ui/model/elements/ProcessContentProvider.java  |   47 +
 .../ui/sourcelookup/SourceLookupUIMessages.java    |    2 +-
 .../sourcelookup/SourceLookupUIMessages.properties |    2 +-
 .../StringSubstitutionMessages.java                |    3 +
 .../StringSubstitutionMessages.properties          |    5 +-
 .../ui/viewers/PartPresentationContext.java        |    2 +-
 .../ui/viewers/model/ChildrenCountUpdate.java      |    2 +-
 .../internal/ui/viewers/model/ChildrenUpdate.java  |    2 +-
 .../ui/viewers/model/ElementCompareRequest.java    |    2 +-
 .../ui/viewers/model/ElementMementoRequest.java    |    2 +-
 .../ui/viewers/model/HasChildrenUpdate.java        |    2 +-
 .../internal/ui/viewers/model/IMementoManager.java |    2 +-
 .../ui/viewers/model/ModelContentProvider.java     |    2 +-
 .../ui/viewers/model/TreeModelLabelProvider.java   |    2 +-
 .../ui/viewers/model/provisional/IModelProxy.java  |    2 +-
 .../model/provisional/IPresentationContext.java    |    2 +-
 .../model/provisional/IStateUpdateListener.java    |    2 +-
 .../model/provisional/PresentationContext.java     |    4 +-
 .../viewers/model/provisional/TreeModelViewer.java |    2 +-
 .../ui/viewers/provisional/AbstractModelProxy.java |    2 +-
 .../viewers/update/DefaultModelProxyFactory.java   |    2 +-
 .../internal/ui/viewers/update/LaunchProxy.java    |   10 +-
 .../ui/views/DebugModelPresentationContext.java    |    4 +-
 .../ui/views/breakpoints/BreakpointContainer.java  |   69 +-
 .../ui/views/breakpoints/ElementComparator.java    |  334 ++--
 .../views/launch/DebugElementAdapterFactory.java   |    5 +
 .../ui/views/memory/AbstractMemoryViewPane.java    |   64 +-
 .../ui/views/memory/MemoryBlocksTreeViewPane.java  |    4 +-
 .../memory/MemoryViewSynchronizationService.java   |   12 +-
 .../ui/views/memory/RenderingViewPane.java         |   13 +-
 .../renderings/AsyncTableRenderingViewer.java      |    2 +-
 .../variables/VariablesViewMessages.properties     |   14 +-
 .../details/DefaultDetailPaneFactory.java          |    4 +-
 .../ui/views/variables/details/DetailMessages.java |    2 +-
 .../variables/details/DetailMessages.properties    |    2 +-
 .../views/variables/details/DetailPaneManager.java |    2 +-
 .../views/variables/details/MessageDetailPane.java |    4 +
 .../org/eclipse/debug/ui/InspectPopupDialog.java   |    2 +-
 .../debug/ui/StringVariableSelectionDialog.java    |   44 +-
 .../debug/ui/memory/AbstractTableRendering.java    |   14 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../org.eclipse.ecf.filetransfer/build.properties  |    5 +-
 .../eclipse/ecf/filetransfer/FileTransferJob.java  |    1 +
 .../filetransfer/IRetrieveFileTransferOptions.java |   44 +
 .../ecf/filetransfer/ISendFileTransferOptions.java |   19 +
 .../IncomingFileTransferException.java             |   36 +
 .../IIncomingFileTransferReceiveResumedEvent.java  |    7 +
 .../IIncomingFileTransferReceiveStartEvent.java    |    8 +
 .../org.eclipse.ecf.identity/META-INF/MANIFEST.MF  |    2 +-
 .../org.eclipse.ecf.identity/build.properties      |    4 +-
 .../src/org/eclipse/ecf/core/identity/GUID.java    |   43 +-
 .../src/org/eclipse/ecf/core/identity/LongID.java  |   35 +-
 .../org/eclipse/ecf/core/identity/Namespace.java   |  103 +-
 .../org/eclipse/ecf/core/identity/StringID.java    |   30 +-
 .../eclipse/ecf/core/util/IDFactoryTracker.java    |   33 +
 .../ecf/internal/core/identity/Activator.java      |   38 +-
 .../ecf/internal/core/identity/Messages.java       |    2 -
 .../ecf/internal/core/identity/messages.properties |    2 -
 .../.settings/org.eclipse.jdt.core.prefs           |    7 +-
 .../.settings/org.eclipse.pde.prefs                |   26 +-
 .../META-INF/MANIFEST.MF                           |    1 -
 .../build.properties                               |    4 +-
 .../.settings/org.eclipse.jdt.core.prefs           |    7 +-
 .../.settings/org.eclipse.pde.api.tools.prefs      |   91 +
 .../.settings/org.eclipse.pde.prefs                |   26 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../build.properties                               |    2 +-
 .../filetransfer/httpclient/Activator.java         |    8 +
 .../HttpClientProxyCredentialProvider.java         |   27 +
 .../httpclient/HttpClientFileSystemBrowser.java    |   27 +-
 .../filetransfer/httpclient/HttpClientOptions.java |   27 +
 .../httpclient/HttpClientRetrieveFileTransfer.java |  155 ++-
 .../build.properties                               |    3 +-
 .../.settings/org.eclipse.jdt.core.prefs           |    9 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../build.properties                               |    4 +-
 .../internal/provider/filetransfer/Activator.java  |    5 +-
 .../internal/provider/filetransfer/Messages.java   |    1 -
 .../provider/filetransfer/messages.properties      |    1 -
 .../browse/AbstractFileSystemBrowser.java          |   48 +-
 .../filetransfer/browse/URLFileSystemBrowser.java  |   10 +-
 .../outgoing/AbstractOutgoingFileTransfer.java     |   40 +-
 .../retrieve/AbstractRetrieveFileTransfer.java     |  134 +-
 .../UrlConnectionRetrieveFileTransfer.java         |  108 +-
 .../provider/filetransfer/util/JREProxyHelper.java |   15 +-
 .../filetransfer/util/PollingInputStream.java      |   41 +-
 .../filetransfer/util/ProxySetupHelper.java        |  101 +
 .../plugins/org.eclipse.ecf.ssl/build.properties   |    3 +-
 .../plugins/org.eclipse.ecf/META-INF/MANIFEST.MF   |    2 +-
 eclipse/plugins/org.eclipse.ecf/build.properties   |    2 +-
 eclipse/plugins/org.eclipse.ecf/javadoc.xml        |    2 +-
 eclipse/plugins/org.eclipse.ecf/plugin.properties  |    4 +-
 eclipse/plugins/org.eclipse.ecf/plugin.xml         |    1 +
 .../plugins/org.eclipse.ecf/schema/container.exsd  |  174 ++
 .../org.eclipse.ecf/schema/containerFactory.exsd   |    9 +-
 .../org/eclipse/ecf/core/AbstractContainer.java    |    5 +-
 .../src/org/eclipse/ecf/core/ContainerFactory.java |   98 +-
 .../eclipse/ecf/core/ContainerTypeDescription.java |   62 +-
 .../org/eclipse/ecf/core/IContainerFactory.java    |  267 ++-
 .../core/provider/BaseContainerInstantiator.java   |   15 +-
 .../BaseRemoteServiceContainerInstantiator.java    |   36 +
 .../ecf/core/provider/IContainerInstantiator.java  |   10 +-
 .../IRemoteServiceContainerInstantiator.java       |   82 +
 .../src/org/eclipse/ecf/core/start/IECFStart.java  |    1 +
 .../ecf/core/status/SerializableMultiStatus.java   |    1 +
 .../ecf/core/status/SerializableStatus.java        |    1 +
 .../src/org/eclipse/ecf/core/user/IUser.java       |    1 +
 .../ecf/core/util/ContainerFactoryTracker.java     |   31 +
 .../ecf/core/util/ContainerManagerTracker.java     |   30 +
 .../org/eclipse/ecf/internal/core/ECFPlugin.java   |  296 ++-
 .../equinox/internal/app/EclipseAppContainer.java  |    2 +-
 .../org/eclipse/equinox/internal/app/Messages.java |    3 +-
 .../equinox/internal/app/messages.properties       |    3 +-
 .../equinox/internal/cm/ConfigurationImpl.java     |    3 +-
 .../equinox/internal/ds/InstanceProcess.java       |  129 +-
 .../org/eclipse/equinox/internal/ds/Resolver.java  |   78 +-
 .../eclipse/equinox/internal/ds/SCRManager.java    |    2 +-
 .../internal/ds/model/ServiceComponentProp.java    |    1 -
 .../equinox/EclipseLauncherParser.java             |   14 +-
 .../equinox/EquinoxBundlesState.java               |   14 +-
 .../frameworkadmin/equinox/EquinoxConstants.java   |   14 +-
 .../frameworkadmin/equinox/EquinoxFwAdminImpl.java |    2 +-
 .../equinox/EquinoxFwConfigFileParser.java         |   14 +-
 .../equinox/EquinoxManipulatorImpl.java            |   14 +-
 .../internal/frameworkadmin/equinox/Messages.java  |   17 +-
 .../frameworkadmin/equinox/ParserUtils.java        |    2 +-
 .../equinox/http/jetty/JettyConfigurator.java      |    3 +-
 .../http/servlet/internal/HttpServiceImpl.java     |    4 +-
 .../http/servlet/internal/ProxyServlet.java        |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    8 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../repository/CompositeArtifactRepository.java    |   15 +-
 .../CompositeArtifactRepositoryFactory.java        |  141 +-
 .../simple/SimpleArtifactRepository.java           |   22 +-
 .../simple/SimpleArtifactRepositoryFactory.java    |  137 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../plugins/org.eclipse.equinox.p2.console/pom.xml |    2 +-
 .../plugins/org.eclipse.equinox.p2.core/.options   |    5 +-
 .../internal/p2/core/ProvisioningAgent.java        |   77 +-
 .../equinox/internal/p2/core/helpers/Tracing.java  |    2 +
 .../p2/director/app/DirectorApplication.java       |   15 +-
 .../equinox/internal/p2/director/app/Messages.java |    3 +
 .../internal/p2/director/app/messages.properties   |    3 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../internal/p2/director/AttachmentHelper.java     |   27 +-
 .../equinox/internal/p2/director/Explanation.java  |   74 +-
 .../equinox/internal/p2/director/Messages.java     |    4 +
 .../equinox/internal/p2/director/Projector.java    |  121 +-
 .../internal/p2/director/SimplePlanner.java        |   29 +-
 .../equinox/internal/p2/director/Slicer.java       |   51 +-
 .../internal/p2/director/messages.properties       |    4 +
 .../p2/director/ProfileChangeRequest.java          |    1 +
 .../equinox/p2/planner/IProfileChangeRequest.java  |    2 +
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../pom.xml                                        |    2 +-
 .../p2/directorywatcher/RepositoryListener.java    |   19 +-
 .../schema/connectorDiscovery.exsd                 |    2 +-
 .../compatibility/BundleDiscoveryStrategy.java     |    6 +
 .../ConnectorDiscoveryExtensionReader.java         |   44 +-
 .../p2/discovery/compatibility/Messages.java       |    7 +
 .../RemoteBundleDiscoveryStrategy.java             |    2 +-
 .../p2/discovery/compatibility/SiteVerifier.java   |  131 ++
 .../p2/discovery/compatibility/messages.properties |    3 +
 .../p2/discovery/AbstractDiscoveryStrategy.java    |    1 +
 .../META-INF/MANIFEST.MF                           |    1 +
 .../equinox/internal/p2/engine/Messages.java       |    2 +
 .../equinox/internal/p2/engine/ProfileEvent.java   |   24 +
 .../p2/engine/ProfileMetadataRepository.java       |    6 +-
 .../internal/p2/engine/SimpleProfileRegistry.java  |   17 +-
 .../p2/engine/SurrogateProfileHandler.java         |   52 +-
 .../equinox/internal/p2/engine/messages.properties |    4 +-
 .../p2/engine/phases/CertificateChecker.java       |   76 +-
 .../equinox/p2/engine/ProvisioningContext.java     |  244 +--
 .../p2/extensionlocation/SiteListener.java         |   17 +-
 .../p2/garbagecollector/GarbageCollector.java      |    2 +-
 .../p2/metadata/repository/CacheManager.java       |  430 ----
 .../CompositeMetadataRepositoryFactory.java        |    3 +
 .../repository/LocalMetadataRepository.java        |   40 +-
 .../internal/p2/metadata/repository/Messages.java  |    4 +-
 .../repository/MetadataRepositoryComponent.java    |   11 +-
 .../SimpleMetadataRepositoryFactory.java           |    3 +
 .../p2/metadata/repository/io/MetadataParser.java  |   68 +-
 .../p2/metadata/repository/io/MetadataWriter.java  |   51 +-
 .../p2/metadata/repository/messages.properties     |    3 -
 .../equinox/internal/p2/metadata/IUMap.java        |    5 +-
 .../p2/metadata/InstallableUnitFragment.java       |   14 -
 .../equinox/internal/p2/metadata/OSGiVersion.java  |    3 +
 .../internal/p2/metadata/expression/Binary.java    |    4 +
 .../p2/metadata/expression/CollectionFilter.java   |    4 +
 .../p2/metadata/expression/ContextExpression.java  |    6 +-
 .../expression/CurryedLambdaExpression.java        |    8 +
 .../p2/metadata/expression/Everything.java         |   32 +-
 .../p2/metadata/expression/Expression.java         |    4 +
 .../p2/metadata/expression/LambdaExpression.java   |    4 +
 .../internal/p2/metadata/expression/NAry.java      |    7 +
 .../internal/p2/metadata/expression/Pipe.java      |   25 +-
 .../internal/p2/metadata/expression/Unary.java     |    4 +
 .../internal/p2/metadata/expression/Variable.java  |    4 +
 .../p2/metadata/expression/WrappedIQuery.java      |    4 +
 .../equinox/p2/metadata/MetadataFactory.java       |  100 +-
 .../META-INF/MANIFEST.MF                           |    1 +
 .../p2/operations/IFailedStatusEvaluator.java      |   25 +
 .../p2/operations/PlannerResolutionJob.java        |   64 +-
 .../operations/SearchForUpdatesResolutionJob.java  |    4 +-
 .../internal/p2/operations/messages.properties     |    2 +-
 .../equinox/p2/operations/InstallOperation.java    |   37 +-
 .../p2/operations/ProfileChangeOperation.java      |   22 +-
 .../equinox/p2/operations/UninstallOperation.java  |   20 +-
 .../equinox/p2/operations/UpdateOperation.java     |    2 +-
 .../p2/publisher/eclipse/BundlesAction.java        |    9 +-
 .../p2/publisher/eclipse/ConfigCUsAction.java      |   22 +-
 .../spi/p2/publisher/LocalizationHelper.java       |    2 +-
 .../internal/p2/reconciler/dropins/Messages.java   |    5 +-
 .../p2/reconciler/dropins/ProfileSynchronizer.java |  280 ++-
 .../p2/reconciler/dropins/messages.properties      |    6 +-
 .../repository/tools/MirrorApplication.java        |    6 +-
 .../tools/RecreateRepositoryApplication.java       |   14 +-
 .../internal/repository/tools/Repo2Runnable.java   |   12 +
 .../repository/tools/tasks/MirrorTask.java         |    4 +-
 .../repository/tools/tasks/RemoveIUTask.java       |    2 +-
 .../org.eclipse.equinox.p2.repository/.project     |    5 +
 .../META-INF/MANIFEST.MF                           |    1 +
 .../OSGI-INF/cacheManager.xml                      |    8 +
 .../build.properties                               |   19 +-
 .../internal/p2/repository/CacheManager.java       |  359 ++++
 .../p2/repository/CacheManagerComponent.java       |   27 +
 .../internal/p2/repository/Credentials.java        |    7 +-
 .../equinox/internal/p2/repository/FileReader.java |    8 +-
 .../equinox/internal/p2/repository/Messages.java   |    5 +
 .../helpers/AbstractRepositoryManager.java         |   62 +-
 .../p2/repository/helpers/LocationProperties.java  |    4 +
 .../internal/p2/repository/messages.properties     |    7 +-
 .../provisional/p2/repository/RepositoryEvent.java |   36 +
 .../eclipse/actions/SetLauncherNameAction.java     |    5 +-
 .../internal/p2/update/ConfigurationParser.java    |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../equinox/internal/p2/ui/admin/ProfilesView.java |    2 +-
 .../internal/p2/ui/admin/RepositoriesView.java     |    2 +-
 .../META-INF/MANIFEST.MF                           |    1 +
 .../org.eclipse.equinox.p2.ui.discovery/plugin.xml |   15 +
 .../p2/ui/discovery/commands/Messages.java         |    8 +-
 .../commands/ShowBundleCatalogCommandHandler.java  |   73 +-
 .../ShowRepositoryCatalogCommandHandler.java       |   50 +-
 .../p2/ui/discovery/commands/messages.properties   |    4 +-
 .../operations/DiscoveryInstallOperation.java      |    3 +-
 .../p2/ui/discovery/util/ControlListViewer.java    |   12 +-
 .../p2/ui/discovery/util/FilteredViewer.java       |   36 +-
 .../p2/ui/discovery/wizards/CatalogViewer.java     |   70 +-
 .../internal/p2/ui/discovery/wizards/Messages.java |    5 +-
 .../p2/ui/discovery/wizards/messages.properties    |   22 +-
 .../p2/ui/sdk/scheduler/PreferenceInitializer.java |   13 +-
 .../p2/ui/sdk/InstallNewSoftwareHandler.java       |    2 +-
 .../p2/ui/sdk/PreloadingRepositoryHandler.java     |   34 +-
 .../internal/p2/ui/sdk/ProvSDKMessages.java        |    4 +-
 .../internal/p2/ui/sdk/ProvSDKUIActivator.java     |    2 +-
 .../p2/ui/sdk/RevertProfilePageWithCompare.java    |    2 +-
 .../equinox/internal/p2/ui/sdk/SDKPolicy.java      |    2 +-
 .../internal/p2/ui/sdk/SimpleLicenseManager.java   |    2 +-
 .../equinox/internal/p2/ui/sdk/UpdateHandler.java  |    4 +-
 .../equinox/internal/p2/ui/sdk/messages.properties |    2 +
 .../p2/ui/sdk/prefs/PreferenceConstants.java       |    2 +-
 .../p2/ui/sdk/prefs/PreferenceInitializer.java     |    2 +-
 .../internal/p2/ui/ColocatedRepositoryTracker.java |   60 +
 .../org/eclipse/equinox/internal/p2/ui/ProvUI.java |    6 +
 .../equinox/internal/p2/ui/ProvUIMessages.java     |    6 +-
 .../internal/p2/ui/ProvUIProvisioningListener.java |   88 +-
 .../p2/ui/ProvisioningOperationRunner.java         |    1 +
 .../equinox/internal/p2/ui/QueryProvider.java      |   10 +-
 .../internal/p2/ui/UpdateManagerCompatibility.java |   12 +-
 .../internal/p2/ui/dialogs/AvailableIUGroup.java   |   49 +-
 .../internal/p2/ui/dialogs/AvailableIUsPage.java   |  100 +-
 .../p2/ui/dialogs/DelayedFilterCheckboxTree.java   |  142 +-
 .../p2/ui/dialogs/IPreFilterJobProvider.java       |   23 +
 .../p2/ui/dialogs/IRepositoryManipulationHook.java |   22 +
 .../internal/p2/ui/dialogs/InstallWizard.java      |  142 ++-
 .../internal/p2/ui/dialogs/InstalledIUGroup.java   |    2 +-
 .../p2/ui/dialogs/ProvisioningOperationWizard.java |   47 +-
 .../p2/ui/dialogs/RepositorySelectionGroup.java    |   54 +-
 .../p2/ui/dialogs/ResolutionResultsWizardPage.java |    4 +
 .../p2/ui/dialogs/ResolutionStatusPage.java        |   19 +-
 .../internal/p2/ui/dialogs/SelectableIUsPage.java  |   18 +-
 .../equinox/internal/p2/ui/messages.properties     |   12 +-
 .../equinox/internal/p2/ui/model/ElementUtils.java |  116 +-
 .../StructuredViewerProvisioningListener.java      |    4 +-
 .../equinox/p2/ui/LoadMetadataRepositoryJob.java   |   16 +-
 .../src/org/eclipse/equinox/p2/ui/Policy.java      |   23 +-
 .../org/eclipse/equinox/p2/ui/ProvisioningUI.java  |   14 +-
 .../equinox/p2/ui/RepositoryManipulationPage.java  |  112 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../internal/p2/updatesite/SiteXMLAction.java      |   14 +-
 .../equinox/internal/p2/updatesite/UpdateSite.java |   37 +-
 .../p2/updatesite/VersionSuffixGenerator.java      |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../adaptor/EclipseAdaptorMessages.properties      |    2 +-
 .../internal/core/ExternalMessages.properties      |    6 +-
 .../org.eclipse.equinox.util/META-INF/MANIFEST.MF  |    2 +-
 .../plugins/org.eclipse.help.base/about.properties |    2 +-
 .../org.eclipse.help.base/plugin.properties        |    6 +-
 eclipse/plugins/org.eclipse.help.base/plugin.xml   |    7 +-
 .../schema/luceneSearchParticipants.exsd           |    7 +-
 .../help/internal/protocols/HelpURLConnection.java |   97 +-
 .../help/search/LuceneSearchParticipant.java       |    3 +
 eclipse/plugins/org.eclipse.help.ui/plugin.xml     |   17 +-
 .../eclipse/help/ui/internal/Messages.properties   |    2 +-
 .../search/HelpCriteriaContentProvider.java        |    7 +-
 .../org.eclipse.help.webapp/advanced/advanced.jsp  |    2 +-
 .../advanced/bookmarksView.jsp                     |    4 +-
 .../advanced/confirmShowAll.jsp                    |    4 +-
 .../org.eclipse.help.webapp/advanced/content.jsp   |    4 +-
 .../advanced/deferredView.jsp                      |    4 +-
 .../org.eclipse.help.webapp/advanced/err.jsp       |    4 +-
 .../org.eclipse.help.webapp/advanced/help.jsp      |    4 +-
 .../advanced/helpToolbar.jsp                       |    4 +-
 .../org.eclipse.help.webapp/advanced/highlight.css |    4 +
 .../org.eclipse.help.webapp/advanced/highlight.js  |   45 +-
 .../org.eclipse.help.webapp/advanced/index.jsp     |    2 +-
 .../org.eclipse.help.webapp/advanced/indexView.jsp |    5 +-
 .../org.eclipse.help.webapp/advanced/nav.jsp       |    4 +-
 .../advanced/printConfirm.jsp                      |    4 +-
 .../advanced/printError.jsp                        |    4 +-
 .../advanced/quickSearch.jsp                       |    4 +-
 .../advanced/searchScoped.jsp                      |    2 +-
 .../advanced/searchSimple.jsp                      |    4 +-
 .../advanced/searchView.jsp                        |    4 +-
 .../org.eclipse.help.webapp/advanced/tabs.jsp      |    4 +-
 .../org.eclipse.help.webapp/advanced/tocView.jsp   |    2 +-
 .../org.eclipse.help.webapp/advanced/toolbar.jsp   |    4 +-
 .../org.eclipse.help.webapp/advanced/utils.js      |   10 +-
 .../org.eclipse.help.webapp/advanced/view.jsp      |    4 +-
 .../org.eclipse.help.webapp/advanced/views.jsp     |    2 +-
 .../advanced/workingSet.jsp                        |    2 +-
 .../advanced/workingSetManager.jsp                 |    2 +-
 .../plugins/org.eclipse.help.webapp/basic/err.jsp  |    4 +-
 .../plugins/org.eclipse.help.webapp/basic/help.jsp |    4 +-
 .../org.eclipse.help.webapp/basic/index.jsp        |    4 +-
 .../org.eclipse.help.webapp/basic/indexView.jsp    |    4 +-
 .../org.eclipse.help.webapp/basic/searchView.jsp   |    4 +-
 .../plugins/org.eclipse.help.webapp/basic/tabs.jsp |    2 +-
 .../org.eclipse.help.webapp/basic/tocView.jsp      |    4 +-
 .../org.eclipse.help.webapp/basic/toolbar.jsp      |    2 +-
 .../plugins/org.eclipse.help.webapp/basic/view.jsp |    4 +-
 eclipse/plugins/org.eclipse.help.webapp/index.jsp  |    4 +-
 .../internal/webapp/WebappResources.properties     |    8 +-
 .../help/internal/webapp/data/CookiesData.java     |    2 +-
 .../help/internal/webapp/data/RequestScope.java    |    7 +-
 .../help/internal/webapp/servlet/CookieUtil.java   |   70 +-
 .../internal/webapp/servlet/EclipseConnector.java  |   20 +-
 .../servlet/InfocenterWorkingSetManager.java       |    5 +-
 .../WEB-INF/{eclipse => }/configuration/config.ini |    0
 .../help/WEB-INF/{eclipse => }/launch.ini          |    0
 eclipse/plugins/org.eclipse.help/plugin.properties |    4 +-
 eclipse/plugins/org.eclipse.help/plugin.xml        |    5 +-
 .../schema/criteriaDefinition.exsd                 |   17 +-
 .../org.eclipse.help/schema/criteriaProvider.exsd  |   12 +-
 .../criteria/CriterionValueDefinition.java         |    3 +-
 .../org/eclipse/help/internal/util/URLCoder.java   |    8 +-
 .../org.eclipse.jdt.apt.core/build_notes.html      |    8 +
 .../org.eclipse.jdt.apt.core/design-notes.html     |   79 +-
 .../plugins/org.eclipse.jdt.apt.core/plugin.xml    |   19 +
 .../scripts/exportplugin.xml                       |   11 +
 .../org.eclipse.jdt.apt.pluggable.core/plugin.xml  |   11 +
 eclipse/plugins/org.eclipse.jdt.apt.ui/plugin.xml  |   11 +
 .../scripts/exportplugin.xml                       |   11 +
 .../META-INF/MANIFEST.MF                           |    3 +-
 .../customBuildCallbacks.xml                       |   12 +-
 .../compiler/apt/model/AnnotationMirrorImpl.java   |   17 +-
 .../compiler/apt/util/EclipseFileManager.java      |   50 +-
 .../internal/compiler/tool/EclipseCompiler.java    |    2 +-
 .../compiler/tool/EclipseCompilerImpl.java         |    2 +-
 .../internal/compiler/tool/EclipseFileManager.java |    2 +-
 .../jdt/internal/compiler/tool/Options.java        |    1 +
 .../.settings/org.eclipse.pde.api.tools.prefs      |    8 +-
 .../.settings/org.eclipse.pde.prefs                |   21 +-
 .../org/eclipse/jdt/core/JDTCompilerAdapter.java   |  183 +-
 .../eclipse/jdt/internal/compiler/batch/Main.java  |  105 +-
 .../internal/compiler/batch/messages.properties    |   19 +-
 .../plugins/org.eclipse.jdt.core/build.properties  |    3 +-
 .../org.eclipse.jdt.core/buildnotes_jdt-core.html  |  419 ++++-
 .../jdt/internal/codeassist/CompletionEngine.java  |    2 +-
 .../codeassist/complete/CompletionParser.java      |   91 +-
 .../codeassist/complete/CompletionScanner.java     |    2 +-
 .../jdt/internal/codeassist/impl/AssistParser.java |   14 +-
 .../jdt/internal/compiler/CompilationResult.java   |    2 +-
 .../eclipse/jdt/internal/compiler/ast/ASTNode.java |   48 +-
 .../compiler/ast/AbstractVariableDeclaration.java  |    7 +-
 .../compiler/ast/CompilationUnitDeclaration.java   |   15 +-
 .../internal/compiler/ast/SingleTypeReference.java |    2 +-
 .../jdt/internal/compiler/ast/TypeDeclaration.java |    4 +-
 .../internal/compiler/codegen/StackMapFrame.java   |    2 +-
 .../jdt/internal/compiler/env/IBinaryMethod.java   |    4 +-
 .../jdt/internal/compiler/impl/IrritantSet.java    |   14 +
 .../jdt/internal/compiler/lookup/ClassScope.java   |    2 +-
 .../internal/compiler/lookup/MethodBinding.java    |    5 +-
 .../jdt/internal/compiler/lookup/MethodScope.java  |    2 +-
 .../internal/compiler/lookup/MethodVerifier.java   |    2 +-
 .../jdt/internal/compiler/lookup/Scope.java        |   10 +-
 .../internal/compiler/parser/RecoveredField.java   |   22 +-
 .../internal/compiler/util/HashtableOfObject.java  |   33 +-
 .../eclipse/jdt/internal/compiler/util/Util.java   |    4 +-
 eclipse/plugins/org.eclipse.jdt.core/component.xml |    3 +-
 .../dom/org/eclipse/jdt/core/dom/ASTParser.java    |   26 +-
 .../dom/org/eclipse/jdt/core/dom/IBinding.java     |    2 +-
 .../jdt/internal/eval/CodeSnippetScope.java        |    2 +-
 .../jdt/internal/eval/EvaluationContext.java       |    4 +-
 .../jdt/internal/eval/EvaluationResult.java        |    8 +-
 .../eclipse/jdt/internal/eval/GlobalVariable.java  |    6 +-
 .../eclipse/jdt/core/formatter/CodeFormatter.java  |    2 +-
 .../formatter/DefaultCodeFormatterConstants.java   |  102 +-
 .../internal/formatter/CodeFormatterVisitor.java   |  189 ++-
 .../formatter/DefaultCodeFormatterOptions.java     |   26 +-
 .../org/eclipse/jdt/internal/formatter/Scribe.java |  731 ++++---
 .../jdt/internal/formatter/align/Alignment.java    |  157 ++-
 .../org/eclipse/jdt/core/BufferChangedEvent.java   |    2 +-
 .../org/eclipse/jdt/core/CompletionProposal.java   |    6 +-
 .../org/eclipse/jdt/core/IClasspathAttribute.java  |    2 +-
 .../org/eclipse/jdt/core/IClasspathContainer.java  |   12 +-
 .../model/org/eclipse/jdt/core/IField.java         |   11 +-
 .../model/org/eclipse/jdt/core/IMember.java        |    2 +-
 .../model/org/eclipse/jdt/core/IMethod.java        |   11 +-
 .../model/org/eclipse/jdt/core/IType.java          |   11 +-
 .../org/eclipse/jdt/core/JavaConventions.java      |    2 +-
 .../model/org/eclipse/jdt/core/Signature.java      |    2 +-
 .../model/org/eclipse/jdt/core/ToolFactory.java    |   95 +-
 .../org/eclipse/jdt/internal/core/Buffer.java      |    2 +-
 .../internal/core/ChangeClasspathOperation.java    |    6 +-
 .../core/CompilationUnitProblemFinder.java         |   97 +-
 .../eclipse/jdt/internal/core/DeltaProcessor.java  |   10 +-
 .../jdt/internal/core/ExternalFoldersManager.java  |  142 +-
 .../org/eclipse/jdt/internal/core/JavaModel.java   |    8 +-
 .../jdt/internal/core/JavaModelManager.java        |   13 +-
 .../jdt/internal/core/JavaModelOperation.java      |    4 +-
 .../org/eclipse/jdt/internal/core/JavaProject.java |   15 +-
 .../org/eclipse/jdt/internal/core/NameLookup.java  |    2 +-
 .../jdt/internal/core/SetClasspathOperation.java   |    2 +-
 .../jdt/internal/core/SetContainerOperation.java   |    2 +-
 .../jdt/internal/core/SetVariablesOperation.java   |    4 +-
 .../core/builder/AdditionalTypeCollection.java     |    4 +-
 .../eclipse/jdt/internal/core/builder/State.java   |    4 +-
 .../internal/core/hierarchy/HierarchyResolver.java |   15 +-
 .../jdt/internal/core/util/BindingKeyResolver.java |   11 +-
 .../eclipse/jdt/internal/core/util/DOMFinder.java  |    2 +-
 .../jdt/internal/core/util/HandleFactory.java      |    6 +-
 .../jdt/internal/core/util/messages.properties     |    4 +-
 .../notes/R31_buildnotes_jdt-core.html             |    4 +-
 .../notes/R32_buildnotes_jdt-core.html             |    6 +-
 .../notes/R33_buildnotes_jdt-core.html             |    6 +-
 .../notes/R35_buildnotes_jdt-core.html             |    4 +-
 eclipse/plugins/org.eclipse.jdt.core/plugin.xml    |    5 +-
 .../org.eclipse.jdt.core/schema/codeFormatter.exsd |  201 +-
 .../org.eclipse.jdt.core/schema/compiler.dtd       |    4 +-
 .../org.eclipse.jdt.core/scripts/export-ecj.xml    |    3 +-
 .../org.eclipse.jdt.core/scripts/export-ejavac.xml |    3 +-
 .../scripts/export-ejavac2.xml                     |    3 +-
 .../scripts/export-ejavac2_linux.xml               |    3 +-
 .../scripts/export-ejavac_linux.xml                |    3 +-
 .../org.eclipse.jdt.core/scripts/exportplugin.xml  |    3 +-
 .../org.eclipse.jdt.core/scripts/ikvm_script.xml   |    3 +-
 .../scripts/oldexportplugin.xml                    |    3 +-
 .../org/eclipse/jdt/core/search/SearchEngine.java  |   10 +-
 .../org/eclipse/jdt/core/search/SearchPattern.java |   93 +-
 .../org/eclipse/jdt/core/search/TypeNameMatch.java |    4 +-
 .../eclipse/jdt/core/search/TypeNameRequestor.java |    8 +-
 .../jdt/internal/core/index/CategoryTable.java     |   76 -
 .../eclipse/jdt/internal/core/index/DiskIndex.java |   52 +-
 .../jdt/internal/core/index/EntryResult.java       |   19 +-
 .../internal/core/search/BasicSearchEngine.java    |   13 +-
 .../jdt/internal/core/search/HierarchyScope.java   |   33 +-
 .../jdt/internal/core/search/IndexSelector.java    |    4 +-
 .../core/search/indexing/IndexManager.java         |    5 +-
 .../core/search/matching/IntersectingPattern.java  |    4 +-
 .../core/search/matching/MatchLocator.java         |   20 +-
 .../core/search/matching/MatchLocatorParser.java   |    2 +-
 .../search/matching/PackageReferencePattern.java   |    4 +-
 .../core/search/matching/PatternLocator.java       |   12 +-
 .../core/search/matching/TypeParameterLocator.java |    4 +-
 .../breakpoints/JavaBreakpointConditionEditor.java |    7 +-
 .../JavaAppletLaunchShortcut.java                  |    2 +-
 .../BreakpointRenameFieldParticipant.java          |   34 +-
 .../debug/ui/actions/ProjectSelectionDialog.java   |    3 +-
 .../debug/ui/actions/ToggleBreakpointAdapter.java  |   96 +-
 .../JavaBreakpointTypeAdapterFactory.java          |    4 +-
 .../ui/propertypages/PropertyPageMessages.java     |    2 +-
 .../ui/snippeteditor/NewSnippetFileWizardPage.java |    4 +-
 .../ui/snippeteditor/SelectImportsDialog.java      |   38 +-
 .../ui/snippeteditor/SnippetMessages.properties    |    2 +-
 .../jdt/internal/debug/core/EventDispatcher.java   |    4 +-
 .../breakpoints/BreakpointListenerManager.java     |    4 +-
 .../breakpoints/JDIDebugBreakpointMessages.java    |    4 +-
 .../JDIDebugBreakpointMessages.properties          |    3 +-
 .../core/breakpoints/JavaMethodBreakpoint.java     |   12 +-
 .../core/model/JDIDebugModelMessages.properties    |    2 +-
 .../internal/debug/core/model/JDIObjectValue.java  |    2 +-
 eclipse/plugins/org.eclipse.jdt.debug/plugin.xml   |    5 +-
 .../org.eclipse.jdt.doc.isv/about.properties       |    4 +-
 .../plugins/org.eclipse.jdt.doc.isv/buildDoc.xml   |   13 +
 .../guide/CopyrightTabPage.html                    |    1 +
 .../guide/jdt_api_codeformatter.htm                |    2 +-
 .../guide/jdt_api_compile.htm                      |   53 +-
 .../guide/jdt_api_contributing_a_cleanup.htm       |    2 +-
 .../guide/jdt_api_manip.htm                        |    2 +-
 .../guide/jdt_api_options.htm                      |  155 ++-
 .../guide/jdt_api_wizards.htm                      |    2 +-
 .../org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm |    2 +-
 .../plugins/org.eclipse.jdt.doc.isv/jdtOptions.txt |    4 +-
 .../org.eclipse.jdt.doc.isv/jdtaptOptions.txt      |    4 +-
 .../plugins/org.eclipse.jdt.doc.isv/notices.html   |    4 +-
 .../porting/3.2/recommended.html                   |    4 +-
 .../org.eclipse.jdt.doc.isv/porting/3.3/faq.html   |    2 +-
 .../porting/3.3/recommended.html                   |    2 +-
 .../porting/3.6/incompatibilities.html             |   49 +-
 .../reference/misc/api-usage-rules.html            |  343 +++
 .../reference/misc/overview-jdt.html               |    2 +-
 .../org.eclipse.jdt.doc.user/about.properties      |    4 +-
 .../concepts/concept-java-editor.htm               |    4 +-
 .../concepts/concept-java-perspective.htm          |    8 +-
 .../concepts/concept-java-views-decorators.htm     |    4 +-
 .../concepts/concept-java-views-filtering.htm      |    4 +-
 .../concepts/concept-java-views-presentation.htm   |    4 +-
 .../concepts/concept-java-views.htm                |   14 +-
 .../org.eclipse.jdt.doc.user/contexts_JDT.xml      |   19 +-
 .../view_package_explorer_open_type_hierarchy.png  |  Bin 7654 -> 12445 bytes
 .../images/view_typehierarchy_testcase.png         |  Bin 4444 -> 8412 bytes
 .../images/view_typehierarchy_testcase_focused.png |  Bin 5463 -> 11532 bytes
 .../images/view_typehierarchy_testcase_menu.png    |  Bin 6755 -> 14948 bytes
 .../view_typehierarchy_testcase_runtest_locked.png |  Bin 6516 -> 17677 bytes
 .../images/view_typehierarchy_testcase_small.png   |  Bin 4159 -> 8957 bytes
 .../images/view_typehierarchy_testcase_subtype.png |  Bin 4145 -> 9199 bytes
 .../view_typehierarchy_testcase_supertype.png      |  Bin 3775 -> 6813 bytes
 ...iew_typehierarchy_testcase_supertype_locked.png |  Bin 6369 -> 14914 bytes
 .../gettingStarted/qs-11.htm                       |    4 +-
 .../gettingStarted/qs-12.htm                       |    2 +-
 .../gettingStarted/qs-3.htm                        |    4 +-
 .../gettingStarted/qs-4.htm                        |    4 +-
 .../gettingStarted/qs-6.htm                        |   14 +-
 .../gettingStarted/qs-Navigate.htm                 |    8 +-
 .../ovr16/skip_breakpoint_ov.gif                   |  Bin 94 -> 94 bytes
 .../obj16/testfile_obj.gif                         |  Bin 370 -> 370 bytes
 .../org.eclipse.jdt.ui/obj16/correction_cast.png   |  Bin 326 -> 329 bytes
 .../org.eclipse.jdt.ui/obj16/correction_move.png   |  Bin 339 -> 500 bytes
 .../obj16/correction_multi_fix.gif                 |  Bin 588 -> 588 bytes
 .../images/org.eclipse.jdt.ui/obj16/jar_obj.png    |  Bin 761 -> 569 bytes
 .../org.eclipse.jdt.ui/obj16/jar_src_obj.png       |  Bin 782 -> 667 bytes
 .../ovr16/error_co_buildpath.png                   |  Bin 0 -> 303 bytes
 .../org.eclipse.jdt.ui/ovr16/transient_co.png      |  Bin 0 -> 178 bytes
 .../plugins/org.eclipse.jdt.doc.user/notices.html  |    4 +-
 .../breakpoints/images/ref-breakpoint_caught.PNG   |  Bin 25140 -> 17310 bytes
 .../images/ref-breakpoint_condition.PNG            |  Bin 28557 -> 20847 bytes
 .../breakpoints/images/ref-breakpoint_enabled.PNG  |  Bin 28595 -> 20729 bytes
 .../breakpoints/images/ref-breakpoint_entry.PNG    |  Bin 29913 -> 20531 bytes
 .../breakpoints/images/ref-breakpoint_exit.PNG     |  Bin 29923 -> 20477 bytes
 .../breakpoints/images/ref-breakpoint_hitcount.PNG |  Bin 28495 -> 20719 bytes
 .../images/ref-breakpoint_suspendpolicy.PNG        |  Bin 28472 -> 20771 bytes
 .../images/ref-breakpoint_suspendsubclass.PNG      |  Bin 24512 -> 17342 bytes
 .../breakpoints/images/ref-breakpoint_uncaught.PNG |  Bin 24488 -> 17356 bytes
 .../images/ref-watchpoint_access_option.PNG        |  Bin 21882 -> 15260 bytes
 .../breakpoints/images/ref-watchpoint_mod.PNG      |  Bin 21821 -> 15269 bytes
 .../reference/breakpoints/ref-access_option.htm    |    6 +-
 .../reference/breakpoints/ref-caught_option.htm    |    6 +-
 .../reference/breakpoints/ref-condition_option.htm |    6 +-
 .../reference/breakpoints/ref-enabled_option.htm   |    4 +-
 .../reference/breakpoints/ref-entry_option.htm     |    6 +-
 .../reference/breakpoints/ref-exit_option.htm      |    6 +-
 .../reference/breakpoints/ref-hitcount_option.htm  |    4 +-
 .../breakpoints/ref-modification_option.htm        |    6 +-
 .../breakpoints/ref-suspendpolicy_option.htm       |   10 +-
 .../breakpoints/ref-suspendsubclass_option.htm     |    6 +-
 .../reference/breakpoints/ref-uncaught_option.htm  |    6 +-
 .../formatter-condense-multi-lines-comments.png    |  Bin 0 -> 1134 bytes
 .../images/formatter-disabling-enabling-tags.png   |  Bin 0 -> 7427 bytes
 .../images/formatter-join-lines-after.png          |  Bin 2925 -> 2925 bytes
 .../images/formatter-join-lines-before.png         |  Bin 2785 -> 2785 bytes
 ...formatter-prefer-wrapping-outer-expressions.png |  Bin 0 -> 1731 bytes
 .../reference/menus/run/ref-dll_debug.htm          |    2 +-
 .../reference/menus/run/ref-rll_run.htm            |    4 +-
 .../java/codestyle/ref-preferences-cleanup.htm     |   10 +-
 .../java/codestyle/ref-preferences-formatter.htm   |   10 +-
 .../java/compiler/ref-preferences-building.htm     |    2 +-
 .../compiler/ref-preferences-errors-warnings.htm   |   80 +-
 .../reference/preferences/java/debug/ref-debug.htm |    2 +-
 .../java/debug/ref-detail_formatters.htm           |   16 +-
 .../reference/preferences/ref-preferences-java.htm |    6 +-
 .../preferences/run-debug/ref-console.htm          |   10 +-
 .../preferences/run-debug/ref-perspectives.htm     |    2 +-
 .../preferences/run-debug/ref-run_debug.htm        |   18 +-
 .../run-debug/ref-string_substitution.htm          |    2 +-
 .../preferences/run-debug/ref-view_management.htm  |    2 +-
 .../reference/ref-actions-toolbar.htm              |    6 +-
 .../reference/ref-apt-factoryPath.htm              |   12 +-
 .../reference/ref-apt-factoryPathOptions.htm       |    4 +-
 .../reference/ref-dialog-java-element-filters.htm  |    4 +-
 .../reference/ref-dialog-java-search.htm           |  155 +-
 .../reference/ref-icons.htm                        |   84 +-
 .../reference/ref-java-editor-formatter.htm        |  116 +
 .../reference/ref-java-editor-quickassist.htm      |    4 +-
 .../reference/ref-java-editor-quickfix.htm         |    4 +-
 .../reference/ref-jdt-faq.htm                      |    2 +-
 .../reference/ref-menu-navigate.htm                |   70 +-
 .../reference/ref-menu-refactor.htm                |   13 +-
 .../reference/ref-properties-build-path.htm        |    4 +-
 .../reference/ref-tostring-listcontent.htm         |    4 +-
 .../reference/ref-tostring-styles.htm              |    2 +-
 .../reference/ref-wizard-class.htm                 |    2 +-
 .../reference/ref-wizard-enum.htm                  |    2 +-
 .../reference/ref-wizard-java-project.htm          |    2 +-
 .../images/ref-views_breakpoint_details.PNG        |  Bin 0 -> 12490 bytes
 .../views/breakpoints/ref-breakpoints_view.htm     |   79 +-
 .../reference/views/expressions/ref-addwatch.htm   |    2 +-
 .../views/expressions/ref-expressions_view.htm     |    4 +-
 .../reference/views/ref-call-hierarchy.htm         |   23 +-
 .../reference/views/ref-java-editor.htm            |    4 +-
 .../reference/views/ref-type-hierarchy.htm         |    8 +-
 .../reference/views/ref-viewsandeditors.htm        |    8 +-
 .../reference/views/shared/ref-changevarvalue.htm  |    2 +-
 .../reference/views/shared/ref-forcereturn.htm     |    2 +-
 .../views/variables/ref-variables_view.htm         |    4 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-202.htm   |    2 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-33.htm    |    4 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-62.htm    |    4 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-63a.htm   |    2 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-74.htm    |    4 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-75.htm    |    4 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-76.htm    |    2 +-
 .../org.eclipse.jdt.doc.user/tasks/tasks-77.htm    |    4 +-
 .../tips/images/build-path-error-decorator.png     |  Bin 0 -> 6940 bytes
 .../tips/images/hierarchy-lockview.png             |  Bin 7354 -> 18479 bytes
 .../tips/images/nls-problem-search.png             |  Bin 5638 -> 5610 bytes
 .../org.eclipse.jdt.debug.ui/all-instances.png     |  Bin 0 -> 8629 bytes
 .../breakpoint_condition.png                       |  Bin 6050 -> 4048 bytes
 .../class-load-breakpoint.png                      |  Bin 0 -> 17163 bytes
 .../debug-by-writing-to-console.png                |  Bin 0 -> 5934 bytes
 .../org.eclipse.jdt.debug.ui/method-breakpoint.png |  Bin 0 -> 10209 bytes
 .../org.eclipse.jdt.debug.ui/select-columns.png    |  Bin 0 -> 11479 bytes
 .../org.eclipse.jdt.debug.ui/show-references.png   |  Bin 0 -> 19846 bytes
 .../variable-view-columns.png                      |  Bin 0 -> 11991 bytes
 .../watchpoint_properties.png                      |  Bin 6581 -> 17940 bytes
 .../tips/images/package-abbreviations-off.png      |  Bin 0 -> 6757 bytes
 .../tips/images/package-abbreviations-on.png       |  Bin 0 -> 6601 bytes
 .../tips/images/sort-by-def.png                    |  Bin 5539 -> 11050 bytes
 .../org.eclipse.jdt.doc.user/tips/jdt_tips.html    |  168 ++-
 .../org.eclipse.jdt.doc.user/topics_Reference.xml  |    1 +
 .../whatsNew/images/annotations-in-javadoc.png     |  Bin 0 -> 10352 bytes
 .../background-computation-of-type-hierarchy.png   |  Bin 0 -> 20643 bytes
 .../whatsNew/images/bp-details.png                 |  Bin 0 -> 25393 bytes
 .../whatsNew/images/browser-preferences.png        |  Bin 0 -> 11332 bytes
 .../whatsNew/images/build-path-dot-dot-path.png    |  Bin 11747 -> 0 bytes
 .../images/build-path-duplicate-entries.png        |  Bin 8413 -> 0 bytes
 .../whatsNew/images/build-path-error-decorator.png |  Bin 0 -> 6940 bytes
 .../whatsNew/images/build-path-invalid-dups.png    |  Bin 7929 -> 0 bytes
 .../whatsNew/images/build-path-problems.png        |  Bin 0 -> 9783 bytes
 .../whatsNew/images/class-path-header.png          |  Bin 20679 -> 0 bytes
 .../images/comparing-identical-values-example.png  |  Bin 4529 -> 0 bytes
 .../images/compiler-deadcode-diagnosis.png         |  Bin 7013 -> 0 bytes
 .../images/compiler-hashcode-diagnosis.png         |  Bin 2966 -> 0 bytes
 .../whatsNew/images/compliance-follows-ee.png      |  Bin 8991 -> 0 bytes
 .../whatsNew/images/constructor-completion.png     |  Bin 8423 -> 0 bytes
 .../whatsNew/images/delete-working-set.png         |  Bin 15993 -> 0 bytes
 .../whatsNew/images/dynamic-structure-compare.png  |  Bin 13370 -> 0 bytes
 .../whatsNew/images/edit-test-method.png           |  Bin 0 -> 8199 bytes
 .../whatsNew/images/expand-with-constructors.png   |  Bin 19659 -> 0 bytes
 .../whatsNew/images/export-all-profiles.png        |  Bin 0 -> 4900 bytes
 .../whatsNew/images/extract-method-continue.png    |  Bin 0 -> 1875 bytes
 .../extract-method-multiple-return-values.png      |  Bin 0 -> 8749 bytes
 .../images/find-externalized-strings-constants.png |  Bin 0 -> 7229 bytes
 ...matter-align-annotation-arguments-formatted.png |  Bin 0 -> 1137 bytes
 ...atter-align-annotation-arguments-preference.png |  Bin 0 -> 2502 bytes
 ...ormatter-align-method-declaration-formatted.png |  Bin 0 -> 1741 bytes
 ...rmatter-align-method-declaration-preference.png |  Bin 0 -> 2105 bytes
 ...ter-condense-multi-lines-comments-formatted.png |  Bin 0 -> 1134 bytes
 ...er-condense-multi-lines-comments-preference.png |  Bin 0 -> 2478 bytes
 ...formatter-disabling-enabling-tags-formatted.png |  Bin 0 -> 7427 bytes
 ...ormatter-disabling-enabling-tags-preference.png |  Bin 0 -> 12725 bytes
 .../formatter-new-line-after-label-formatted.png   |  Bin 0 -> 903 bytes
 .../formatter-new-line-after-label-preference.png  |  Bin 0 -> 2577 bytes
 ...prefer-wrapping-outer-expressions-formatted.png |  Bin 0 -> 1731 bytes
 ...refer-wrapping-outer-expressions-preference.png |  Bin 0 -> 3691 bytes
 ...matter-skip-first-column-comments-formatted.png |  Bin 0 -> 1376 bytes
 ...atter-skip-first-column-comments-preference.png |  Bin 0 -> 3654 bytes
 .../whatsNew/images/generate-tostring-dialog.png   |  Bin 32126 -> 0 bytes
 .../whatsNew/images/hashcode-and-equals-wizard.png |  Bin 6683 -> 0 bytes
 .../whatsNew/images/instance-counts.png            |  Bin 0 -> 10770 bytes
 .../whatsNew/images/jar-export.png                 |  Bin 8618 -> 0 bytes
 .../whatsNew/images/java-compare-assist.png        |  Bin 10857 -> 0 bytes
 .../whatsNew/images/java-compare-hover.png         |  Bin 10706 -> 0 bytes
 .../whatsNew/images/java-compare-hyperlinking.png  |  Bin 12009 -> 0 bytes
 .../whatsNew/images/java-compare-outline.png       |  Bin 8094 -> 0 bytes
 .../whatsNew/images/javadoc-header-links.png       |  Bin 5332 -> 0 bytes
 .../whatsNew/images/javadoc-hover.png              |  Bin 9345 -> 0 bytes
 .../whatsNew/images/junit-import-url.png           |  Bin 0 -> 11123 bytes
 .../whatsNew/images/junit-view-import.png          |  Bin 8942 -> 0 bytes
 .../whatsNew/images/missing-synchronized.png       |  Bin 5843 -> 0 bytes
 .../images/move-type-to-new-file-refactoring.png   |  Bin 0 -> 10598 bytes
 .../whatsNew/images/multifix-problem-hover.png     |  Bin 0 -> 4522 bytes
 .../images/open-implementation-command.png         |  Bin 0 -> 2855 bytes
 .../whatsNew/images/open-implementation.png        |  Bin 4709 -> 0 bytes
 .../whatsNew/images/open-in-junit-view.png         |  Bin 4037 -> 0 bytes
 .../whatsNew/images/open-in-properties-file.png    |  Bin 7895 -> 0 bytes
 .../whatsNew/images/open-type.png                  |  Bin 14199 -> 0 bytes
 .../whatsNew/images/override.png                   |  Bin 0 -> 6236 bytes
 .../whatsNew/images/package-abbreviations-off.png  |  Bin 0 -> 6743 bytes
 .../whatsNew/images/package-abbreviations-on.png   |  Bin 0 -> 6613 bytes
 .../images/preference-transfer-appearance.png      |  Bin 0 -> 9942 bytes
 .../whatsNew/images/preference-transfer-code.png   |  Bin 0 -> 10022 bytes
 .../images/preference-transfer-compiler.png        |  Bin 0 -> 10118 bytes
 .../whatsNew/images/refresh-element-action.png     |  Bin 0 -> 5626 bytes
 .../whatsNew/images/remove-from-view-action.png    |  Bin 0 -> 11248 bytes
 .../whatsNew/images/rename-in-workspace.png        |  Bin 2356 -> 0 bytes
 .../whatsNew/images/runnable-jar-in-jar-export.png |  Bin 21332 -> 0 bytes
 .../whatsNew/images/sort-working-sets.png          |  Bin 6685 -> 0 bytes
 .../source-attachments-in-referenced-JARs.png      |  Bin 0 -> 17017 bytes
 .../whatsNew/images/suppress-optional-errors.png   |  Bin 0 -> 6549 bytes
 .../whatsNew/images/switch-case-fall-through.png   |  Bin 4382 -> 0 bytes
 .../whatsNew/images/unused-object-allocation.png   |  Bin 0 -> 6302 bytes
 .../whatsNew/images/value-in-javadoc.png           |  Bin 0 -> 7031 bytes
 .../whatsNew/jdt_whatsnew.html                     |  714 ++++---
 .../org.eclipse.jdt.junit.core/build.properties    |    2 +-
 .../jdt/internal/junit/BasicElementLabels.java     |    2 +-
 .../internal/junit/buildpath/BuildPathSupport.java |    2 +-
 .../JUnitLaunchConfigurationConstants.java         |    2 +-
 .../jdt/internal/junit/launcher/TestKind.java      |    2 +-
 .../jdt/internal/junit/model/ModelMessages.java    |    2 +-
 .../junit/model/RemoteTestRunnerClient.java        |    2 +-
 .../junit/model/TestRunListenerAdapter.java        |    2 +-
 .../org.eclipse.jdt.junit.runtime/build.properties |    2 +-
 .../plugin.properties                              |    4 +-
 .../org.eclipse.jdt.junit/plugin.properties        |    3 +-
 eclipse/plugins/org.eclipse.jdt.junit/plugin.xml   |    5 +
 ...ClasspathVariableMarkerResolutionGenerator.java |    2 +-
 .../junit/buildpath/JUnitContainerWizardPage.java  |    2 +-
 .../internal/junit/launcher/AssertionVMArg.java    |    2 +-
 .../internal/junit/ui/EnableStackFilterAction.java |    2 +-
 .../jdt/internal/junit/ui/FailureTrace.java        |    2 +-
 .../internal/junit/ui/JUnitAddLibraryProposal.java |    2 +-
 .../junit/ui/JUnitClasspathFixProcessor.java       |    2 +-
 .../jdt/internal/junit/ui/JUnitMessages.properties |    2 +-
 .../junit/ui/TestMethodSelectionDialog.java        |    2 +-
 .../junit/wizards/NewTestCaseCreationWizard.java   |    2 +-
 .../jdt/internal/junit/wizards/WizardMessages.java |    3 +-
 .../junit/wizards/WizardMessages.properties        |    5 +-
 .../jdt/junit/wizards/NewTestSuiteWizardPage.java  |   10 +-
 .../plugin.properties                              |    4 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../launching/JREContainerInitializer.java         |   41 +-
 .../jdt/internal/launching/LaunchingPlugin.java    |   25 +-
 .../environments/ExecutionEnvironmentAnalyzer.java |    2 +-
 .../org/eclipse/jdt/launching/JavaRuntime.java     |    5 +-
 .../org.eclipse.jdt.launching/plugin.properties    |   14 +-
 .../plugins/org.eclipse.jdt.launching/plugin.xml   |    5 +-
 .../org.eclipse.jdt.ui/JavadocHoverStyleSheet.css  |    4 +-
 .../org.eclipse.jdt.ui/JavadocViewStyleSheet.css   |    4 +-
 .../AddUnimplementedConstructorsOperation.java     |    2 +-
 .../CodeGenerationMessages.properties              |    2 +-
 .../corext/codemanipulation/StubUtility2.java      |    2 +-
 .../jdt/internal/corext/dom/ScopeAnalyzer.java     |    2 +-
 .../jdt/internal/corext/fix/FixMessages.properties |    4 +-
 .../template/java/JavaTemplateMessages.properties  |    5 +-
 .../jdt/internal/corext/util/JavaModelUtil.java    |   10 +-
 .../jdt/internal/corext/refactoring/Checks.java    |   22 +-
 .../corext/refactoring/TypeContextChecker.java     |    2 +-
 .../code/ConvertAnonymousToNestedRefactoring.java  |    2 +-
 .../code/ExtractConstantRefactoring.java           |   19 +-
 .../refactoring/code/ExtractTempRefactoring.java   |   11 +-
 .../code/IntroduceParameterRefactoring.java        |    3 +-
 .../code/ReplaceInvocationsRefactoring.java        |    2 +-
 .../corext/refactoring/nls/NLSHintHelper.java      |   21 +-
 .../corext/refactoring/refactoring.properties      |    4 +-
 .../refactoring/rename/RefactoringAnalyzeUtil.java |    2 +-
 .../refactoring/reorg/JavaDeleteProcessor.java     |    4 +-
 .../corext/refactoring/sef/AccessAnalyzer.java     |    2 +-
 .../refactoring/structure/ASTNodeSearchUtil.java   |    2 +-
 .../structure/ChangeTypeRefactoring.java           |    2 +-
 .../structure/ExtractClassRefactoring.java         |    2 +-
 .../IntroduceParameterObjectProcessor.java         |    2 +-
 .../constraints/SuperTypeRefactoringProcessor.java |    2 +-
 .../typeconstraints/CompilationUnitRange.java      |    2 +-
 .../typeconstraints/ConstraintCollector.java       |   25 +-
 .../util/SelectionAwareSourceRangeComputer.java    |    5 +-
 .../dictionaries/en_GB.dictionary                  |    2 +
 .../dictionaries/en_US.dictionary                  |    2 +
 .../icons/full/dtool16/newjworkingSet_wiz.gif      |  Bin 341 -> 0 bytes
 .../icons/full/etool16/newjworkingSet_wiz.gif      |  Bin 589 -> 363 bytes
 ...error_co_project.gif => error_co_buildpath.gif} |  Bin 178 -> 178 bytes
 .../plugins/org.eclipse.jdt.ui/plugin.properties   |    2 +
 eclipse/plugins/org.eclipse.jdt.ui/plugin.xml      |   19 +-
 .../templates/default-codetemplates.xml            |    2 +-
 .../nls/search/NLSSearchResultRequestor.java       |   10 +-
 .../internal/ui/refactoring/reorg/PasteAction.java |    5 +-
 .../jdt/internal/ui/EditorInputAdapterFactory.java |    4 +-
 .../eclipse/jdt/internal/ui/JavaPluginImages.java  |    2 +-
 .../internal/ui/compare/CompareMessages.properties |    6 +-
 .../internal/ui/compare/JavaHistoryActionImpl.java |    2 +-
 .../internal/ui/filters/InnerClassFilesFilter.java |    3 +-
 .../jdt/internal/ui/infoviews/JavadocView.java     |   34 +-
 .../FatJarPackagerMessages.properties              |    4 +-
 .../jdt/internal/ui/javaeditor/ASTProvider.java    |    2 +-
 .../ui/javaeditor/NLSKeyHyperlinkDetector.java     |    2 +-
 .../ui/navigator/JavaDropAdapterAssistant.java     |   11 +-
 .../ui/navigator/JavaNavigatorContentProvider.java |    9 +-
 .../ui/packageview/FileTransferDropAdapter.java    |    8 +-
 .../PackageExplorerContentProvider.java            |    7 +-
 .../PackageExplorerProblemsDecorator.java          |    8 +-
 .../internal/ui/preferences/BulletListBlock.java   |    6 +-
 .../internal/ui/preferences/CodeTemplateBlock.java |    6 +-
 .../preferences/ComplianceConfigurationBlock.java  |   24 +-
 .../ui/preferences/JavaBasePreferencePage.java     |    2 +-
 .../JavaEditorColoringConfigurationBlock.java      |    8 +-
 .../ui/preferences/PreferencesMessages.properties  |    4 +-
 .../ui/preferences/TodoTaskPreferencePage.java     |    2 +-
 .../ui/preferences/cleanup/CleanUpMessages.java    |    2 +-
 .../preferences/cleanup/CleanUpMessages.properties |    4 +-
 .../preferences/formatter/FormatterMessages.java   |    2 +
 .../formatter/FormatterMessages.properties         |    8 +-
 .../ui/preferences/formatter/JavaPreview.java      |    6 +-
 .../preferences/formatter/LineWrappingTabPage.java |    3 +-
 .../ui/preferences/formatter/OffOnTagsTabPage.java |   41 +-
 .../PropertiesFileSourceViewerConfiguration.java   |    4 +-
 .../ui/search/BreakContinueTargetFinder.java       |    2 +-
 .../ui/search/ExceptionOccurrencesFinder.java      |    2 +-
 .../ui/search/ImplementOccurrencesFinder.java      |    2 +-
 .../jdt/internal/ui/search/MethodExitsFinder.java  |    2 +-
 .../jdt/internal/ui/search/OccurrencesFinder.java  |    2 +-
 .../jdt/internal/ui/search/SearchMessages.java     |    2 +-
 .../ui/text/correction/CorrectionMessages.java     |    2 +-
 .../text/correction/CorrectionMessages.properties  |    4 +-
 .../correction/SuppressWarningsSubProcessor.java   |   75 +-
 .../proposals/ChangeCorrectionProposal.java        |   19 +-
 .../ConstructorFromSuperclassProposal.java         |    2 +-
 .../RemoveDeclarationCorrectionProposal.java       |    2 +-
 .../proposals/RenameNodeCorrectionProposal.java    |    2 +-
 .../text/java/AbstractJavaCompletionProposal.java  |    9 +-
 .../ui/text/java/OverrideCompletionProposal.java   |    2 +-
 .../internal/ui/text/java/hover/JavadocHover.java  |  375 +++-
 .../ui/text/java/hover/NLSStringHover.java         |   39 +-
 .../java/hover/SourceViewerInformationControl.java |   49 +-
 .../ui/text/javadoc/JavadocContentAccess2.java     |  103 +-
 .../ui/typehierarchy/TypeHierarchyLifeCycle.java   |   63 +-
 .../ui/typehierarchy/TypeHierarchyViewPart.java    |   28 +-
 .../ui/viewsupport/JavaElementLabelComposer.java   |    2 +-
 .../internal/ui/viewsupport/JavaElementLinks.java  |   60 +-
 .../ui/wizards/NewSourceFolderWizardPage.java      |    8 +
 .../jdt/internal/ui/wizards/NewWizardMessages.java |    7 +
 .../ui/wizards/NewWizardMessages.properties        |    7 +
 .../buildpaths/AddSourceFolderWizardPage.java      |    8 +-
 .../CreateMultipleSourceFoldersDialog.java         |   16 +-
 .../ui/wizards/buildpaths/VariableBlock.java       |    4 +-
 .../newsourcepage/AddFolderToBuildpathAction.java  |    7 +-
 .../eclipse/jdt/ui/JavaElementImageDescriptor.java |    8 +-
 .../jdt/ui/OverrideIndicatorLabelDecorator.java    |   15 +-
 .../org/eclipse/jdt/ui/ProblemsLabelDecorator.java |   22 +-
 .../AddUnimplementedConstructorsAction.java        |    2 +-
 .../ui/actions/FindImplementOccurrencesAction.java |    6 +-
 .../actions/FindMethodExitOccurrencesAction.java   |    6 +-
 .../ui/actions/FindOccurrencesInFileAction.java    |    6 +-
 .../jdt/ui/actions/InferTypeArgumentsAction.java   |    6 +-
 .../org/eclipse/jdt/ui/actions/InlineAction.java   |    2 +-
 .../eclipse/jdt/ui/actions/InlineTempAction.java   |    6 +-
 .../jdt/ui/actions/IntroduceFactoryAction.java     |    6 +-
 .../jdt/ui/actions/IntroduceIndirectionAction.java |    6 +-
 .../jdt/ui/actions/IntroduceParameterAction.java   |    6 +-
 .../jdt/ui/actions/ModifyParametersAction.java     |    6 +-
 .../jdt/ui/actions/OpenTypeHierarchyAction.java    |    2 +-
 .../org/eclipse/jdt/ui/actions/PullUpAction.java   |    6 +-
 .../org/eclipse/jdt/ui/actions/PushDownAction.java |    6 +-
 .../jdt/ui/actions/RefactorActionGroup.java        |    8 +-
 .../jdt/ui/actions/SelfEncapsulateFieldAction.java |    6 +-
 .../eclipse/jdt/ui/actions/UseSupertypeAction.java |    6 +-
 .../DefaultJavaFoldingStructureProvider.java       |   28 +-
 .../jdt/ui/wizards/JavadocExportWizardPage.java    |   10 +-
 .../jdt/ui/wizards/NewContainerWizardPage.java     |   13 +-
 .../ui/wizards/NewJavaProjectWizardPageOne.java    |    2 +-
 .../jdt/ui/wizards/NewPackageWizardPage.java       |    8 +-
 .../eclipse/jdt/ui/wizards/NewTypeWizardPage.java  |   22 +-
 eclipse/plugins/org.eclipse.jdt/about.properties   |    4 +-
 eclipse/plugins/org.eclipse.jdt/plugin.properties  |    4 +-
 .../databinding/dialog/DialogPageSupport.java      |    2 +-
 .../dialog/IValidationMessageProvider.java         |    2 +-
 .../MaxSeverityValidationStatusProvider.java       |    2 +-
 .../databinding/dialog/TitleAreaDialogSupport.java |    2 +-
 .../dialog/ValidationMessageProvider.java          |    2 +-
 .../fieldassist/ControlDecorationSupport.java      |    2 +-
 .../fieldassist/ControlDecorationUpdater.java      |    2 +-
 .../preference/PreferencePageSupport.java          |    2 +-
 .../viewers/ObservableMapCellLabelProvider.java    |    2 +-
 .../viewers/ObservableMapLabelProvider.java        |    2 +-
 .../viewers/ObservableValueEditingSupport.java     |    2 +-
 .../databinding/viewers/ViewerProperties.java      |    2 +-
 .../databinding/viewers/ViewersObservables.java    |    2 +-
 .../provisional/swt/CompositeUpdater.java          |    2 +-
 .../databinding/swt/CComboItemsProperty.java       |    2 +-
 .../databinding/swt/ComboItemsProperty.java        |    2 +-
 .../databinding/swt/ControlStringListProperty.java |    2 +-
 .../databinding/swt/ListItemsProperty.java         |    2 +-
 .../swt/SWTDelayedObservableValueDecorator.java    |    2 +-
 .../viewers/CheckableCheckedElementsProperty.java  |    2 +-
 ...CheckboxTableViewerCheckedElementsProperty.java |    2 +-
 .../CheckboxTreeViewerCheckedElementsProperty.java |    2 +-
 .../CheckboxViewerCheckedElementsProperty.java     |    2 +-
 .../viewers/SelectionChangedListener.java          |    2 +-
 ...SelectionProviderMultipleSelectionProperty.java |    2 +-
 .../SelectionProviderSingleSelectionProperty.java  |    2 +-
 .../viewers/StructuredViewerFiltersProperty.java   |    2 +-
 .../projection/SourceViewerInformationControl.java |   46 +-
 .../jface/internal/text/ResizableShellSupport.java |  307 ---
 .../jface/internal/text/SelectionProcessor.java    |    2 +-
 .../jface/internal/text/html/HTMLPrinter.java      |    2 +-
 .../jface/text/AbstractInformationControl.java     |   31 +-
 .../contentassist/CompletionProposalPopup.java     |   16 +-
 .../text/hyperlink/MultipleHyperlinkPresenter.java |    5 +-
 .../jface/text/source/AnnotationPainter.java       |    2 +-
 .../jface/text/source/AnnotationRulerColumn.java   |   63 +-
 .../jface/text/source/ChangeRulerColumn.java       |   60 +-
 .../text/source/DefaultCharacterPairMatcher.java   |   31 +-
 .../eclipse/jface/text/source/IOverviewRuler.java  |    2 +-
 .../jface/text/source/LineNumberRulerColumn.java   |   65 +-
 .../eclipse/jface/text/source/OverviewRuler.java   |   66 +-
 .../eclipse/jface/text/source/VerticalRuler.java   |   64 +-
 .../jface/action/StatusLineContributionItem.java   |    9 +-
 .../eclipse/jface/action/StatusLineManager.java    |    2 +-
 .../org/eclipse/jface/action/ToolBarManager.java   |    2 +-
 .../eclipse/jface/bindings/CachedBindingSet.java   |    2 +-
 .../eclipse/jface/bindings/keys/IKeyLookup.java    |    2 +-
 .../eclipse/jface/bindings/keys/SWTKeyLookup.java  |    2 +-
 .../formatting/AbstractKeyFormatter.properties     |    2 +-
 .../keys/formatting/NativeKeyFormatter.java        |    3 +-
 .../src/org/eclipse/jface/dialogs/ErrorDialog.java |    2 +-
 .../jface/dialogs/IconAndMessageDialog.java        |    2 +-
 .../src/org/eclipse/jface/dialogs/PopupDialog.java |   50 +-
 .../org/eclipse/jface/dialogs/TitleAreaDialog.java |   76 +-
 .../jface/fieldassist/ContentProposalAdapter.java  |    6 +-
 .../fieldassist/SimpleContentProposalProvider.java |    2 +-
 .../eclipse/jface/viewers/AbstractTreeViewer.java  |   37 +-
 .../jface/viewers/ILazyTreeContentProvider.java    |    2 +-
 .../viewers/ILazyTreePathContentProvider.java      |    2 +-
 .../jface/viewers/IStructuredContentProvider.java  |    9 +-
 .../jface/viewers/ITreeContentProvider.java        |   14 +-
 .../jface/viewers/ITreePathContentProvider.java    |   15 +-
 .../eclipse/jface/viewers/StructuredViewer.java    |   34 +-
 .../jface/viewers/StructuredViewerInternals.java   |   10 +-
 .../jface/viewers/StyledCellLabelProvider.java     |    2 +-
 .../jface/viewers/TableViewerFocusCellManager.java |   21 +-
 .../src/org/eclipse/jface/viewers/TreeViewer.java  |   12 +-
 .../jface/viewers/TreeViewerFocusCellManager.java  |   20 +-
 .../org/eclipse/jface/viewers/ViewerColumn.java    |    2 +-
 .../src/org/eclipse/jface/window/ToolTip.java      |   51 +-
 .../eclipse/jface/wizard/ProgressMonitorPart.java  |    6 +-
 .../org.eclipse.jsch.core/META-INF/MANIFEST.MF     |    2 +-
 .../ltk/core/refactoring/DocumentChange.java       |   57 +-
 .../src/org/eclipse/ltk/core/refactoring/Lock.java |   23 -
 .../core/refactoring/MultiStateTextFileChange.java |    3 +-
 .../ltk/core/refactoring/TextFileChange.java       |    3 +-
 .../ltk/core/refactoring/UndoTextFileChange.java   |    1 +
 .../ltk/internal/core/refactoring/Lock.java        |   23 +
 .../refactoring/RefactoringCoreMessages.properties |    4 +-
 .../core/refactoring/UndoDocumentChange.java       |   56 +-
 .../UndoableOperation2ChangeAdapter.java           |    2 +-
 .../ui/refactoring/RefactoringUIMessages.java      |    2 +-
 .../refactoring/RefactoringUIMessages.properties   |    4 +-
 .../.settings/org.eclipse.jdt.core.prefs           |   14 +-
 .../.settings/org.eclipse.jdt.launching.prefs      |    3 +
 .../plugins/org.eclipse.osgi/JavaSE-1.7.profile    |    8 +-
 .../internal/core/FrameworkCommandProvider.java    |    4 +-
 .../framework/internal/core/FrameworkConsole.java  |    3 +-
 .../framework/adaptor/ClassLoaderDelegateHook.java |    3 +-
 .../osgi/framework/console/CommandInterpreter.java |   19 +-
 .../osgi/framework/console/ConsoleSession.java     |   16 +-
 .../framework/internal/core/AbstractBundle.java    |    6 +-
 .../osgi/framework/internal/core/Framework.java    |    6 -
 .../internal/serviceregistry/ServiceRegistry.java  |    8 +-
 .../osgi/internal/baseadaptor/BaseStorage.java     |   12 +-
 .../eclipse/osgi/internal/module/ResolverImpl.java |   12 +-
 .../osgi/internal/module/VersionHashMap.java       |   16 +-
 .../service/security/KeyStoreTrustEngine.java      |   37 +-
 .../internal/signedcontent/SignedBundleHook.java   |   17 +-
 .../signedcontent/SignedContentMessages.java       |    4 +-
 .../signedcontent/SignedContentMessages.properties |    5 +-
 .../adaptor/EclipseAdaptorMessages.properties      |    2 +-
 .../internal/core/ExternalMessages.properties      |    6 +-
 .../org.eclipse.pde.api.tools.ui/plugin.xml        |    5 +-
 .../internal/markers/FilterProblemResolution.java  |   12 +-
 .../preferences/preferencemessages.properties      |   12 +-
 .../api/tools/ui/internal/use/ApiUseScanTab.java   |   33 +-
 .../ui/internal/wizards/ApiBaselineWizardPage.java |    2 +-
 .../.settings/org.eclipse.pde.prefs                |    9 +-
 .../org.eclipse.pde.api.tools/plugin.properties    |    2 +-
 .../plugins/org.eclipse.pde.api.tools/plugin.xml   |    2 +-
 .../scripts/buildApiToolsAntSupportJar.xml         |    2 +-
 .../pde/api/tools/internal/ApiFilterStore.java     |   15 +
 .../pde/api/tools/internal/IApiCoreConstants.java  |    2 +-
 .../builder/AbstractIllegalMethodReference.java    |    4 +-
 .../builder/AbstractIllegalTypeReference.java      |    4 +-
 .../internal/builder/AbstractProblemDetector.java  |   18 +-
 .../internal/builder/AbstractTypeLeakDetector.java |    2 +-
 .../tools/internal/builder/BaseApiAnalyzer.java    |   75 +-
 .../api/tools/internal/builder/BuildContext.java   |   61 +-
 .../builder/IllegalFieldReferenceDetector.java     |    4 +-
 .../internal/builder/IncrementalApiBuilder.java    |   13 +-
 .../tools/internal/builder/MethodLeakDetector.java |    2 +-
 .../pde/api/tools/internal/builder/TypeScope.java  |    4 +-
 .../internal/comparator/ClassFileComparator.java   |   40 +-
 .../compatible_delta_messages.properties           |    2 +-
 .../pde/api/tools/internal/model/Messages.java     |    2 +-
 .../api/tools/internal/model/Messages.properties   |    2 +-
 .../tools/internal/model/ProjectTypeContainer.java |    2 +-
 .../provisional/builder/IBuildContext.java         |   28 -
 .../provisional/comparator/ApiComparator.java      |    2 +-
 .../comparator/CompareApiScopeVisitor.java         |    2 +-
 .../provisional/model/ApiTypeContainerVisitor.java |    2 +-
 .../internal/provisional/model/IApiMember.java     |    4 +-
 .../provisional/model/IApiTypeContainer.java       |    2 +-
 .../api/tools/internal/search/HTMLConvertor.java   |    3 +-
 .../internal/search/ReferenceLookupVisitor.java    |   15 +-
 .../pde/api/tools/internal/search/UseMetadata.java |    6 +-
 .../tools/internal/search/UseReportConverter.java  |   22 +-
 .../search/XmlReferenceDescriptorWriter.java       |    6 +-
 .../tools/internal/search/XmlSearchReporter.java   |   17 +-
 .../api/tools/internal/util/ExcludedElements.java  |   99 +
 .../eclipse/pde/api/tools/internal/util/Util.java  |   28 +-
 .../tools/internal/tasks/APIDeprecationTask.java   |   10 +-
 .../api/tools/internal/tasks/APIFreezeTask.java    |   12 +-
 .../tools/internal/tasks/APIToolsAnalysisTask.java |   20 +-
 .../internal/tasks/ApiFileGenerationTask.java      |   41 +-
 .../api/tools/internal/tasks/CommonUtilsTask.java  |   10 +-
 .../pde/api/tools/internal/tasks/CompareTask.java  |   13 +-
 .../internal/tasks/ExcludeListDeltaVisitor.java    |   20 +-
 .../pde/api/tools/internal/tasks/Messages.java     |    2 +-
 .../org.eclipse.pde.build/data/env.properties      |   14 +-
 eclipse/plugins/org.eclipse.pde.build/plugin.xml   |   12 +-
 .../scripts/genericTargets.xml                     |   14 +-
 .../scripts/productBuild/productBuild.xml          |   15 +-
 .../src/org/eclipse/pde/build/IAntScript.java      |   20 +-
 .../internal/build/AbstractScriptGenerator.java    |   34 +-
 .../build/AssembleConfigScriptGenerator.java       |   46 +-
 .../internal/build/AssembleScriptGenerator.java    |   16 +-
 .../eclipse/pde/internal/build/BrandingIron.java   |   14 +-
 .../pde/internal/build/BuildScriptGenerator.java   |   14 +-
 .../eclipse/pde/internal/build/BundleHelper.java   |    4 +-
 .../pde/internal/build/FeatureGenerator.java       |   25 +-
 .../eclipse/pde/internal/build/FeatureWriter.java  |   16 +-
 .../pde/internal/build/FetchScriptGenerator.java   |   14 +-
 .../internal/build/IBuildPropertiesConstants.java  |    7 +-
 .../pde/internal/build/IPDEBuildConstants.java     |    8 +-
 .../eclipse/pde/internal/build/IXMLConstants.java  |    3 +-
 .../org/eclipse/pde/internal/build/Messages.java   |   17 +-
 .../internal/build/P2ConfigScriptGenerator.java    |   16 +-
 .../eclipse/pde/internal/build/ProductFile.java    |    4 +-
 .../pde/internal/build/ProductGenerator.java       |   45 +-
 .../src/org/eclipse/pde/internal/build/Utils.java  |   16 +-
 .../eclipse/pde/internal/build/ant/AntScript.java  |   15 +-
 .../eclipse/pde/internal/build/ant/JavacTask.java  |   20 +-
 .../builder/AbstractBuildScriptGenerator.java      |   14 +-
 .../pde/internal/build/builder/BuildDirector.java  |   32 +-
 .../build/builder/ClasspathComputer2_1.java        |   14 +-
 .../build/builder/ClasspathComputer3_0.java        |    4 +-
 .../internal/build/builder/DevClassPathHelper.java |    4 +-
 .../build/builder/FeatureBuildScriptGenerator.java |   24 +-
 .../build/builder/ModelBuildScriptGenerator.java   |   40 +-
 .../internal/build/builder/SourceGenerator.java    |   14 +-
 .../internal/build/fetch/CVSFetchTaskFactory.java  |   14 +-
 .../pde/internal/build/fetch/GETFetchFactory.java  |    6 +-
 .../pde/internal/build/fetch/P2IUFetchFactory.java |    6 +-
 .../eclipse/pde/internal/build/messages.properties |    4 +-
 .../build/packager/DeltaPackScriptGenerator.java   |    4 +-
 .../packager/PackageConfigScriptGenerator.java     |   31 +-
 .../build/packager/PackageScriptGenerator.java     |   16 +-
 .../internal/build/packager/PackagerGenerator.java |   14 +-
 .../build/publisher/FeatureRootAdvice.java         |   14 +-
 .../build/publisher/GatherBundleAction.java        |   14 +-
 .../build/publisher/GatherFeatureAction.java       |   16 +-
 .../compatibility/AssembledConfigAdvice.java       |   14 +-
 .../compatibility/GeneratorApplication.java        |   14 +-
 .../compatibility/IncrementalGenerator.java        |    2 +-
 .../compatibility/RootFileParentAction.java        |   14 +-
 .../compatibility/RootFileTouchpointAdvice.java    |   14 +-
 .../pde/internal/build/site/BuildTimeSite.java     |    4 +-
 .../build/site/BuildTimeSiteContentProvider.java   |   36 +-
 .../eclipse/pde/internal/build/site/P2Utils.java   |    2 +-
 .../eclipse/pde/internal/build/site/PDEState.java  |   20 +-
 .../pde/internal/build/site/PluginPathFinder.java  |   16 +-
 .../pde/internal/build/site/QualifierReplacer.java |   16 +-
 .../internal/build/generator/GeneratorTask.java    |   14 +-
 .../build/publisher/FeaturesAndBundlesTask.java    |   16 +-
 .../build/publisher/GatherFeatureTask.java         |   16 +-
 .../build/tasks/BuildScriptGeneratorTask.java      |   16 +-
 .../eclipse/pde/internal/build/tasks/Config.java   |    4 +-
 .../internal/build/tasks/FeatureGeneratorTask.java |    8 +-
 .../build/tasks/GenericVersionReplacer.java        |   14 +-
 .../pde/internal/build/tasks/ManifestModifier.java |    4 +-
 .../internal/build/tasks/SimpleBuildLogger.java    |    4 +-
 .../pde/internal/build/tasks/TaskMessages.java     |    4 +-
 .../pde/internal/build/tasks/messages.properties   |    4 +-
 .../templates/headless-build/build.properties      |    4 +-
 .../org.eclipse.pde.core/META-INF/MANIFEST.MF      |    6 +-
 .../plugins/org.eclipse.pde.core/macosx/Info.plist |   34 +-
 .../plugins/org.eclipse.pde.core/plugin.properties |   14 +-
 eclipse/plugins/org.eclipse.pde.core/plugin.xml    |   20 +-
 .../schema/bundleImporters.exsd                    |    2 +-
 .../pde/core/project/IBundleClasspathEntry.java    |    3 +-
 .../core/project/IBundleProjectDescription.java    |    3 +-
 .../eclipse/pde/core/project/IHostDescription.java |    3 +-
 .../core/project/IPackageExportDescription.java    |    3 +-
 .../core/project/IPackageImportDescription.java    |    3 +-
 .../core/project/IRequiredBundleDescription.java   |    3 +-
 .../internal/core/BundleValidationOperation.java   |   44 +-
 .../eclipse/pde/internal/core/ClasspathHelper.java |   14 +
 .../pde/internal/core/ExternalModelManager.java    |   87 +-
 .../pde/internal/core/FeatureModelManager.java     |   15 +-
 .../eclipse/pde/internal/core/ICoreConstants.java  |   12 +
 .../pde/internal/core/JavadocLocationManager.java  |    8 +-
 .../src/org/eclipse/pde/internal/core/P2Utils.java |    2 +-
 .../pde/internal/core/PDEAuxiliaryState.java       |   14 +-
 .../src/org/eclipse/pde/internal/core/PDECore.java |   48 +-
 .../eclipse/pde/internal/core/PDECoreMessages.java |   29 +-
 .../pde/internal/core/PDEPreferencesManager.java   |    2 +-
 .../pde/internal/core/PluginModelManager.java      |   49 +-
 .../pde/internal/core/PreferenceInitializer.java   |    3 +
 .../internal/core/SearchablePluginsManager.java    |   14 +-
 .../core/TargetPreferenceModifyListener.java       |    3 +-
 .../internal/core/builders/BuildErrorReporter.java |  521 ++++--
 .../core/builders/BundleErrorReporter.java         |    1 -
 .../pde/internal/core/builders/CompilerFlags.java  |    2 +
 .../core/builders/FeatureErrorReporter.java        |    2 +-
 .../core/builders/SourceEntryErrorReporter.java    |  444 ++++-
 .../core/content/DefaultDocumentFactory.java       |   25 +
 .../core/exports/FeatureExportOperation.java       |   19 +-
 .../core/exports/ProductExportOperation.java       |    9 +-
 .../pde/internal/core/feature/FeatureChild.java    |   14 +-
 .../pde/internal/core/feature/FeatureData.java     |   14 +-
 .../pde/internal/core/feature/FeatureImport.java   |   14 +-
 .../pde/internal/core/ifeature/IFeatureChild.java  |   14 +-
 .../pde/internal/core/ifeature/IFeatureEntry.java  |   14 +-
 .../pde/internal/core/ifeature/IFeatureImport.java |    2 +-
 .../pde/internal/core/pderesources.properties      |   24 +-
 .../core/project/BundleProjectDescription.java     |   35 +-
 .../core/project/BundleProjectService.java         |   16 +-
 .../core/target/AbstractBundleContainer.java       |    7 +
 .../core/target/ExternalFileTargetHandle.java      |   18 +-
 .../internal/core/target/IUBundleContainer.java    |   27 +-
 .../eclipse/pde/internal/core/target/Messages.java |    1 +
 .../pde/internal/core/target/Messages.properties   |    1 +
 .../pde/internal/core/target/ResolvedBundle.java   |    2 +-
 .../pde/internal/core/target/TargetDefinition.java |   14 +-
 .../core/target/TargetPlatformService.java         |    2 +-
 .../core/target/provisional/IResolvedBundle.java   |    9 +-
 .../target/provisional/ITargetPlatformService.java |    2 +-
 .../provisional/LoadTargetDefinitionJob.java       |   20 +-
 .../pde/internal/core/text/DocumentHandler.java    |    5 +-
 eclipse/plugins/org.eclipse.pde.doc.user/.project  |   44 +-
 .../org.eclipse.pde.doc.user/about.properties      |    4 +-
 .../org.eclipse.pde.doc.user/api_contexts.xml      |   10 +
 .../plugins/org.eclipse.pde.doc.user/buildDoc.xml  |    8 +-
 .../org.eclipse.pde.doc.user/concepts/target.htm   |    2 +-
 .../concepts/update_site.htm                       |   32 +-
 .../org.eclipse.pde.doc.user/contexts_PDE.xml      |   12 +-
 .../guide/images/import_wizards/plugin_import.png  |  Bin 12078 -> 12523 bytes
 .../launchers/launcher_eclipse_configuration.png   |  Bin 11283 -> 14175 bytes
 .../images/launchers/launcher_eclipse_features.png |  Bin 0 -> 228157 bytes
 .../images/launchers/launcher_eclipse_plugins.png  |  Bin 24437 -> 30256 bytes
 .../launchers/launcher_junit_configuration.PNG     |  Bin 12371 -> 0 bytes
 .../images/launchers/launcher_junit_plugins.png    |  Bin 24265 -> 0 bytes
 .../images/new_wizards/new_ctx_hlp_wizard.png      |  Bin 0 -> 18942 bytes
 .../guide/images/new_wizards/user_assistance.png   |  Bin 0 -> 2684 bytes
 .../guide/images/plugin_editor/internal.png        |  Bin 0 -> 509 bytes
 .../guide/images/plugin_editor/public.png          |  Bin 0 -> 444 bytes
 .../guide/images/plugin_editor/xfriend.png         |  Bin 0 -> 535 bytes
 .../guide/images/preferences/compilers_plugin.png  |  Bin 17355 -> 16163 bytes
 .../images/preferences/plugin_development.png      |  Bin 8665 -> 94913 bytes
 .../guide/images/product_editor/launcher_ee.png    |  Bin 0 -> 6448 bytes
 .../guide/images/product_editor/launcher_jre.png   |  Bin 9159 -> 0 bytes
 .../images/schema_editor/schema_identifier.png     |  Bin 0 -> 28478 bytes
 .../guide/images/target_editor/content_page.png    |  Bin 21530 -> 36754 bytes
 .../target_editor/content_page_feature_mode.png    |  Bin 0 -> 37275 bytes
 .../target_shared/edit_target_content_tab.png      |  Bin 18114 -> 35387 bytes
 .../edit_target_content_tab_feature_mode.png       |  Bin 0 -> 37183 bytes
 .../guide/images/tasks/import-as-repo.png          |  Bin 0 -> 4005 bytes
 .../guide/images/tasks/import-from-active.png      |  Bin 0 -> 6131 bytes
 .../images/tasks/import-from-plugins-view.png      |  Bin 0 -> 11145 bytes
 .../guide/images/tasks/import-version.png          |  Bin 0 -> 3582 bytes
 .../guide/intro/pde_overview.htm                   |    2 +-
 .../guide/tools/editors/manifest_editor/build.htm  |    6 +-
 .../tools/editors/manifest_editor/runtime.htm      |    6 +
 .../tools/editors/product_editor/launching.htm     |    6 +-
 .../schema_editor/page_schema_definition.htm       |    9 +-
 .../tools/editors/target_editor/content_page.htm   |   16 +-
 .../guide/tools/file_wizards/new_cheat_sheet.htm   |   25 +-
 .../guide/tools/file_wizards/new_ctx_help.htm      |   50 +
 .../guide/tools/file_wizards/new_file_wizards.htm  |   36 +-
 .../guide/tools/file_wizards/new_toc.htm           |   25 +-
 .../guide/tools/import_wizards/import_plugins.htm  |    3 +-
 .../guide/tools/launchers/arguments.htm            |   46 +
 .../guide/tools/launchers/common.htm               |   15 +
 .../guide/tools/launchers/configuration.htm        |   27 +-
 .../launchers/eclipse_application_launcher.htm     |   10 +-
 .../guide/tools/launchers/eclipse_args.htm         |   31 -
 .../guide/tools/launchers/eclipse_main.htm         |   14 +
 .../guide/tools/launchers/eclipse_plugins.htm      |   28 -
 .../guide/tools/launchers/environment.htm          |   15 +
 .../guide/tools/launchers/equinox_args.htm         |   13 +
 .../guide/tools/launchers/equinox_launcher.htm     |    7 +
 .../guide/tools/launchers/equinox_plugins.htm      |   17 +-
 .../guide/tools/launchers/equinox_settings.htm     |   13 +
 .../guide/tools/launchers/junit_configuration.htm  |   38 -
 .../guide/tools/launchers/junit_launcher.htm       |   12 +-
 .../guide/tools/launchers/junit_main.htm           |   14 +
 .../guide/tools/launchers/junit_plugins.htm        |   27 -
 .../guide/tools/launchers/junit_test.htm           |   15 +
 .../guide/tools/launchers/plugins.htm              |   45 +
 .../guide/tools/launchers/tracing.htm              |   19 +-
 .../tools/preference_pages/plug_in_development.htm |   22 +-
 .../target_shared/edit_target_content_tab.htm      |   15 +-
 .../guide/tools/views/target_platform_state.htm    |    4 +-
 .../plugins/org.eclipse.pde.doc.user/notices.html  |    4 +-
 .../org.eclipse.pde.doc.user/pdeOptions.txt        |    2 +-
 .../api-tooling/ant-tasks/analysis-ant-task.htm    |   20 +-
 .../analysis-reportconversion-ant-task.htm         |   22 +-
 .../api-tooling/ant-tasks/apifreeze-ant-task.htm   |   20 +-
 .../apifreeze-reportconversion-ant-task.htm        |   22 +-
 .../ant-tasks/apimigration-ant-task.htm            |   24 +-
 .../apimigration-reportconversion-ant-task.htm     |   24 +-
 .../api-tooling/ant-tasks/apiuse-ant-task.htm      |   18 +-
 .../ant-tasks/apiuse-reportconversion-ant-task.htm |   20 +-
 .../api-tooling/ant-tasks/deprecation-ant-task.htm |  138 ++
 .../deprecation-reportconversion-ant-task.htm      |   83 +
 .../ant-tasks/filegeneration-ant-task.htm          |   22 +-
 .../images/api-use-pattern-wizard-archive-page.png |  Bin 0 -> 18161 bytes
 .../api-use-pattern-wizard-conversion-page.png     |  Bin 0 -> 19101 bytes
 .../images/api-use-pattern-wizard-package-page.png |  Bin 0 -> 18250 bytes
 .../api-tooling/images/api-use-pattern-wizard.png  |  Bin 0 -> 21129 bytes
 .../api-tooling/images/use-ui-patterns.png         |  Bin 0 -> 17675 bytes
 .../reference/api-tooling/images/use-ui.png        |  Bin 0 -> 49223 bytes
 .../api-tooling/wizards/ref-api-use-dialog.htm     |  198 ++
 .../wizards/ref-apiuse-patterns-wizard.htm         |  165 ++
 .../reference/misc/api-usage-rules.html            |    0
 .../reference/pde_builder_config.htm               |   16 +
 .../reference/pde_feature_generating_build.htm     |   17 +-
 .../tasks/pde_compiler_options.htm                 |   83 +
 .../pde_feature_generating_antcommandline.htm      |    4 +-
 .../tasks/pde_fetch_phase.htm                      |   22 +-
 .../tasks/pde_p2_builds.htm                        |    2 +-
 .../tasks/pde_p2_buildtasks.htm                    |   24 +-
 .../tasks/pde_p2_configuringproducts.htm           |    2 +-
 .../tasks/pde_p2_featurebuilds.htm                 |    2 +-
 .../tasks/pde_p2_integration.htm                   |    2 +-
 .../tasks/pde_p2_productbuilds.htm                 |    4 +-
 .../tasks/ui_import_from_cvs.htm                   |   58 +
 .../org.eclipse.pde.doc.user/tips/pde_tips.htm     |   28 +-
 .../org.eclipse.pde.doc.user/topics_Reference.xml  |   46 +-
 .../org.eclipse.pde.doc.user/topics_Tasks.xml      |    6 +-
 .../whatsNew/images/add-plugins.png                |  Bin 0 -> 4916 bytes
 .../whatsNew/images/add-to-target.png              |  Bin 0 -> 15745 bytes
 .../whatsNew/images/api-deprecation.png            |  Bin 0 -> 11963 bytes
 .../whatsNew/images/api-filters.png                |  Bin 0 -> 16482 bytes
 .../whatsNew/images/api-scan.png                   |  Bin 0 -> 21483 bytes
 .../whatsNew/images/apichanges.png                 |  Bin 17204 -> 0 bytes
 .../whatsNew/images/archive-wizard.png             |  Bin 0 -> 17881 bytes
 .../whatsNew/images/archive.png                    |  Bin 0 -> 7853 bytes
 .../whatsNew/images/avail.png                      |  Bin 0 -> 10614 bytes
 .../whatsNew/images/build-severities.png           |  Bin 0 -> 21561 bytes
 .../whatsNew/images/buildproperties.png            |  Bin 0 -> 5153 bytes
 .../whatsNew/images/categorydef.png                |  Bin 10716 -> 0 bytes
 .../whatsNew/images/categoryexport.png             |  Bin 44320 -> 0 bytes
 .../whatsNew/images/click-install.png              |  Bin 40319 -> 0 bytes
 .../whatsNew/images/console-menu.png               |  Bin 0 -> 4114 bytes
 .../whatsNew/images/consolelog.png                 |  Bin 0 -> 5485 bytes
 .../whatsNew/images/description.png                |  Bin 0 -> 8140 bytes
 .../whatsNew/images/dstemplate.png                 |  Bin 26429 -> 0 bytes
 .../whatsNew/images/ee-validation-pref.png         |  Bin 11343 -> 0 bytes
 .../whatsNew/images/ee-validation.png              |  Bin 7456 -> 0 bytes
 .../whatsNew/images/err-warn.png                   |  Bin 22389 -> 0 bytes
 .../whatsNew/images/export-options.png             |  Bin 43294 -> 0 bytes
 .../whatsNew/images/export-target.png              |  Bin 0 -> 17687 bytes
 .../whatsNew/images/feature-launch.png             |  Bin 0 -> 28203 bytes
 .../whatsNew/images/filter-quick-fix.png           |  Bin 10553 -> 0 bytes
 .../whatsNew/images/from-repo.png                  |  Bin 0 -> 3586 bytes
 .../whatsNew/images/head-version.png               |  Bin 0 -> 4072 bytes
 .../whatsNew/images/hover-quick-fix.png            |  Bin 0 -> 13409 bytes
 .../whatsNew/images/installcategory.png            |  Bin 33866 -> 0 bytes
 .../whatsNew/images/installed.png                  |  Bin 30612 -> 0 bytes
 .../whatsNew/images/keypass.png                    |  Bin 37797 -> 0 bytes
 .../whatsNew/images/menuspy.png                    |  Bin 7863 -> 0 bytes
 .../whatsNew/images/nl-fragments.png               |  Bin 34988 -> 0 bytes
 .../whatsNew/images/non-ui-thread.png              |  Bin 3614 -> 0 bytes
 .../whatsNew/images/options-editor.png             |  Bin 4596 -> 0 bytes
 .../whatsNew/images/pattern-wizard.png             |  Bin 0 -> 21736 bytes
 .../whatsNew/images/patterns.png                   |  Bin 0 -> 7425 bytes
 .../whatsNew/images/pde-binarycycles.png           |  Bin 38372 -> 0 bytes
 .../whatsNew/images/pde-ds.png                     |  Bin 20029 -> 0 bytes
 .../whatsNew/images/pde-jumpconsole.png            |  Bin 14636 -> 0 bytes
 .../whatsNew/images/pde-registryview.png           |  Bin 24527 -> 0 bytes
 .../whatsNew/images/pde-versioning.png             |  Bin 13581 -> 0 bytes
 .../whatsNew/images/registryfragments.png          |  Bin 13851 -> 0 bytes
 .../whatsNew/images/scandetails.png                |  Bin 0 -> 16094 bytes
 .../whatsNew/images/soft-install.png               |  Bin 0 -> 2334 bytes
 .../whatsNew/images/spell-check.png                |  Bin 0 -> 6612 bytes
 .../whatsNew/images/src-builds.png                 |  Bin 0 -> 12009 bytes
 .../whatsNew/images/start-levels.png               |  Bin 16991 -> 0 bytes
 .../whatsNew/images/synch-settings.png             |  Bin 0 -> 2496 bytes
 .../whatsNew/images/synch-warnings.png             |  Bin 0 -> 3789 bytes
 .../whatsNew/images/target-editor.png              |  Bin 23547 -> 0 bytes
 .../whatsNew/images/target-features.png            |  Bin 0 -> 43702 bytes
 .../whatsNew/images/target-platform.png            |  Bin 21336 -> 0 bytes
 .../whatsNew/images/target-search.png              |  Bin 0 -> 3083 bytes
 .../whatsNew/images/targetstateview.png            |  Bin 18741 -> 0 bytes
 .../whatsNew/images/xml-errors.png                 |  Bin 0 -> 4184 bytes
 .../whatsNew/pde_whatsnew.htm                      |  861 +++++---
 .../org.eclipse.pde.ds.core/build.properties       |   10 +
 .../org.eclipse.pde.ds.core/plugin.properties      |   10 +
 eclipse/plugins/org.eclipse.pde.ds.core/plugin.xml |   11 +
 .../ds/core/builders/XMLErrorReporter.java         |    2 +-
 .../pde/internal/ds/core/messages.properties       |    2 +-
 .../pde/internal/ds/core/text/DSObject.java        |    2 +-
 .../plugins/org.eclipse.pde.ds.ui/build.properties |   10 +
 .../org.eclipse.pde.ds.ui/plugin.properties        |   10 +
 eclipse/plugins/org.eclipse.pde.ds.ui/plugin.xml   |   11 +
 .../plugin.properties                              |    4 +-
 .../org.eclipse.pde.junit.runtime/plugin.xml       |    5 +-
 .../org.eclipse.pde.launching/build.properties     |    2 +-
 .../plugins/org.eclipse.pde.launching/plugin.xml   |   12 +-
 .../schema/osgiFrameworks.exsd                     |   51 +-
 .../launching/launcher/BundleLauncherHelper.java   |  228 ++-
 .../launcher/EclipsePluginValidationOperation.java |   94 +-
 .../launcher/LaunchConfigurationHelper.java        |   11 +-
 .../launching/launcher/LaunchListener.java         |    2 +-
 .../launching/launcher/OSGiMigrationDelegate.java  |   14 +-
 .../launching/launcher/PDEMigrationDelegate.java   |   14 +-
 .../launching/launcher/RequirementHelper.java      |  103 +
 .../pde/internal/launching/launcher/VMHelper.java  |    2 +-
 .../pde/launching/EquinoxLaunchConfiguration.java  |   10 +
 .../pde/launching/IPDELauncherConstants.java       |   13 +
 .../JUnitLaunchConfigurationDelegate.java          |   10 +-
 eclipse/plugins/org.eclipse.pde.runtime/plugin.xml |    3 +-
 .../pde/internal/runtime/PDERuntimeMessages.java   |    2 +-
 .../runtime/pderuntimeresources.properties         |    2 +-
 .../runtime/registry/RegistryFilteredTree.java     |    2 +-
 .../org.eclipse.pde.ua.core/META-INF/MANIFEST.MF   |    2 +-
 .../org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF     |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../org.eclipse.pde.ui.templates/plugin.xml        |    5 +-
 .../internal/ui/templates/PDETemplateMessages.java |   14 +-
 .../internal/ui/templates/pderesources.properties  |   14 +-
 .../icons/etool16/export_target.gif                |  Bin 0 -> 981 bytes
 .../plugins/org.eclipse.pde.ui/plugin.properties   |    4 +-
 eclipse/plugins/org.eclipse.pde.ui/plugin.xml      |   14 +-
 .../schema/bundleImportPages.exsd                  |    4 +-
 .../eclipse/pde/internal/ui/IHelpContextIds.java   |    4 +-
 .../eclipse/pde/internal/ui/IPDEUIConstants.java   |    2 +-
 .../pde/internal/ui/IPreferenceConstants.java      |    2 +-
 .../eclipse/pde/internal/ui/PDELabelProvider.java  |   24 +-
 .../src/org/eclipse/pde/internal/ui/PDEPlugin.java |    2 +-
 .../org/eclipse/pde/internal/ui/PDEUIMessages.java |   24 +-
 .../ui/correction/RemoveBuildEntryResolution.java  |   14 +-
 .../ui/correction/java/QuickFixProcessor.java      |    2 +-
 .../pde/internal/ui/editor/build/BuildPage.java    |   14 +-
 .../contentassist/TypeCompletionProposal.java      |    2 +-
 .../contentassist/XMLCompletionProposal.java       |    2 +-
 .../ui/editor/feature/FeatureAdvancedPage.java     |   14 +-
 .../ui/editor/feature/FeatureDependenciesPage.java |   14 +-
 .../ui/editor/feature/FeatureFormPage.java         |   14 +-
 .../ui/editor/feature/FeatureIncludesPage.java     |   14 +-
 .../ui/editor/feature/FeatureReferencePage.java    |   14 +-
 .../internal/ui/editor/feature/InfoFormPage.java   |   14 +-
 .../ui/editor/plugin/DependenciesPage.java         |   14 +-
 .../ui/editor/plugin/ExtensionPointsPage.java      |   14 +-
 .../internal/ui/editor/plugin/ExtensionsPage.java  |   14 +-
 .../ui/editor/plugin/GeneralInfoSection.java       |   25 +-
 .../ui/editor/plugin/JavaAttributeWizardPage.java  |    9 +-
 .../internal/ui/editor/plugin/LibrarySection.java  |   36 +-
 .../pde/internal/ui/editor/plugin/RuntimePage.java |   14 +-
 .../internal/ui/editor/product/BrandingPage.java   |   14 +-
 .../internal/ui/editor/product/LaunchingPage.java  |   14 +-
 .../pde/internal/ui/editor/product/SplashPage.java |   14 +-
 .../pde/internal/ui/editor/site/ArchivePage.java   |   14 +-
 .../internal/ui/editor/site/CategorySection.java   |   14 +-
 .../pde/internal/ui/editor/site/FeaturesPage.java  |   14 +-
 .../ui/editor/targetdefinition/ContentSection.java |    2 +-
 .../ui/editor/text/ManifestConfiguration.java      |    2 +-
 .../ui/editor/text/PluginXMLConfiguration.java     |   14 +-
 .../ui/editor/text/XMLReconcilingStrategy.java     |   14 +-
 .../internal/ui/launcher/AbstractPluginBlock.java  |  111 +-
 .../pde/internal/ui/launcher/FeatureBlock.java     |  640 +++++-
 .../internal/ui/launcher/FilteredCheckboxTree.java |   14 +-
 .../internal/ui/launcher/JUnitProgramBlock.java    |   14 +-
 .../pde/internal/ui/launcher/LaunchAction.java     |    2 +-
 .../pde/internal/ui/launcher/OpenLogDialog.java    |    2 +-
 .../internal/ui/launcher/PDELogFileProvider.java   |    2 +-
 .../pde/internal/ui/launcher/PluginBlock.java      |   75 +-
 .../internal/ui/launcher/SoftwareInstallBlock.java |   10 +
 .../eclipse/pde/internal/ui/nls/ModelChange.java   |   14 +-
 .../pde/internal/ui/pderesources.properties        |   31 +-
 .../PDECompilersConfigurationBlock.java            |   24 +-
 .../preferences/TargetPlatformPreferencePage.java  |    1 +
 .../ui/refactoring/PluginManifestChange.java       |   14 +-
 .../internal/ui/search/FindReferencesAction.java   |   14 +-
 .../internal/ui/search/ShowDescriptionAction.java  |    2 +-
 .../dependencies/CalculateUsesOperation.java       |   14 +-
 .../search/dependencies/UnusedImportsDialog.java   |   14 +-
 .../ui/shared/CachedCheckboxTreeViewer.java        |   18 +
 .../target/AddBundleContainerSelectionPage.java    |    2 +-
 .../ui/shared/target/EditIUContainerPage.java      |   21 +-
 .../pde/internal/ui/shared/target/Messages.java    |    2 +
 .../shared/target/StyledBundleLabelProvider.java   |   11 +-
 .../ui/shared/target/TargetContentsGroup.java      |   73 +-
 .../ui/shared/target/TargetLocationsGroup.java     |   91 +-
 .../internal/ui/shared/target/messages.properties  |    2 +
 .../eclipse/pde/internal/ui/util/OSGiConsole.java  |   30 +-
 .../pde/internal/ui/util/OSGiConsoleFactory.java   |   38 +-
 .../ui/util/OSGiConsolePageParticipant.java        |   63 +
 .../ui/views/plugins/ImportActionGroup.java        |   65 +-
 .../ui/views/plugins/JavaSearchActionGroup.java    |   14 +-
 .../ui/wizards/exports/ExportActiveTargetJob.java  |   28 +-
 .../ui/wizards/exports/ExportDestinationTab.java   |    2 +-
 .../ui/wizards/exports/ExportTargetMetadata.java   |   13 +-
 .../exports/TargetDefinitionExportWizard.java      |    2 +
 .../exports/TargetDefinitionExportWizardPage.java  |   89 +-
 .../ui/wizards/extension/PointSelectionPage.java   |   14 +-
 .../ui/wizards/imports/CVSBundleImportPage.java    |    5 +-
 .../ui/wizards/imports/PluginImportWizard.java     |   18 +-
 .../ui/wizards/imports/RepositoryImportWizard.java |  149 ++
 .../internal/ui/wizards/plugin/ContentPage.java    |   17 +-
 .../wizards/plugin/PluginClassCodeGenerator.java   |   18 +-
 .../ui/wizards/product/ProductIntroOperation.java  |    2 +-
 .../eclipse/pde/ui/launcher/ConfigurationTab.java  |    2 +-
 .../org/eclipse/pde/ui/launcher/JUnitTabGroup.java |    2 +-
 .../eclipse/pde/ui/launcher/OSGiSettingsTab.java   |    2 +-
 .../org/eclipse/pde/ui/launcher/TracingTab.java    |    2 +-
 .../pde/ui/templates/OptionTemplateWizardPage.java |   14 +-
 .../plugins/org.eclipse.pde/META-INF/MANIFEST.MF   |    2 +-
 eclipse/plugins/org.eclipse.pde/about.properties   |    4 +-
 .../cheatsheets/helloworld/helloworld-create.xml   |   20 +-
 .../cheatsheets/helloworld/helloworld-feature.xml  |   15 +-
 .../cheatsheets/rcpapp/rcpapp-create.xml           |   15 +-
 .../cheatsheets/rcpapp/rcpapp-customize.xml        |    8 +-
 .../cheatsheets/rcpapp/rcpapp-export.xml           |    4 +-
 .../cheatsheets/rcpapp/rcpapp-feature-product.xml  |    4 +-
 .../cheatsheets/rcpapp/rcpapp-plugin-product.xml   |   12 +-
 eclipse/plugins/org.eclipse.pde/plugin.properties  |    2 +-
 eclipse/plugins/org.eclipse.pde/plugin.xml         |    2 +-
 .../org.eclipse.platform.doc.isv/guide/arch.htm    |    2 +-
 .../guide/arch_struct.htm                          |    2 +-
 .../guide/bundle_security.html                     |    4 +-
 .../guide/compare_contentviewer.htm                |    5 +-
 .../guide/debug_breakpoints.htm                    |    2 +-
 .../guide/debug_ui.htm                             |    2 +-
 .../guide/forms_editors.htm                        |    2 +-
 .../guide/images/p2allbundles.png                  |  Bin 0 -> 520017 bytes
 .../guide/images/p2allbundlesinstalled.png         |  Bin 0 -> 398491 bytes
 .../guide/images/p2cloudinstall.png                |  Bin 0 -> 141807 bytes
 .../guide/images/p2forcedupdate.png                |  Bin 0 -> 40432 bytes
 .../guide/images/p2reuse.png                       |  Bin 0 -> 154102 bytes
 .../guide/int_eclipse.htm                          |    6 +-
 .../org.eclipse.platform.doc.isv/guide/jface.htm   |    4 +-
 .../guide/p2_actions_touchpoints.html              |  627 ++++++
 .../guide/p2_api_overview.htm                      |  217 ++
 .../guide/p2_customizing_metadata.html             |    4 +-
 .../guide/p2_director.html                         |   11 +-
 .../guide/p2_publisher.html                        |    2 +-
 .../guide/p2_publishingtasks.htm                   |    2 +-
 .../guide/p2_repositorytasks.htm                   |   48 +-
 .../guide/p2_startup.htm                           |   82 +
 .../org.eclipse.platform.doc.isv/guide/p2_ui.htm   |   33 +
 .../guide/p2_uipolicy.htm                          |  260 +++
 .../guide/p2_uireuse.htm                           |   88 +
 .../org.eclipse.platform.doc.isv/guide/product.htm |    2 +-
 .../guide/product_def_feature.htm                  |    2 +-
 .../guide/product_def_plugins.htm                  |   12 +-
 .../guide/product_extension.htm                    |    2 +-
 .../guide/product_open_file.htm                    |  174 ++
 .../org.eclipse.platform.doc.isv/guide/rcp.htm     |    4 +-
 .../guide/rcp_browser.htm                          |    4 +-
 .../guide/rcp_define.htm                           |    2 +-
 .../guide/rcp_extensions.htm                       |    2 +-
 .../org.eclipse.platform.doc.isv/guide/resAdv.htm  |    1 +
 .../guide/resAdv_variables.htm                     |   43 +
 .../org.eclipse.platform.doc.isv/guide/resInt.htm  |    1 +
 .../guide/resInt_filters.htm                       |   31 +
 .../guide/resInt_linked.htm                        |   13 +
 .../guide/runtime_jobs.htm                         |    9 +
 .../guide/runtime_model.htm                        |    2 +-
 .../guide/runtime_model_bundles.htm                |    2 +-
 .../guide/swt_widgets_events.htm                   |   17 +-
 .../guide/team_howto.htm                           |    2 +-
 .../guide/team_provider_repository.htm             |    2 +-
 .../guide/ua_help_abstract_scope.htm               |    2 +-
 .../guide/ua_help_content_child_links.htm          |    4 +-
 .../guide/ua_help_content_criteria.htm             |  116 +
 .../guide/ua_help_content_nested.htm               |    2 +-
 .../guide/ua_help_content_process.htm              |    4 +-
 .../guide/ua_help_content_xhtml.htm                |    1 -
 .../guide/ua_help_setup_standalone.htm             |   13 +-
 .../guide/ua_help_war.htm                          |   13 +-
 .../guide/workbench.htm                            |    2 +-
 .../guide/workbench_advext_activities.htm          |    8 +-
 .../guide/workbench_advext_contexts.htm            |    2 +-
 .../guide/workbench_advext_decorators.htm          |    4 +-
 .../guide/workbench_cmd_menus.htm                  |    8 +-
 .../guide/workbench_scalability.htm                |    4 +-
 .../org.eclipse.platform.doc.isv/notices.html      |    4 +-
 .../platformOptions.txt                            |   22 +-
 .../porting/3.6/faq.html                           |   22 +-
 .../porting/3.6/incompatibilities.html             |   52 +-
 .../porting/removals.html                          |   47 +-
 .../questions/index.html                           |    2 +-
 .../reference/extension-points/index.html          |    8 +-
 .../reference/misc/eclipsestarter.html             |    2 +-
 .../reference/misc/overview-platform.html          |    6 +-
 .../reference/misc/runtime-options.html            |   29 +-
 .../org.eclipse.platform.doc.isv/topics_Guide.xml  |   15 +
 .../topics_Reference.xml                           |   10 +-
 .../whatsNew/images/blockselection.png             |  Bin 40683 -> 0 bytes
 .../whatsNew/images/browserclose.png               |  Bin 0 -> 53626 bytes
 .../whatsNew/images/button-order.png               |  Bin 72816 -> 0 bytes
 .../whatsNew/images/cairoaix.png                   |  Bin 25605 -> 0 bytes
 .../whatsNew/images/cocoartl.PNG                   |  Bin 0 -> 14883 bytes
 .../whatsNew/images/datetime-dropdown.png          |  Bin 18711 -> 0 bytes
 .../whatsNew/images/dnd.png                        |  Bin 29114 -> 0 bytes
 .../whatsNew/images/editor.png                     |  Bin 40171 -> 0 bytes
 .../whatsNew/images/filtered-tree.png              |  Bin 6936 -> 0 bytes
 .../whatsNew/images/footer.png                     |  Bin 0 -> 93716 bytes
 .../whatsNew/images/injection_graph_func.js        |  463 ----
 .../whatsNew/images/jnigen.png                     |  Bin 48242 -> 0 bytes
 .../whatsNew/images/link.png                       |  Bin 16524 -> 0 bytes
 .../whatsNew/images/margins.png                    |  Bin 14613 -> 0 bytes
 .../whatsNew/images/menu-mac.png                   |  Bin 0 -> 174924 bytes
 .../whatsNew/images/menu-win32.png                 |  Bin 0 -> 150303 bytes
 .../whatsNew/images/modified.png                   |  Bin 21756 -> 0 bytes
 .../whatsNew/images/multi-font-labels.png          |  Bin 9970 -> 0 bytes
 .../whatsNew/images/nautiluscopy.png               |  Bin 43966 -> 0 bytes
 .../whatsNew/images/newctab.png                    |  Bin 0 -> 4691 bytes
 .../whatsNew/images/newscope.png                   |  Bin 0 -> 15719 bytes
 .../whatsNew/images/overlayimage.png               |  Bin 0 -> 27617 bytes
 .../whatsNew/images/overlaytext.png                |  Bin 0 -> 45477 bytes
 .../whatsNew/images/printdialog.png                |  Bin 40765 -> 0 bytes
 .../whatsNew/images/progress.png                   |  Bin 0 -> 31260 bytes
 .../whatsNew/images/rss.png                        |  Bin 0 -> 47547 bytes
 .../whatsNew/images/search.png                     |  Bin 31550 -> 0 bytes
 .../whatsNew/images/see.png                        |  Bin 0 -> 6759 bytes
 .../whatsNew/images/segments-chars.png             |  Bin 0 -> 9242 bytes
 .../whatsNew/images/sheet-prompt.png               |  Bin 82302 -> 0 bytes
 .../whatsNew/images/sheet.png                      |  Bin 73811 -> 0 bytes
 .../whatsNew/images/showwelcome.png                |  Bin 17233 -> 0 bytes
 .../whatsNew/images/slate-intro.png                |  Bin 28022 -> 0 bytes
 .../whatsNew/images/slate-overview.png             |  Bin 36099 -> 0 bytes
 .../whatsNew/images/solarisx86-browser.png         |  Bin 78769 -> 0 bytes
 .../whatsNew/images/sttabs.png                     |  Bin 0 -> 22943 bytes
 .../whatsNew/images/tablednd.png                   |  Bin 0 -> 20407 bytes
 .../whatsNew/images/text_search.png                |  Bin 0 -> 7817 bytes
 .../whatsNew/images/uiabout1.png                   |  Bin 33879 -> 0 bytes
 .../whatsNew/images/uiabout2.png                   |  Bin 18993 -> 0 bytes
 .../whatsNew/images/variable-tab-stops.png         |  Bin 0 -> 13069 bytes
 .../whatsNew/images/webappextn.png                 |  Bin 0 -> 81421 bytes
 .../whatsNew/images/webkitgtk.png                  |  Bin 0 -> 54756 bytes
 .../whatsNew/images/wrap-indent.png                |  Bin 0 -> 20434 bytes
 .../whatsNew/platform_isv_whatsnew.html            |  825 ++++----
 .../concepts/accessibility/text_editor.htm         |   45 +-
 .../concepts/resourcefilters.htm                   |   77 +
 .../concepts/virtualfolders.htm                    |    6 +-
 .../concepts/welcome.htm                           |    7 +-
 .../contexts_Workbench.xml                         |   36 +-
 .../gettingStarted/qs-24a.xhtml                    |   11 +-
 .../gettingStarted/qs-31b.htm                      |   18 +-
 .../gettingStarted/qs-responsiveUI.htm             |    8 +-
 .../images/Image262_import_file.png                |  Bin 13361 -> 36896 bytes
 .../images/Image36_linkedresources.png             |  Bin 14663 -> 35590 bytes
 .../images/Image39_import_tree.png                 |  Bin 14638 -> 33918 bytes
 .../images/Image_file_folder_operation.png         |  Bin 0 -> 16349 bytes
 .../images/Image_file_operation.png                |  Bin 0 -> 14868 bytes
 .../images/Image_team_pref.png                     |  Bin 25365 -> 28321 bytes
 .../images/help_preference.png                     |  Bin 25602 -> 32002 bytes
 .../images/help_preference_content.png             |  Bin 40863 -> 31923 bytes
 .../images/help_preference_infocenter.png          |  Bin 12301 -> 11040 bytes
 .../images/help_preference_server.png              |  Bin 23754 -> 0 bytes
 .../images/help_scope_criteria.png                 |  Bin 0 -> 21248 bytes
 .../images/help_scope_link.png                     |  Bin 0 -> 4403 bytes
 .../images/help_scope_new.png                      |  Bin 0 -> 12888 bytes
 .../images/help_scope_select.png                   |  Bin 0 -> 14325 bytes
 .../images/help_view_context.png                   |  Bin 15073 -> 10712 bytes
 .../images/help_window.png                         |  Bin 120784 -> 102409 bytes
 .../images/res_blocked.png                         |  Bin 23033 -> 61897 bytes
 .../images/res_build.png                           |  Bin 14054 -> 31508 bytes
 .../images/res_details.png                         |  Bin 8840 -> 7220 bytes
 .../images/res_otherjobs.png                       |  Bin 9254 -> 45942 bytes
 .../images/res_pref.png                            |  Bin 4185 -> 22241 bytes
 .../images/welcome.png                             |  Bin 121576 -> 85570 bytes
 .../org.eclipse.platform.doc.user/notices.html     |    4 +-
 .../reference/help_preferences.htm                 |   33 +-
 .../reference/help_preferences_content.htm         |   42 +-
 .../reference/ref-19.htm                           |    7 +-
 .../reference/ref-37.htm                           |    2 +-
 .../reference/ref-70.htm                           |   41 +
 .../reference/ref-anteditor.htm                    |    8 +-
 .../reference/ref-dialog-open-resource.htm         |   17 +-
 .../tasks/help_navigate.htm                        |   10 -
 .../tasks/help_scope.htm                           |   51 +
 .../tasks/running_eclipse.htm                      |   12 +-
 .../tasks/tasks-1e.htm                             |    6 +-
 .../tasks/tasks-3.htm                              |    2 +-
 .../tasks/tasks-45.htm                             |    2 +-
 .../tasks/tasks-68c.htm                            |   76 +-
 .../tasks/tasks-97.htm                             |   46 +
 .../tasks/timpandexp.htm                           |   32 +-
 .../tasks/topenmode.htm                            |    4 +-
 .../tips/images/preference-transfer-compiler.png   |  Bin 0 -> 10118 bytes
 .../{ => tips}/images/res_build.png                |  Bin 14054 -> 14054 bytes
 .../tips/platform_tips.html                        |   19 +-
 .../topics_Concepts.xml                            |    2 +
 .../org.eclipse.platform.doc.user/topics_Tasks.xml |    7 +-
 .../whatsNew/images/alternate.png                  |  Bin 27019 -> 0 bytes
 .../images/apply-patch-in-sync-view-preference.png |  Bin 0 -> 18629 bytes
 .../whatsNew/images/apply-patch-syncview.png       |  Bin 20148 -> 0 bytes
 .../whatsNew/images/apply-patch-ws.png             |  Bin 0 -> 20191 bytes
 .../whatsNew/images/block-selection-mode.png       |  Bin 3722 -> 0 bytes
 .../whatsNew/images/breakpoint-details.png         |  Bin 0 -> 22941 bytes
 .../whatsNew/images/cnf-gointo.png                 |  Bin 9877 -> 0 bytes
 .../whatsNew/images/cocoa.png                      |  Bin 37207 -> 0 bytes
 .../whatsNew/images/collapse-projection.png        |  Bin 2074 -> 0 bytes
 .../whatsNew/images/commitWizardLogicalModels.png  |  Bin 0 -> 23923 bytes
 .../whatsNew/images/configure-branches.png         |  Bin 0 -> 33587 bytes
 .../images/contentMergeViewerSwitching.png         |  Bin 2857 -> 0 bytes
 .../whatsNew/images/customicon.png                 |  Bin 14420 -> 0 bytes
 .../whatsNew/images/customize-perspective.png      |  Bin 30692 -> 0 bytes
 .../whatsNew/images/debug-breadcrumb-1.png         |  Bin 4477 -> 0 bytes
 .../whatsNew/images/debug-breadcrumb-2.png         |  Bin 10178 -> 0 bytes
 .../whatsNew/images/debug-breadcrumb-3.png         |  Bin 10370 -> 0 bytes
 .../whatsNew/images/dynamicPathVariables.png       |  Bin 0 -> 33475 bytes
 .../whatsNew/images/edit-button-in-property.png    |  Bin 0 -> 14076 bytes
 .../whatsNew/images/expressions-columns.png        |  Bin 0 -> 12470 bytes
 .../whatsNew/images/file-attributes-ui.png         |  Bin 0 -> 6307 bytes
 .../whatsNew/images/file-system-import.png         |  Bin 0 -> 43899 bytes
 .../whatsNew/images/gotoLine.png                   |  Bin 13667 -> 0 bytes
 .../whatsNew/images/hide-fvb.png                   |  Bin 0 -> 22580 bytes
 .../whatsNew/images/import-type-dialog.png         |  Bin 0 -> 23236 bytes
 .../whatsNew/images/import-zip.png                 |  Bin 0 -> 18994 bytes
 .../whatsNew/images/inaccessible-projects-page.png |  Bin 0 -> 23233 bytes
 .../whatsNew/images/injection_graph_func.js        |  463 ----
 .../whatsNew/images/installhistory.png             |  Bin 0 -> 18574 bytes
 .../whatsNew/images/linkedResourcesPropPage.png    |  Bin 0 -> 28183 bytes
 .../whatsNew/images/localHistoryLimitSize.png      |  Bin 0 -> 19024 bytes
 .../images/matching-might-not-be-optimal.png       |  Bin 0 -> 10552 bytes
 .../whatsNew/images/multi-instance-properties.png  |  Bin 20070 -> 0 bytes
 .../whatsNew/images/open-in-compare-editor.png     |  Bin 0 -> 26432 bytes
 .../whatsNew/images/open-resource-boosting.png     |  Bin 0 -> 16517 bytes
 .../whatsNew/images/open-resource-dialog.png       |  Bin 8315 -> 0 bytes
 .../images/open-resource-path-relative.png         |  Bin 0 -> 22075 bytes
 .../whatsNew/images/open-resource-path.png         |  Bin 0 -> 10423 bytes
 .../whatsNew/images/p2-license.png                 |  Bin 0 -> 118086 bytes
 .../whatsNew/images/p2install-details-wizard.png   |  Bin 29745 -> 0 bytes
 .../whatsNew/images/p2install.png                  |  Bin 33599 -> 0 bytes
 .../whatsNew/images/p2installwizard.png            |  Bin 31146 -> 0 bytes
 .../whatsNew/images/p2menu.png                     |  Bin 4602 -> 0 bytes
 .../whatsNew/images/p2repoprefs2.png               |  Bin 12100 -> 0 bytes
 .../whatsNew/images/p2revert.png                   |  Bin 20635 -> 0 bytes
 .../whatsNew/images/p2updatewizard1.png            |  Bin 27982 -> 0 bytes
 .../whatsNew/images/p2updatewizard2.png            |  Bin 22637 -> 0 bytes
 .../whatsNew/images/patch-options-in-sync-view.png |  Bin 0 -> 18127 bytes
 .../whatsNew/images/proxy-settings-ui.png          |  Bin 19756 -> 0 bytes
 .../whatsNew/images/quickaccess-bindings.png       |  Bin 0 -> 5430 bytes
 .../whatsNew/images/quicksearch.png                |  Bin 9049 -> 0 bytes
 .../whatsNew/images/resize-popups-gtk.png          |  Bin 0 -> 19306 bytes
 .../whatsNew/images/resourceFilters.png            |  Bin 0 -> 31550 bytes
 .../whatsNew/images/save-dialog.png                |  Bin 0 -> 5702 bytes
 .../images/show-ruler-annotation-tooltip.png       |  Bin 0 -> 4150 bytes
 .../whatsNew/images/solarisx86.png                 |  Bin 54654 -> 0 bytes
 .../whatsNew/images/switch-editors.png             |  Bin 10616 -> 0 bytes
 .../whatsNew/images/sync-schedule.png              |  Bin 13664 -> 0 bytes
 .../whatsNew/images/syncViewLinkWithEditor.png     |  Bin 0 -> 10082 bytes
 .../whatsNew/images/tag-history.png                |  Bin 13527 -> 0 bytes
 .../whatsNew/images/taskbarprogress.png            |  Bin 0 -> 37451 bytes
 .../whatsNew/images/textSelection.png              |  Bin 10955 -> 0 bytes
 .../whatsNew/images/virtual-folder-properties.png  |  Bin 0 -> 9541 bytes
 .../whatsNew/images/virtual-folder.png             |  Bin 0 -> 26743 bytes
 .../whatsNew/images/visible-folded-annotations.png |  Bin 0 -> 1503 bytes
 .../whatsNew/images/webkitgtk.png                  |  Bin 0 -> 54756 bytes
 .../whatsNew/images/welcomescale.png               |  Bin 1722 -> 0 bytes
 .../whatsNew/images/wizardstop.png                 |  Bin 0 -> 16597 bytes
 .../whatsNew/images/wordinplace.png                |  Bin 11656 -> 0 bytes
 .../whatsNew/images/workspaces-preference-page.png |  Bin 28883 -> 0 bytes
 .../whatsNew/platform_whatsnew.html                |  638 +++---
 .../intro/whatsnewExtensionContent3.xml            |    4 +-
 .../plugins/org.eclipse.platform/launchersrc.zip   |  Bin 175789 -> 175802 bytes
 .../plugins/org.eclipse.platform/plugin.properties |    4 +-
 .../plugins/org.eclipse.rcp/META-INF/MANIFEST.MF   |    2 +-
 eclipse/plugins/org.eclipse.rcp/about.properties   |    4 +-
 .../org/eclipse/releng/tools/BuildNotesPage.java   |    8 +-
 .../eclipse/releng/tools/FixCopyrightAction.java   |    4 +
 .../org.eclipse.search/schema/searchPages.exsd     |    2 +-
 .../search/internal/ui/SearchPageDescriptor.java   |   14 +-
 .../org.eclipse.swt.gtk.linux.s390/.project        |   28 +
 .../META-INF/MANIFEST.MF                           |   19 +
 .../org.eclipse.swt.gtk.linux.s390/about.html      |  233 +++
 .../about_files/IJG_README                         |    0
 .../about_files/about_cairo.html                   |    0
 .../about_files/lgpl-v21.txt                       |    0
 .../about_files/mpl-v11.txt                        |    0
 .../about_files/pixman-licenses.txt                |    0
 .../build.properties                               |    0
 .../org.eclipse.swt.gtk.linux.s390/build.xml       |   12 +
 .../fragment.properties                            |   12 +
 .../org.eclipse.swt.gtk.linux.s390x/.project       |   28 +
 .../META-INF/MANIFEST.MF                           |   19 +
 .../org.eclipse.swt.gtk.linux.s390x/about.html     |  233 +++
 .../about_files/IJG_README                         |    0
 .../about_files/about_cairo.html                   |    0
 .../about_files/lgpl-v21.txt                       |    0
 .../about_files/mpl-v11.txt                        |    0
 .../about_files/pixman-licenses.txt                |    0
 .../build.properties                               |   11 +
 .../org.eclipse.swt.gtk.linux.s390x/build.xml      |   12 +
 .../fragment.properties                            |   12 +
 .../plugins/org.eclipse.swt/.settings/.api_filters |  202 ++-
 .../.settings/org.eclipse.pde.api.tools.prefs      |   11 +-
 .../Eclipse SWT AWT/cocoa/library/swt_awt.c        |    4 +-
 .../org/eclipse/swt/accessibility/Accessible.java  |   59 +-
 .../org/eclipse/swt/accessibility/Accessible.java  |  514 +++--
 .../swt/accessibility/AccessibleTableColumn.java   |  100 +
 .../swt/accessibility/AccessibleTableHeader.java   |  102 +
 .../swt/accessibility/AccessibleTableRow.java      |  167 ++
 .../org/eclipse/swt/accessibility/Relation.java    |   11 +-
 .../swt/accessibility/SWTAccessibleDelegate.java   |    2 +-
 .../swt/accessibility/TableAccessibleDelegate.java |  288 +++
 .../common/org/eclipse/swt/accessibility/ACC.java  |    2 +-
 .../swt/accessibility/AccessibleActionAdapter.java |    2 +-
 .../swt/accessibility/AccessibleActionEvent.java   |    2 +-
 .../accessibility/AccessibleActionListener.java    |    2 +-
 .../accessibility/AccessibleAttributeAdapter.java  |    2 +-
 .../accessibility/AccessibleAttributeEvent.java    |    2 +-
 .../accessibility/AccessibleAttributeListener.java |    2 +-
 .../accessibility/AccessibleControlAdapter.java    |    2 +-
 .../accessibility/AccessibleControlListener.java   |    2 +-
 .../accessibility/AccessibleHyperlinkAdapter.java  |    2 +-
 .../accessibility/AccessibleHyperlinkEvent.java    |    2 +-
 .../accessibility/AccessibleHyperlinkListener.java |    2 +-
 .../swt/accessibility/AccessibleTableAdapter.java  |    2 +-
 .../accessibility/AccessibleTableCellAdapter.java  |    2 +-
 .../accessibility/AccessibleTableCellEvent.java    |    2 +-
 .../accessibility/AccessibleTableCellListener.java |    2 +-
 .../swt/accessibility/AccessibleTableEvent.java    |    2 +-
 .../swt/accessibility/AccessibleTableListener.java |    2 +-
 .../AccessibleTextAttributeEvent.java              |    2 +-
 .../swt/accessibility/AccessibleTextEvent.java     |   11 +-
 .../AccessibleTextExtendedAdapter.java             |    2 +-
 .../AccessibleTextExtendedListener.java            |    2 +-
 .../swt/accessibility/AccessibleValueAdapter.java  |    2 +-
 .../swt/accessibility/AccessibleValueEvent.java    |    2 +-
 .../swt/accessibility/AccessibleValueListener.java |    2 +-
 .../org/eclipse/swt/accessibility/Accessible.java  |   35 +-
 .../org/eclipse/swt/accessibility/Accessible.java  |   62 +-
 .../swt/accessibility/AccessibleFactory.java       |    7 +-
 .../swt/accessibility/AccessibleObject.java        |  213 ++-
 .../org/eclipse/swt/accessibility/Accessible.java  | 1176 ++++++++----
 .../org/eclipse/swt/accessibility/Relation.java    |   93 +-
 .../carbon/org/eclipse/swt/browser/Safari.java     |    4 +-
 .../cocoa/org/eclipse/swt/browser/Safari.java      |    4 +-
 .../common/org/eclipse/swt/browser/Browser.java    |   14 +-
 .../common/org/eclipse/swt/browser/WebBrowser.java |    2 +-
 .../forms/org/eclipse/swt/browser/IE.java          |    2 +-
 .../photon/org/eclipse/swt/browser/Voyager.java    |    2 +-
 .../win32/org/eclipse/swt/browser/IE.java          |   84 +-
 .../win32/org/eclipse/swt/browser/WebSite.java     |   14 +-
 .../wpf/org/eclipse/swt/browser/IE.java            |    2 +-
 .../org/eclipse/swt/custom/BidiSegmentEvent.java   |    4 +-
 .../common/org/eclipse/swt/custom/CCombo.java      |   34 +-
 .../common/org/eclipse/swt/custom/CLabel.java      |    2 +-
 .../common/org/eclipse/swt/custom/CTabFolder.java  |   43 +-
 .../org/eclipse/swt/custom/CTabFolderLayout.java   |    2 +-
 .../org/eclipse/swt/custom/CTabFolderRenderer.java |    8 +-
 .../common/org/eclipse/swt/custom/CTabItem.java    |    3 +-
 .../org/eclipse/swt/custom/LineStyleEvent.java     |    2 +-
 .../common/org/eclipse/swt/custom/StackLayout.java |    2 +-
 .../common/org/eclipse/swt/custom/StyledText.java  |   75 +-
 .../org/eclipse/swt/custom/StyledTextEvent.java    |    2 +-
 .../org/eclipse/swt/custom/StyledTextListener.java |    2 +-
 .../org/eclipse/swt/custom/StyledTextRenderer.java |    2 +-
 .../carbon/org/eclipse/swt/dnd/DragSource.java     |    2 +-
 .../carbon/org/eclipse/swt/dnd/TextTransfer.java   |    6 +
 .../carbon/org/eclipse/swt/dnd/TransferData.java   |    2 +-
 .../cocoa/org/eclipse/swt/dnd/DragSource.java      |    2 +-
 .../cocoa/org/eclipse/swt/dnd/DropTarget.java      |    2 +-
 .../cocoa/org/eclipse/swt/dnd/TextTransfer.java    |    6 +
 .../cocoa/org/eclipse/swt/dnd/TransferData.java    |    2 +-
 .../common/org/eclipse/swt/dnd/DND.java            |    2 +-
 .../org/eclipse/swt/dnd/DropTargetListener.java    |    2 +-
 .../emulated/org/eclipse/swt/dnd/TextTransfer.java |    6 +
 .../emulated/org/eclipse/swt/dnd/TransferData.java |    2 +-
 .../gtk/org/eclipse/swt/dnd/ClipboardProxy.java    |    2 +-
 .../org/eclipse/swt/dnd/TableDropTargetEffect.java |    2 +-
 .../gtk/org/eclipse/swt/dnd/TextTransfer.java      |    6 +
 .../gtk/org/eclipse/swt/dnd/TransferData.java      |    2 +-
 .../motif/org/eclipse/swt/dnd/TextTransfer.java    |    6 +
 .../motif/org/eclipse/swt/dnd/TransferData.java    |    2 +-
 .../photon/org/eclipse/swt/dnd/TextTransfer.java   |    6 +
 .../photon/org/eclipse/swt/dnd/TransferData.java   |    2 +-
 .../org/eclipse/swt/dnd/OleEnumFORMATETC.java      |    2 +-
 .../org/eclipse/swt/dnd/TableDropTargetEffect.java |    2 +-
 .../win32/org/eclipse/swt/dnd/TextTransfer.java    |    2 +-
 .../win32/org/eclipse/swt/dnd/TransferData.java    |    2 +-
 .../wpf/org/eclipse/swt/dnd/TextTransfer.java      |    6 +
 .../wpf/org/eclipse/swt/dnd/TransferData.java      |    2 +-
 .../org/eclipse/swt/browser/MozillaDelegate.java   |    2 +-
 .../org/eclipse/swt/browser/MozillaDelegate.java   |    2 +-
 .../common/library/swt_xpcom.rc                    |    5 +-
 .../common/library/xpcom.manifest                  |    1 -
 .../eclipse/swt/browser/AppFileLocProvider.java    |    2 +-
 .../common/org/eclipse/swt/browser/Download.java   |    2 +-
 .../org/eclipse/swt/browser/Download_1_8.java      |    2 +-
 .../org/eclipse/swt/browser/InputStream.java       |    2 +-
 .../common/org/eclipse/swt/browser/Mozilla.java    |  188 ++-
 .../org/eclipse/swt/browser/PromptDialog.java      |    2 +-
 .../org/eclipse/swt/browser/PromptService2.java    |    2 +-
 .../org/eclipse/swt/browser/WindowCreator2.java    |    2 +-
 .../org/eclipse/swt/internal/mozilla/nsID.java     |   72 +-
 .../org/eclipse/swt/browser/MozillaDelegate.java   |    2 +-
 .../org/eclipse/swt/browser/MozillaDelegate.java   |    2 +-
 .../org/eclipse/swt/browser/MozillaDelegate.java   |    2 +-
 .../org/eclipse/swt/ole/win32/OleAutomation.java   |    4 +-
 .../org/eclipse/swt/ole/win32/OleClientSite.java   |    2 +-
 .../org/eclipse/swt/ole/win32/OleControlSite.java  |    2 +-
 .../win32/org/eclipse/swt/ole/win32/OleFrame.java  |    2 +-
 .../win32/org/eclipse/swt/ole/win32/Variant.java   |    2 +-
 .../Eclipse SWT PI/carbon/library/cocoa_custom.c   |    2 +-
 .../Eclipse SWT PI/carbon/library/make_macosx.mak  |    2 +-
 .../Eclipse SWT PI/carbon/library/os.c             |   55 +
 .../Eclipse SWT PI/carbon/library/os.h             |    2 +-
 .../Eclipse SWT PI/carbon/library/os_custom.c      |    2 +-
 .../Eclipse SWT PI/carbon/library/os_stats.c       |    8 +-
 .../Eclipse SWT PI/carbon/library/os_stats.h       |    4 +
 .../carbon/org/eclipse/swt/internal/carbon/OS.java |   21 +-
 .../org/eclipse/swt/internal/cocoa/Cocoa.java      |    2 +-
 .../Eclipse SWT PI/cocoa/library/make_macosx.mak   |    2 +-
 .../Eclipse SWT PI/cocoa/library/os.c              |   71 +
 .../Eclipse SWT PI/cocoa/library/os.h              |    2 +-
 .../Eclipse SWT PI/cocoa/library/os_custom.c       |    2 +-
 .../Eclipse SWT PI/cocoa/library/os_custom.h       |    2 +-
 .../Eclipse SWT PI/cocoa/library/os_stats.c        |   13 +-
 .../Eclipse SWT PI/cocoa/library/os_stats.h        |    9 +
 .../internal/cocoa/AppKitFull.bridgesupport.extras |   19 +
 .../org/eclipse/swt/internal/cocoa/CFRange.java    |    2 +-
 .../swt/internal/cocoa/CGAffineTransform.java      |    2 +-
 .../cocoa/FoundationFull.bridgesupport.extras      |    7 +
 .../org/eclipse/swt/internal/cocoa/NSObject.java   |    4 +
 .../eclipse/swt/internal/cocoa/NSStatusBar.java    |    2 +-
 .../org/eclipse/swt/internal/cocoa/NSWindow.java   |    6 +-
 .../eclipse/swt/internal/cocoa/NSWorkspace.java    |   11 +-
 .../cocoa/org/eclipse/swt/internal/cocoa/OS.java   |   28 +-
 .../eclipse/swt/internal/cocoa/SWTTabViewItem.java |   10 +
 .../swt/internal/cocoa/SWTTextAttachmentCell.java  |    2 +-
 .../org/eclipse/swt/internal/Library.java          |    4 +-
 .../org/eclipse/swt/internal/Library.java          |    4 +-
 .../Eclipse SWT PI/gtk/library/atk.h               |    2 +-
 .../Eclipse SWT PI/gtk/library/atk_structs.h       |    2 +-
 .../Eclipse SWT PI/gtk/library/build.sh            |   12 +-
 .../Eclipse SWT PI/gtk/library/make_freebsd.mak    |    2 +-
 .../Eclipse SWT PI/gtk/library/make_linux.mak      |    2 +-
 .../Eclipse SWT PI/gtk/library/make_solaris.mak    |    2 +-
 .../gtk/library/make_solaris_x86.mak               |    2 +-
 .../Eclipse SWT PI/gtk/library/os.c                |  102 +
 .../Eclipse SWT PI/gtk/library/os.h                |    2 +-
 .../Eclipse SWT PI/gtk/library/os_custom.h         |    6 +-
 .../Eclipse SWT PI/gtk/library/os_stats.c          |    9 +-
 .../Eclipse SWT PI/gtk/library/os_stats.h          |    5 +
 .../Eclipse SWT PI/gtk/library/os_structs.c        |    2 +-
 .../Eclipse SWT PI/gtk/library/os_structs.h        |    2 +-
 .../swt/internal/accessibility/gtk/ATK.java        |    3 +-
 .../internal/accessibility/gtk/AtkAttribute.java   |    2 +-
 .../internal/accessibility/gtk/AtkObjectClass.java |    2 +-
 .../internal/accessibility/gtk/AtkTableIface.java  |    2 +-
 .../internal/accessibility/gtk/AtkTextIface.java   |    2 +-
 .../internal/accessibility/gtk/AtkTextRange.java   |    2 +-
 .../accessibility/gtk/AtkTextRectangle.java        |    2 +-
 .../internal/accessibility/gtk/AtkValueIface.java  |    2 +-
 .../eclipse/swt/internal/gtk/GdkEventProperty.java |    2 +-
 .../gtk/org/eclipse/swt/internal/gtk/OS.java       |   62 +-
 .../Eclipse SWT PI/motif/library/make_aix.mak      |    2 +-
 .../Eclipse SWT PI/motif/library/make_linux.mak    |    2 +-
 .../Eclipse SWT PI/motif/library/os.c              |    2 +-
 .../Eclipse SWT PI/motif/library/os_stats.c        |    2 +-
 .../Eclipse SWT PI/motif/library/os_stats.h        |    2 +-
 .../motif/org/eclipse/swt/internal/motif/OS.java   |    2 +-
 .../Eclipse SWT PI/win32/library/build.bat         |   36 +-
 .../Eclipse SWT PI/win32/library/com_custom.c      |    2 +-
 .../Eclipse SWT PI/win32/library/com_custom.h      |    2 +-
 .../Eclipse SWT PI/win32/library/make_win32.mak    |    6 +-
 .../Eclipse SWT PI/win32/library/os.h              |    2 +-
 .../Eclipse SWT PI/win32/library/os_custom.h       |    2 +-
 .../org/eclipse/swt/internal/ole/win32/COM.java    |    5 +-
 .../eclipse/swt/internal/ole/win32/IOleObject.java |    2 +-
 .../eclipse/swt/internal/win32/DOCHOSTUIINFO.java  |    2 +-
 .../eclipse/swt/internal/win32/LVINSERTMARK.java   |    2 +-
 .../win32/org/eclipse/swt/internal/win32/OS.java   |    2 +-
 .../wpf/org/eclipse/swt/internal/wpf/OS.java       |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |    2 +-
 .../carbon/org/eclipse/swt/printing/Printer.java   |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |    2 +-
 .../cocoa/org/eclipse/swt/printing/Printer.java    |    2 +-
 .../org/eclipse/swt/printing/PrinterData.java      |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |    2 +-
 .../emulated/org/eclipse/swt/printing/Printer.java |    2 +-
 .../gtk/org/eclipse/swt/printing/PrintDialog.java  |    8 +-
 .../gtk/org/eclipse/swt/printing/Printer.java      |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |    2 +-
 .../motif/org/eclipse/swt/printing/Printer.java    |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |    2 +-
 .../photon/org/eclipse/swt/printing/Printer.java   |    2 +-
 .../org/eclipse/swt/printing/PrintDialog.java      |   23 +-
 .../win32/org/eclipse/swt/printing/Printer.java    |    2 +-
 .../wpf/org/eclipse/swt/printing/PrintDialog.java  |    2 +-
 .../wpf/org/eclipse/swt/printing/Printer.java      |    2 +-
 .../carbon/org/eclipse/swt/program/Program.java    |   42 +-
 .../cocoa/org/eclipse/swt/program/Program.java     |   12 +-
 .../emulated/org/eclipse/swt/program/Program.java  |    7 +-
 .../Eclipse SWT Program/gnome/library/gnome.c      |   30 +-
 .../gnome/library/gnome_stats.c                    |    4 +-
 .../gnome/library/gnome_stats.h                    |    4 +-
 .../org/eclipse/swt/internal/gnome/GNOME.java      |   28 +-
 .../gtk/org/eclipse/swt/program/Program.java       |  123 +-
 .../motif/org/eclipse/swt/program/Program.java     |   57 +-
 .../photon/org/eclipse/swt/program/Program.java    |    8 +-
 .../win32/org/eclipse/swt/program/Program.java     |   10 +-
 .../wpf/org/eclipse/swt/program/Program.java       |    8 +-
 .../gtk/org/eclipse/swt/browser/WebKit.java        |    2 +-
 .../cairo/org/eclipse/swt/graphics/Path.java       |    2 +-
 .../cairo/org/eclipse/swt/graphics/Pattern.java    |    2 +-
 .../cairo/org/eclipse/swt/graphics/Transform.java  |    2 +-
 .../carbon/org/eclipse/swt/graphics/Color.java     |    2 +-
 .../carbon/org/eclipse/swt/graphics/Cursor.java    |    6 +-
 .../carbon/org/eclipse/swt/graphics/Device.java    |    2 +-
 .../carbon/org/eclipse/swt/graphics/Font.java      |    2 +-
 .../carbon/org/eclipse/swt/graphics/FontData.java  |    2 +-
 .../carbon/org/eclipse/swt/graphics/GC.java        |    2 +-
 .../carbon/org/eclipse/swt/graphics/Image.java     |    4 +-
 .../carbon/org/eclipse/swt/graphics/Path.java      |    2 +-
 .../carbon/org/eclipse/swt/graphics/Pattern.java   |    2 +-
 .../carbon/org/eclipse/swt/graphics/Region.java    |    2 +-
 .../org/eclipse/swt/graphics/TextLayout.java       |   67 +-
 .../carbon/org/eclipse/swt/graphics/Transform.java |    2 +-
 .../carbon/org/eclipse/swt/widgets/Button.java     |    6 +
 .../carbon/org/eclipse/swt/widgets/Canvas.java     |    2 +-
 .../carbon/org/eclipse/swt/widgets/Combo.java      |    2 +-
 .../carbon/org/eclipse/swt/widgets/Composite.java  |   85 +
 .../carbon/org/eclipse/swt/widgets/Control.java    |   19 +-
 .../org/eclipse/swt/widgets/Decorations.java       |    2 +-
 .../carbon/org/eclipse/swt/widgets/Display.java    |   16 +-
 .../carbon/org/eclipse/swt/widgets/FileDialog.java |    2 +-
 .../carbon/org/eclipse/swt/widgets/Link.java       |   14 +-
 .../carbon/org/eclipse/swt/widgets/Menu.java       |    2 +-
 .../carbon/org/eclipse/swt/widgets/MenuItem.java   |    8 +-
 .../carbon/org/eclipse/swt/widgets/ScrollBar.java  |   39 +-
 .../carbon/org/eclipse/swt/widgets/Shell.java      |    2 +-
 .../carbon/org/eclipse/swt/widgets/Slider.java     |   12 +-
 .../carbon/org/eclipse/swt/widgets/Spinner.java    |    8 +-
 .../carbon/org/eclipse/swt/widgets/TableItem.java  |    6 +-
 .../carbon/org/eclipse/swt/widgets/Text.java       |    2 +-
 .../carbon/org/eclipse/swt/widgets/ToolItem.java   |    6 +
 .../carbon/org/eclipse/swt/widgets/TrayItem.java   |    2 +-
 .../carbon/org/eclipse/swt/widgets/TreeItem.java   |    8 +-
 .../carbon/org/eclipse/swt/widgets/Widget.java     |   28 +-
 .../cocoa/org/eclipse/swt/graphics/Color.java      |    2 +-
 .../cocoa/org/eclipse/swt/graphics/Cursor.java     |    6 +-
 .../cocoa/org/eclipse/swt/graphics/Device.java     |    2 +-
 .../cocoa/org/eclipse/swt/graphics/Font.java       |    2 +-
 .../cocoa/org/eclipse/swt/graphics/FontData.java   |    2 +-
 .../cocoa/org/eclipse/swt/graphics/GC.java         |   20 +-
 .../cocoa/org/eclipse/swt/graphics/GCData.java     |    2 +-
 .../cocoa/org/eclipse/swt/graphics/Image.java      |    4 +-
 .../cocoa/org/eclipse/swt/graphics/Path.java       |    2 +-
 .../cocoa/org/eclipse/swt/graphics/Pattern.java    |    2 +-
 .../cocoa/org/eclipse/swt/graphics/Region.java     |    2 +-
 .../cocoa/org/eclipse/swt/graphics/TextLayout.java |   72 +-
 .../cocoa/org/eclipse/swt/graphics/Transform.java  |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Button.java      |    6 +
 .../cocoa/org/eclipse/swt/widgets/Canvas.java      |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Combo.java       |   24 +-
 .../cocoa/org/eclipse/swt/widgets/Composite.java   |  183 ++-
 .../cocoa/org/eclipse/swt/widgets/Control.java     |   57 +-
 .../cocoa/org/eclipse/swt/widgets/Decorations.java |    2 +-
 .../org/eclipse/swt/widgets/DirectoryDialog.java   |    4 +-
 .../cocoa/org/eclipse/swt/widgets/Display.java     |   64 +-
 .../cocoa/org/eclipse/swt/widgets/FileDialog.java  |    2 +-
 .../cocoa/org/eclipse/swt/widgets/FontDialog.java  |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Label.java       |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Link.java        |  244 ++-
 .../cocoa/org/eclipse/swt/widgets/List.java        |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Menu.java        |    2 +-
 .../cocoa/org/eclipse/swt/widgets/MenuItem.java    |    8 +-
 .../cocoa/org/eclipse/swt/widgets/MessageBox.java  |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Sash.java        |    2 +-
 .../cocoa/org/eclipse/swt/widgets/ScrollBar.java   |  139 +-
 .../cocoa/org/eclipse/swt/widgets/Scrollable.java  |    2 +-
 .../cocoa/org/eclipse/swt/widgets/Shell.java       |   14 +-
 .../cocoa/org/eclipse/swt/widgets/Slider.java      |   12 +-
 .../cocoa/org/eclipse/swt/widgets/Spinner.java     |    8 +-
 .../cocoa/org/eclipse/swt/widgets/TabItem.java     |   21 +-
 .../cocoa/org/eclipse/swt/widgets/Table.java       |   13 +-
 .../cocoa/org/eclipse/swt/widgets/TableItem.java   |   18 +-
 .../cocoa/org/eclipse/swt/widgets/TaskBar.java     |   15 +-
 .../cocoa/org/eclipse/swt/widgets/TaskItem.java    |  199 ++-
 .../cocoa/org/eclipse/swt/widgets/Text.java        |    2 +-
 .../cocoa/org/eclipse/swt/widgets/ToolBar.java     |   57 +-
 .../cocoa/org/eclipse/swt/widgets/ToolItem.java    |   41 +-
 .../cocoa/org/eclipse/swt/widgets/Tree.java        |   13 +-
 .../cocoa/org/eclipse/swt/widgets/TreeItem.java    |   20 +-
 .../cocoa/org/eclipse/swt/widgets/Widget.java      |   44 +-
 .../Eclipse SWT/common/library/callback.c          |   20 +-
 .../Eclipse SWT/common/library/callback.h          |    6 +-
 .../Eclipse SWT/common/library/make_common.mak     |    8 +-
 .../Eclipse SWT/common/org/eclipse/swt/SWT.java    |   10 +-
 .../common/org/eclipse/swt/events/KeyEvent.java    |    2 +-
 .../common/org/eclipse/swt/events/MouseEvent.java  |    2 +-
 .../common/org/eclipse/swt/graphics/Drawable.java  |    2 +-
 .../common/org/eclipse/swt/graphics/ImageData.java |    2 +-
 .../common/org/eclipse/swt/graphics/Resource.java  |    5 +-
 .../eclipse/swt/internal/image/PNGFileFormat.java  |    2 +-
 .../org/eclipse/swt/internal/image/PngEncoder.java |    2 +-
 .../swt/internal/image/PngLzBlockReader.java       |    2 +-
 .../eclipse/swt/internal/image/TIFFDirectory.java  |    2 +-
 .../eclipse/swt/internal/image/TIFFFileFormat.java |    2 +-
 .../swt/internal/image/WinBMPFileFormat.java       |    2 +-
 .../common/org/eclipse/swt/layout/GridData.java    |   14 +-
 .../common/org/eclipse/swt/widgets/Event.java      |    2 +-
 .../org/eclipse/swt/widgets/TypedListener.java     |    2 +-
 .../org.eclipse.swt/Eclipse SWT/common/version.txt |    2 +-
 .../org/eclipse/swt/internal/Compatibility.java    |   16 +-
 .../org/eclipse/swt/internal/Compatibility.java    |   14 +-
 .../eclipse/swt/internal/SWTMessages.properties    |   17 +-
 .../swt/internal/SWTMessages_es._properties        |   11 +-
 .../swt/internal/SWTMessages_et._properties        |   23 +
 .../swt/internal/SWTMessages_ru._properties        |    4 +-
 .../swt/internal/SWTMessages_tr._properties        |   45 +-
 .../swt/internal/SWTMessages_uk._properties        |    3 +-
 .../swt/internal/SWTMessages_zh._properties        |    4 +-
 .../graphics/org/eclipse/swt/graphics/Path.java    |    2 +-
 .../graphics/org/eclipse/swt/graphics/Pattern.java |    2 +-
 .../org/eclipse/swt/graphics/Transform.java        |    2 +-
 .../taskbar/org/eclipse/swt/widgets/TaskBar.java   |   15 +-
 .../taskbar/org/eclipse/swt/widgets/TaskItem.java  |  192 ++-
 .../org/eclipse/swt/graphics/TextLayout.java       |   67 +-
 .../treetable/org/eclipse/swt/widgets/Table.java   |   45 +-
 .../org/eclipse/swt/widgets/TableItem.java         |    6 +-
 .../treetable/org/eclipse/swt/widgets/Tree.java    |   37 +-
 .../org/eclipse/swt/widgets/TreeItem.java          |    8 +-
 .../gtk/org/eclipse/swt/graphics/Color.java        |    2 +-
 .../gtk/org/eclipse/swt/graphics/Cursor.java       |    6 +-
 .../gtk/org/eclipse/swt/graphics/Device.java       |    2 +-
 .../gtk/org/eclipse/swt/graphics/DeviceData.java   |    2 +-
 .../gtk/org/eclipse/swt/graphics/Font.java         |    2 +-
 .../gtk/org/eclipse/swt/graphics/FontData.java     |    2 +-
 .../gtk/org/eclipse/swt/graphics/GC.java           |    2 +-
 .../gtk/org/eclipse/swt/graphics/Image.java        |    4 +-
 .../gtk/org/eclipse/swt/graphics/Region.java       |    2 +-
 .../gtk/org/eclipse/swt/graphics/TextLayout.java   |   67 +-
 .../gtk/org/eclipse/swt/widgets/Button.java        |    6 +
 .../gtk/org/eclipse/swt/widgets/Canvas.java        |    2 +-
 .../gtk/org/eclipse/swt/widgets/ColorDialog.java   |    6 +-
 .../gtk/org/eclipse/swt/widgets/Combo.java         |    2 +-
 .../gtk/org/eclipse/swt/widgets/Composite.java     |   85 +
 .../gtk/org/eclipse/swt/widgets/Control.java       |   31 +-
 .../gtk/org/eclipse/swt/widgets/Decorations.java   |    2 +-
 .../org/eclipse/swt/widgets/DirectoryDialog.java   |    6 +-
 .../gtk/org/eclipse/swt/widgets/Display.java       |   16 +-
 .../gtk/org/eclipse/swt/widgets/FileDialog.java    |    6 +-
 .../gtk/org/eclipse/swt/widgets/FontDialog.java    |    6 +-
 .../gtk/org/eclipse/swt/widgets/Label.java         |    2 +-
 .../gtk/org/eclipse/swt/widgets/Link.java          |   12 +
 .../gtk/org/eclipse/swt/widgets/MenuItem.java      |    8 +-
 .../gtk/org/eclipse/swt/widgets/MessageBox.java    |   12 +-
 .../gtk/org/eclipse/swt/widgets/ScrollBar.java     |   39 +-
 .../gtk/org/eclipse/swt/widgets/Shell.java         |   20 +-
 .../gtk/org/eclipse/swt/widgets/Slider.java        |   12 +-
 .../gtk/org/eclipse/swt/widgets/Spinner.java       |   25 +-
 .../gtk/org/eclipse/swt/widgets/Table.java         |    2 +-
 .../gtk/org/eclipse/swt/widgets/TableItem.java     |    6 +-
 .../gtk/org/eclipse/swt/widgets/Text.java          |    2 +-
 .../gtk/org/eclipse/swt/widgets/ToolItem.java      |    6 +
 .../gtk/org/eclipse/swt/widgets/ToolTip.java       |    6 +-
 .../gtk/org/eclipse/swt/widgets/Tree.java          |    2 +-
 .../gtk/org/eclipse/swt/widgets/TreeItem.java      |    8 +-
 .../gtk/org/eclipse/swt/widgets/Widget.java        |   28 +-
 .../motif/org/eclipse/swt/graphics/Color.java      |    2 +-
 .../motif/org/eclipse/swt/graphics/Cursor.java     |    6 +-
 .../motif/org/eclipse/swt/graphics/Device.java     |    2 +-
 .../motif/org/eclipse/swt/graphics/Font.java       |    2 +-
 .../motif/org/eclipse/swt/graphics/FontData.java   |    2 +-
 .../motif/org/eclipse/swt/graphics/GC.java         |    2 +-
 .../motif/org/eclipse/swt/graphics/Image.java      |    4 +-
 .../motif/org/eclipse/swt/graphics/Region.java     |    2 +-
 .../motif/org/eclipse/swt/graphics/TextLayout.java |   69 +-
 .../motif/org/eclipse/swt/widgets/Button.java      |    6 +
 .../motif/org/eclipse/swt/widgets/Canvas.java      |    2 +-
 .../motif/org/eclipse/swt/widgets/Combo.java       |    2 +-
 .../motif/org/eclipse/swt/widgets/Composite.java   |   86 +-
 .../motif/org/eclipse/swt/widgets/Control.java     |   19 +-
 .../motif/org/eclipse/swt/widgets/Decorations.java |    2 +-
 .../motif/org/eclipse/swt/widgets/Display.java     |   20 +-
 .../motif/org/eclipse/swt/widgets/Link.java        |   12 +
 .../motif/org/eclipse/swt/widgets/MenuItem.java    |    8 +-
 .../motif/org/eclipse/swt/widgets/ProgressBar.java |    2 +-
 .../motif/org/eclipse/swt/widgets/ScrollBar.java   |   39 +-
 .../motif/org/eclipse/swt/widgets/Shell.java       |    2 +-
 .../motif/org/eclipse/swt/widgets/Slider.java      |   12 +-
 .../motif/org/eclipse/swt/widgets/Spinner.java     |    8 +-
 .../motif/org/eclipse/swt/widgets/Text.java        |    2 +-
 .../motif/org/eclipse/swt/widgets/ToolItem.java    |    6 +
 .../motif/org/eclipse/swt/widgets/Widget.java      |   28 +-
 .../photon/org/eclipse/swt/graphics/Color.java     |    2 +-
 .../photon/org/eclipse/swt/graphics/Cursor.java    |    6 +-
 .../photon/org/eclipse/swt/graphics/Device.java    |    2 +-
 .../photon/org/eclipse/swt/graphics/Font.java      |    2 +-
 .../photon/org/eclipse/swt/graphics/FontData.java  |    2 +-
 .../org/eclipse/swt/graphics/FontMetrics.java      |    2 +-
 .../photon/org/eclipse/swt/graphics/GC.java        |    2 +-
 .../photon/org/eclipse/swt/graphics/Image.java     |    4 +-
 .../photon/org/eclipse/swt/graphics/Region.java    |    2 +-
 .../photon/org/eclipse/swt/widgets/Button.java     |    6 +
 .../photon/org/eclipse/swt/widgets/Canvas.java     |    2 +-
 .../photon/org/eclipse/swt/widgets/Combo.java      |    2 +-
 .../photon/org/eclipse/swt/widgets/Composite.java  |   85 +
 .../photon/org/eclipse/swt/widgets/Control.java    |   19 +-
 .../org/eclipse/swt/widgets/Decorations.java       |    2 +-
 .../photon/org/eclipse/swt/widgets/Display.java    |   16 +-
 .../photon/org/eclipse/swt/widgets/Link.java       |   12 +
 .../photon/org/eclipse/swt/widgets/MenuItem.java   |    8 +-
 .../photon/org/eclipse/swt/widgets/ScrollBar.java  |   39 +-
 .../photon/org/eclipse/swt/widgets/Slider.java     |   12 +-
 .../photon/org/eclipse/swt/widgets/Spinner.java    |    8 +-
 .../photon/org/eclipse/swt/widgets/Text.java       |    2 +-
 .../photon/org/eclipse/swt/widgets/ToolItem.java   |    6 +
 .../photon/org/eclipse/swt/widgets/Widget.java     |   28 +-
 .../win32/org/eclipse/swt/graphics/Color.java      |    4 +-
 .../win32/org/eclipse/swt/graphics/Cursor.java     |    8 +-
 .../win32/org/eclipse/swt/graphics/Device.java     |    2 +-
 .../win32/org/eclipse/swt/graphics/Font.java       |    4 +-
 .../win32/org/eclipse/swt/graphics/FontData.java   |    2 +-
 .../org/eclipse/swt/graphics/FontMetrics.java      |    2 +-
 .../win32/org/eclipse/swt/graphics/GC.java         |   11 +-
 .../win32/org/eclipse/swt/graphics/Image.java      |    4 +-
 .../win32/org/eclipse/swt/graphics/Path.java       |    4 +-
 .../win32/org/eclipse/swt/graphics/Pattern.java    |    4 +-
 .../win32/org/eclipse/swt/graphics/Region.java     |    4 +-
 .../win32/org/eclipse/swt/graphics/TextLayout.java |   10 +-
 .../win32/org/eclipse/swt/graphics/Transform.java  |    4 +-
 .../win32/org/eclipse/swt/internal/ImageList.java  |    2 +-
 .../win32/org/eclipse/swt/widgets/Canvas.java      |    2 +-
 .../win32/org/eclipse/swt/widgets/Combo.java       |   32 +-
 .../win32/org/eclipse/swt/widgets/Composite.java   |    6 +-
 .../win32/org/eclipse/swt/widgets/Control.java     |    9 +-
 .../win32/org/eclipse/swt/widgets/Decorations.java |    2 +-
 .../win32/org/eclipse/swt/widgets/Display.java     |    4 +-
 .../win32/org/eclipse/swt/widgets/Group.java       |    2 +-
 .../win32/org/eclipse/swt/widgets/Menu.java        |    2 +-
 .../win32/org/eclipse/swt/widgets/Shell.java       |    2 +-
 .../win32/org/eclipse/swt/widgets/Spinner.java     |    4 +-
 .../win32/org/eclipse/swt/widgets/Table.java       |    2 +-
 .../win32/org/eclipse/swt/widgets/TableColumn.java |    2 +-
 .../win32/org/eclipse/swt/widgets/TableItem.java   |    8 +-
 .../win32/org/eclipse/swt/widgets/TaskItem.java    |    2 +-
 .../win32/org/eclipse/swt/widgets/Tracker.java     |    2 +-
 .../win32/org/eclipse/swt/widgets/Tree.java        |    2 +-
 .../win32/org/eclipse/swt/widgets/TreeItem.java    |    8 +-
 .../win32/org/eclipse/swt/widgets/Widget.java      |    5 +-
 .../wpf/org/eclipse/swt/graphics/Color.java        |    2 +-
 .../wpf/org/eclipse/swt/graphics/Cursor.java       |    6 +-
 .../wpf/org/eclipse/swt/graphics/Device.java       |    2 +-
 .../wpf/org/eclipse/swt/graphics/Font.java         |    2 +-
 .../wpf/org/eclipse/swt/graphics/FontData.java     |    2 +-
 .../wpf/org/eclipse/swt/graphics/GC.java           |    2 +-
 .../wpf/org/eclipse/swt/graphics/Image.java        |    4 +-
 .../wpf/org/eclipse/swt/graphics/Path.java         |    2 +-
 .../wpf/org/eclipse/swt/graphics/Pattern.java      |    2 +-
 .../wpf/org/eclipse/swt/graphics/Region.java       |    2 +-
 .../wpf/org/eclipse/swt/graphics/TextLayout.java   |   67 +-
 .../wpf/org/eclipse/swt/graphics/Transform.java    |    2 +-
 .../wpf/org/eclipse/swt/widgets/Button.java        |    6 +
 .../wpf/org/eclipse/swt/widgets/Canvas.java        |    2 +-
 .../wpf/org/eclipse/swt/widgets/Combo.java         |    2 +-
 .../wpf/org/eclipse/swt/widgets/Composite.java     |   58 +
 .../wpf/org/eclipse/swt/widgets/Control.java       |   19 +-
 .../wpf/org/eclipse/swt/widgets/Decorations.java   |    2 +-
 .../wpf/org/eclipse/swt/widgets/Display.java       |   28 +-
 .../wpf/org/eclipse/swt/widgets/Link.java          |   12 +
 .../wpf/org/eclipse/swt/widgets/MenuItem.java      |    8 +-
 .../wpf/org/eclipse/swt/widgets/ScrollBar.java     |   39 +-
 .../wpf/org/eclipse/swt/widgets/Shell.java         |    2 +-
 .../wpf/org/eclipse/swt/widgets/Slider.java        |   12 +-
 .../wpf/org/eclipse/swt/widgets/Spinner.java       |    8 +-
 .../wpf/org/eclipse/swt/widgets/TableItem.java     |    6 +-
 .../wpf/org/eclipse/swt/widgets/Text.java          |    2 +-
 .../wpf/org/eclipse/swt/widgets/ToolItem.java      |    6 +
 .../wpf/org/eclipse/swt/widgets/TreeItem.java      |    8 +-
 .../wpf/org/eclipse/swt/widgets/Widget.java        |   28 +-
 eclipse/plugins/org.eclipse.swt/buildFragment.xml  |   12 +-
 .../plugins/org.eclipse.swt/buildnotes_swt.html    |  102 +
 eclipse/plugins/org.eclipse.swt/tasks/build.xml    |   96 +-
 .../plugins/org.eclipse.swt/tasks/properties.xml   |   11 +
 .../org.eclipse.team.core/buildnotes_team.html     |   53 +
 .../src/org/eclipse/team/core/Team.java            |    2 +-
 .../org.eclipse.team.cvs.core/META-INF/MANIFEST.MF |    2 +-
 .../eclipse/team/internal/ccvs/core/CVSTag.java    |   16 +-
 .../ccvs/core/client/listeners/LogListener.java    |   18 +-
 .../ccvs/core/syncinfo/ResourceSyncInfo.java       |    2 +-
 .../org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF |    2 +-
 .../team/internal/ccvs/ssh2/JSchSession.java       |    2 +-
 .../org.eclipse.team.cvs.ui/META-INF/MANIFEST.MF   |    3 +-
 .../team/internal/ccvs/ui/CVSPerspective.java      |   11 +-
 .../ccvs/ui/CommentTemplatesPreferencePage.java    |    2 +-
 .../ui/actions/ShowResourceInHistoryAction.java    |    2 +-
 .../ccvs/ui/mappings/ApplyPatchAction.java         |    4 +-
 .../ui/operations/RepositoryProviderOperation.java |    2 +-
 .../ccvs/ui/subscriber/ApplyPatchAction.java       |    4 +-
 .../internal/ccvs/ui/subscriber/UpdateDialog.java  |    2 +-
 eclipse/plugins/org.eclipse.team.ui/.options       |    5 +-
 .../org.eclipse.team.ui/META-INF/MANIFEST.MF       |    5 +-
 .../plugins/org.eclipse.team.ui/plugin.properties  |    2 +-
 .../eclipse/team/internal/ui/IPreferenceIds.java   |    9 +-
 .../src/org/eclipse/team/internal/ui/Policy.java   |   11 +-
 .../eclipse/team/internal/ui/TeamUIMessages.java   |    6 +
 .../org/eclipse/team/internal/ui/TeamUIPlugin.java |    3 +-
 .../src/org/eclipse/team/internal/ui/Utils.java    |   46 +
 .../team/internal/ui/actions/ApplyPatchAction.java |    4 +-
 .../team/internal/ui/actions/CompareAction.java    |    9 +-
 .../internal/ui/actions/CompareRevisionAction.java |   51 +-
 .../ui/history/CompareFileRevisionEditorInput.java |    7 +-
 .../internal/ui/mapping/CommonViewerAdvisor.java   |   42 +-
 .../internal/ui/mapping/ModelSynchronizePage.java  |    2 +-
 .../ui/mapping/ResourceDragAdapterAssistant.java   |  128 ++
 .../eclipse/team/internal/ui/messages.properties   |    8 +-
 .../ui/preferences/SyncViewerPreferencePage.java   |   12 +-
 .../synchronize/SaveablesCompareEditorInput.java   |  164 ++-
 .../internal/ui/synchronize/SynchronizeView.java   |   20 +-
 .../synchronize/TeamSynchronizingPerspective.java  |    5 +-
 .../synchronize/actions/OpenInCompareAction.java   |   50 +-
 .../ui/synchronize/actions/PasteAction.java        |  153 ++
 .../synchronize/actions/RefactorActionGroup.java   |   11 +-
 .../ui/synchronize/patch/ApplyPatchOperation.java  |  251 +++
 .../patch/ApplyPatchSynchronizationWizard.java     |   23 +-
 .../patch/DiffProjectResourceMapping.java          |    2 +-
 .../patch/FilePatchResourceMapping.java            |    2 +-
 .../ui/synchronize/patch/HunkResourceMapping.java  |    2 +-
 .../synchronize/patch/PatchWorkbenchAdapter.java   |    2 +-
 .../patch/PatchWorkbenchLabelProvider.java         |    2 +-
 .../AbstractSynchronizeLabelProvider.java          |    2 +-
 .../ui/synchronize/SaveableCompareEditorInput.java |   62 +-
 .../jface/text/projection/ProjectionDocument.java  |    2 +-
 eclipse/plugins/org.eclipse.ui.browser/plugin.xml  |   20 +-
 .../org.eclipse.ui.carbon/META-INF/MANIFEST.MF     |    2 +-
 .../fragment-carbon.properties                     |    2 +-
 .../plugins/org.eclipse.ui.cheatsheets/plugin.xml  |    3 +-
 .../org.eclipse.ui.cocoa/META-INF/MANIFEST.MF      |    2 +-
 .../org.eclipse.ui.cocoa/fragment-cocoa.properties |    2 +-
 eclipse/plugins/org.eclipse.ui.console/plugin.xml  |    5 +-
 .../ui/internal/console/ConsoleManager.java        |   12 +-
 .../ui/internal/console/ConsoleMessages.java       |    4 +-
 .../ui/internal/console/ConsoleMessages.properties |    3 +-
 .../texteditor/SourceViewerInformationControl.java |   46 +-
 .../org.eclipse.ui.externaltools/plugin.xml        |    5 +-
 .../META-INF/MANIFEST.MF                           |    1 -
 .../plugin.properties                              |    2 +-
 .../ide/application/ResourcePerspective.java       |   13 +-
 .../eclipse/ui/actions/CloseResourceAction.java    |    2 +-
 .../ui/actions/CopyFilesAndFoldersOperation.java   |   81 +-
 .../org/eclipse/ui/actions/CopyResourceAction.java |    2 +-
 .../dialogs/FilteredResourcesSelectionDialog.java  |   21 +-
 .../org/eclipse/ui/dialogs/NewFolderDialog.java    |    2 +-
 .../ui/dialogs/WizardNewFileCreationPage.java      |   52 +-
 .../ui/dialogs/WizardNewFolderMainPage.java        |   21 +-
 .../icons/full/eview16/pview.gif                   |  Bin 219 -> 339 bytes
 .../plugins/org.eclipse.ui.ide/plugin.properties   |    2 +-
 eclipse/plugins/org.eclipse.ui.ide/plugin.xml      |    7 +-
 .../eclipse/ui/ide/dialogs/ImportTypeDialog.java   |  206 +--
 .../ide/dialogs/PathVariableSelectionDialog.java   |   51 +-
 .../ide/dialogs/UIResourceFilterDescription.java   |    2 +-
 .../ui/internal/ide/IDEPreferenceInitializer.java  |    2 +-
 .../ui/internal/ide/IDEWorkbenchMessages.java      |   17 +-
 .../ui/internal/ide/IDEWorkbenchPlugin.java        |    2 +-
 .../ui/internal/ide/IIDEHelpContextIds.java        |   13 +-
 .../ui/internal/ide/ResourceDragAndDropEditor.java |   34 +-
 .../ui/internal/ide/WorkbenchActionBuilder.java    |    6 +-
 .../ide/dialogs/CreateLinkedResourceGroup.java     |  100 +-
 .../ide/dialogs/FileSystemSelectionArea.java       |    9 +-
 .../internal/ide/dialogs/LinkedResourceEditor.java |   61 +-
 .../ide/dialogs/LinkedResourcesPreferencePage.java |    8 +-
 .../internal/ide/dialogs/PathVariableDialog.java   |   49 +-
 .../internal/ide/dialogs/PathVariablesGroup.java   |   22 +
 .../ide/dialogs/ProjectLinkedResourcePage.java     |    2 +
 .../ide/dialogs/RelativePathVariableGroup.java     |   17 +-
 .../ide/dialogs/ResourceFilterEditDialog.java      |   30 +-
 .../internal/ide/dialogs/ResourceFilterGroup.java  |  707 ++++---
 .../internal/ide/dialogs/ResourceFilterPage.java   |   18 +-
 .../ui/internal/ide/dialogs/ResourceInfoPage.java  |    7 +-
 .../ide/dialogs/ResourceTreeAndListGroup.java      |   39 +-
 .../ide/dialogs/ResourceWorkingSetPage.java        |    2 +-
 .../eclipse/ui/internal/ide/messages.properties    |   37 +-
 .../ui/internal/ide/misc/AndResourceFilter.java    |   10 +
 .../ide/misc/FileInfoAttributesMatcher.java        |    2 +-
 .../internal/ide/misc/StringFileInfoMatcher.java   |    4 +
 .../ui/internal/ide/undo/ContainerDescription.java |    2 +-
 .../ui/internal/ide/undo/FolderDescription.java    |    2 +-
 .../eclipse/ui/internal/ide/undo/UndoMessages.java |    2 +-
 .../ui/internal/ide/undo/messages.properties       |    2 +-
 .../CompatibilityMarkerFieldFilterGroup.java       |    2 +-
 .../internal/views/markers/DeltaMarkerEntry.java   |    2 +-
 .../views/markers/ExtendedMarkersView.java         |    2 +-
 .../internal/views/markers/GroupsContribution.java |    2 +-
 .../views/markers/MarkerCompletionField.java       |    2 +-
 .../views/markers/MarkerContentGenerator.java      |    2 +-
 .../views/markers/MarkerDescriptionField.java      |    5 +-
 .../views/markers/MarkerFieldFilterGroup.java      |   15 +-
 .../views/markers/MarkerPriorityField.java         |    2 +-
 .../ui/internal/views/markers/MarkerSortUtil.java  |    2 +-
 .../ui/internal/views/markers/MockMarkerEntry.java |   10 +
 .../ui/internal/views/markers/QuickFixHandler.java |    2 +-
 .../views/markers/SortFieldContribution.java       |    2 +-
 .../views/markers/TypesConfigurationArea.java      |    2 +-
 .../ui/internal/views/markers/UIUpdateJob.java     |    2 +-
 .../datatransfer/ArchiveFileExportOperation.java   |    2 +-
 .../wizards/datatransfer/DataTransferMessages.java |    9 +-
 .../datatransfer/MinimizedFileSystemElement.java   |    2 +-
 .../WizardFileSystemResourceImportPage1.java       |  332 ++-
 .../wizards/datatransfer/messages.properties       |    9 +-
 .../wizards/newresource/ResourceMessages.java      |    2 +-
 .../wizards/newresource/messages.properties        |    2 +-
 .../markers/internal/MarkerSupportRegistry.java    |    2 +-
 .../ui/views/markers/internal/messages.properties  |    2 +-
 .../ui/views/navigator/NavigatorDropAdapter.java   |   63 +-
 .../ui/wizards/datatransfer/ImportOperation.java   |   10 -
 .../introContent.xml                               |   17 +-
 .../org.eclipse.ui.intro.universal/plugin.xml      |   17 +-
 .../themes/slate/html/font-relative.css            |    6 +-
 eclipse/plugins/org.eclipse.ui.intro/plugin.xml    |    3 +-
 .../META-INF/MANIFEST.MF                           |    4 +-
 .../plugin.properties                              |    4 +-
 .../org.eclipse.ui.navigator.resources/plugin.xml  |    9 +
 .../resources/actions/EditActionGroup.java         |    2 +-
 .../resources/actions/OpenActionProvider.java      |    4 +-
 .../resources/actions/RefactorActionGroup.java     |    2 +-
 .../actions/WorkingSetActionProvider.java          |  168 +-
 .../actions/WorkingSetRootModeActionGroup.java     |   47 +-
 .../TabbedPropertySheetAdapterFactory.java         |    2 +-
 .../ui/navigator/resources/ProjectExplorer.java    |   54 +-
 .../resources/ResourceDropAdapterAssistant.java    |  165 +-
 .../schema/navigatorContent.exsd                   |    9 +-
 .../navigator/CommonNavigatorMessages.java         |    2 +-
 .../internal/navigator/ContributorTrackingSet.java |   38 +-
 .../ui/internal/navigator/CustomAndExpression.java |    6 +-
 .../navigator/NavigatorActivationService.java      |    2 +-
 .../navigator/NavigatorContentService.java         |  175 +-
 .../NavigatorContentServiceContentProvider.java    |  258 ++-
 .../NavigatorContentServiceLabelProvider.java      |    2 +-
 .../internal/navigator/NavigatorFilterService.java |  160 +-
 .../navigator/NavigatorPipelineService.java        |  285 +--
 .../ui/internal/navigator/NavigatorPlugin.java     |   12 +
 .../internal/navigator/NavigatorSafeRunnable.java  |   74 +
 .../actions/CommonActionProviderDescriptor.java    |   29 +-
 .../navigator/actions/LinkEditorAction.java        |   49 +-
 .../navigator/dnd/CommonDropAdapterDescriptor.java |   21 +-
 .../navigator/dnd/CommonDropDescriptorManager.java |    2 +-
 .../ui/internal/navigator/extensions/Binding.java  |    2 +-
 .../extensions/CommonDragAssistantDescriptor.java  |   23 +-
 .../INavigatorContentExtPtConstants.java           |    5 +-
 .../navigator/extensions/LinkHelperDescriptor.java |   18 +-
 .../navigator/extensions/LinkHelperManager.java    |   28 +-
 .../extensions/NavigatorContentDescriptor.java     |    7 +
 .../NavigatorContentDescriptorManager.java         |   20 +-
 .../extensions/NavigatorContentExtension.java      |  187 +-
 .../extensions/NavigatorViewerDescriptor.java      |    2 +-
 .../NavigatorViewerDescriptorManager.java          |    2 +-
 .../SafeDelegateTreeContentProvider.java           |   23 +-
 .../extensions/StructuredViewerManager.java        |   49 +-
 .../filters/CommonFilterContentProvider.java       |    8 +-
 .../navigator/filters/CommonFilterDescriptor.java  |   67 +-
 .../filters/CommonFilterDescriptorManager.java     |   42 +-
 .../filters/CommonFilterSelectionDialog.java       |    2 +-
 .../ui/internal/navigator/messages.properties      |    2 +-
 .../navigator/sorters/CommonSorterDescriptor.java  |   19 +-
 .../sorters/CommonSorterDescriptorManager.java     |    2 +-
 .../navigator/sorters/NavigatorSorterService.java  |    2 +-
 .../wizards/CommonWizardDescriptorManager.java     |   68 +-
 .../eclipse/ui/navigator/CommonDragAdapter.java    |  124 +-
 .../eclipse/ui/navigator/CommonDropAdapter.java    |  103 +-
 .../org/eclipse/ui/navigator/CommonNavigator.java  |   17 +-
 .../ui/navigator/CommonNavigatorManager.java       |   25 +-
 .../src/org/eclipse/ui/navigator/CommonViewer.java |    2 +-
 .../eclipse/ui/navigator/CommonViewerSorter.java   |    2 +-
 .../ui/navigator/INavigatorContentDescriptor.java  |    2 +-
 .../ui/navigator/INavigatorFilterService.java      |    2 +-
 .../ui/navigator/INavigatorPipelineService.java    |    2 +-
 .../ui/navigator/INavigatorViewerDescriptor.java   |    2 +-
 .../navigator/IPipelinedTreeContentProvider.java   |    6 +-
 .../ui/navigator/NavigatorActionService.java       |  132 +-
 .../ui/navigator/PipelinedShapeModification.java   |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../views/properties/PinPropertySheetAction.java   |    6 +-
 .../org.eclipse.ui.win32/META-INF/MANIFEST.MF      |    2 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../eclipse/ui/texteditor/AbstractTextEditor.java  |    2 +-
 .../org/eclipse/ui/texteditor/GotoLineAction.java  |  123 +-
 .../templates/TemplatePreferencePage.java          |    4 +-
 .../Eclipse UI/org/eclipse/ui/IMemento.java        |   40 +-
 .../Eclipse UI/org/eclipse/ui/IWorkbench.java      |    2 +-
 .../ui/actions/NewWizardDropDownAction.java        |   10 +-
 .../eclipse/ui/application/WorkbenchAdvisor.java   |    4 +-
 .../org/eclipse/ui/dialogs/SearchPattern.java      |    2 +-
 .../fieldassist/ContentAssistCommandAdapter.java   |   24 +-
 .../ui/handlers/ShowPerspectiveHandler.java        |    2 +-
 .../org/eclipse/ui/handlers/ShowViewHandler.java   |    2 +-
 .../eclipse/ui/internal/ActivateEditorHandler.java |    2 +-
 .../ui/internal/ChangeToPerspectiveMenu.java       |    2 +-
 .../ui/internal/DefaultAnimationFeedback.java      |    2 +-
 .../org/eclipse/ui/internal/EditorActionBars.java  |    2 +-
 .../eclipse/ui/internal/EditorAreaTrimToolBar.java |    2 +-
 .../org/eclipse/ui/internal/EditorHistory.java     |    2 +-
 .../org/eclipse/ui/internal/EditorHistoryItem.java |    2 +-
 .../org/eclipse/ui/internal/EditorReference.java   |    2 +-
 .../internal/EditorSiteDragAndDropServiceImpl.java |    2 +-
 .../org/eclipse/ui/internal/FastViewManager.java   |   11 +-
 .../ui/internal/IWorkbenchHelpContextIds.java      |    8 +-
 .../org/eclipse/ui/internal/JFaceUtil.java         |    2 +-
 .../org/eclipse/ui/internal/PartStack.java         |    2 +-
 .../org/eclipse/ui/internal/Perspective.java       |    6 +-
 .../eclipse/ui/internal/PerspectiveSwitcher.java   |    2 +-
 .../org/eclipse/ui/internal/PluginActionSet.java   |    2 +-
 .../ui/internal/PluginActionSetBuilder.java        |    2 +-
 .../org/eclipse/ui/internal/ProductInfo.java       |   33 +-
 .../eclipse/ui/internal/RectangleAnimation.java    |    2 +-
 .../org/eclipse/ui/internal/ShowInHandler.java     |    2 +-
 .../org/eclipse/ui/internal/ShowInMenu.java        |    2 +-
 .../org/eclipse/ui/internal/ShowViewMenu.java      |    2 +-
 .../org/eclipse/ui/internal/UILockListener.java    |    2 +-
 .../org/eclipse/ui/internal/ViewFactory.java       |    2 +-
 .../eclipse/ui/internal/ViewIntroAdapterPart.java  |    4 +-
 .../org/eclipse/ui/internal/ViewReference.java     |    2 +-
 .../org/eclipse/ui/internal/Workbench.java         |  129 +-
 .../org/eclipse/ui/internal/WorkbenchImages.java   |    2 +-
 .../eclipse/ui/internal/WorkbenchIntroManager.java |    2 +-
 .../org/eclipse/ui/internal/WorkbenchPlugin.java   |   13 +
 .../ui/internal/WorkbenchWindowConfigurer.java     |    2 +-
 .../org/eclipse/ui/internal/WorkingSetManager.java |    2 +-
 .../eclipse/ui/internal/about/AboutBundleData.java |    2 +-
 .../ui/internal/about/AboutFeaturesPage.java       |    7 +-
 .../ui/internal/about/BundleSigningInfo.java       |    2 +-
 .../browser/DefaultWorkbenchBrowserSupport.java    |    2 +-
 .../internal/decorators/DecoratorDefinition.java   |    2 +-
 .../ui/internal/decorators/DecoratorManager.java   |    2 +-
 .../eclipse/ui/internal/dialogs/AboutDialog.java   |    7 +-
 .../dialogs/CustomizePerspectiveDialog.java        |    5 +-
 .../internal/dialogs/FilteredPreferenceDialog.java |    2 +-
 .../ui/internal/dialogs/ImportExportPage.java      |    2 +-
 .../org/eclipse/ui/internal/dialogs/NewWizard.java |    2 +-
 .../ui/internal/dialogs/NewWizardNewPage.java      |    2 +-
 .../dialogs/PerspectivesPreferencePage.java        |    2 +-
 .../dialogs/PreferenceBoldLabelProvider.java       |    2 +-
 .../internal/dialogs/SelectPerspectiveDialog.java  |    2 +-
 .../ui/internal/dialogs/ShowViewDialog.java        |    2 +-
 .../ui/internal/dialogs/StartupPreferencePage.java |    2 +-
 .../ui/internal/dialogs/ViewLabelProvider.java     |    2 +-
 .../dialogs/WorkingSetSelectionDialog.java         |   66 +-
 .../internal/handlers/ClosePerspectiveHandler.java |    2 +-
 .../handlers/ShowPreferencePageHandler.java        |    2 +-
 .../eclipse/ui/internal/handlers/SpyHandler.java   |   10 +
 .../ui/internal/handlers/TraversePageHandler.java  |    2 +-
 .../ui/internal/handlers/WidgetMethodHandler.java  |    2 +-
 .../ui/internal/handlers/WizardHandler.java        |    2 +-
 .../internal/keys/AbstractKeyFormatter.properties  |    2 +-
 .../eclipse/ui/internal/keys/KeyAssistDialog.java  |    2 +-
 .../eclipse/ui/internal/keys/MacKeyFormatter.java  |    3 +-
 .../ui/internal/keys/NativeKeyFormatter.java       |    3 +-
 .../ui/internal/keys/WorkbenchKeyboard.java        |    2 +-
 .../menus/InternalControlContribution.java         |    2 +-
 .../ui/internal/menus/LegacyActionPersistence.java |    2 +-
 .../ui/internal/menus/TrimContributionManager.java |    2 +-
 .../WorkbenchPreferenceExtensionNode.java          |    2 +-
 .../defaultpresentation/DefaultTabItem.java        |    2 +-
 .../ui/internal/presentations/util/PartInfo.java   |    2 +-
 .../ui/internal/progress/BlockedJobsDialog.java    |    2 +-
 .../internal/progress/DetailedProgressViewer.java  |    2 +-
 .../eclipse/ui/internal/progress/ErrorInfo.java    |    2 +-
 .../eclipse/ui/internal/progress/GroupInfo.java    |    2 +-
 .../org/eclipse/ui/internal/progress/JobInfo.java  |    2 +-
 .../ui/internal/progress/JobTreeElement.java       |    2 +-
 .../internal/progress/ProgressAnimationItem.java   |    2 +-
 .../ui/internal/progress/ProgressInfoItem.java     |    6 +-
 .../eclipse/ui/internal/progress/ProgressView.java |    2 +-
 .../eclipse/ui/internal/progress/SubTaskInfo.java  |    2 +-
 .../progress/WorkbenchSiteProgressService.java     |    2 +-
 .../ui/internal/quickaccess/CommandElement.java    |   25 +-
 .../ui/internal/quickaccess/QuickAccessDialog.java |    2 +-
 .../internal/quickaccess/QuickAccessElement.java   |   20 -
 .../ui/internal/quickaccess/QuickAccessEntry.java  |   31 +-
 .../ui/internal/registry/EditorRegistry.java       |    2 +-
 .../internal/registry/PerspectiveDescriptor.java   |    2 +-
 .../services/SourcePriorityNameMapping.java        |    2 +-
 .../internal/services/WorkbenchSourceProvider.java |   17 +-
 .../statushandlers/IStatusDialogConstants.java     |    2 +-
 .../statushandlers/StackTraceSupportArea.java      |    2 +-
 .../org/eclipse/ui/internal/util/Util.java         |    2 +-
 .../preferences/WizardPreferencesExportPage1.java  |   17 +-
 .../preferences/WizardPreferencesImportPage1.java  |   17 +-
 .../ui/menus/ExtensionContributionFactory.java     |    2 +-
 .../Eclipse UI/org/eclipse/ui/menus/MenuUtil.java  |    2 +-
 .../org/eclipse/ui/part/MultiPageEditorPart.java   |    2 +-
 .../org/eclipse/ui/part/MultiPageEditorSite.java   |    2 +-
 .../org/eclipse/ui/part/PageBookView.java          |   18 +-
 .../org/eclipse/ui/plugin/AbstractUIPlugin.java    |    2 +-
 .../ui/progress/IWorkbenchSiteProgressService.java |    2 +-
 .../statushandlers/AbstractStatusAreaProvider.java |    2 +-
 .../org.eclipse.ui/buildnotes_workbench.html       |  142 ++
 .../icons/full/ovr16/running_ovr.gif               |  Bin 0 -> 171 bytes
 .../icons/full/progress/progress_error.gif         |  Bin 375 -> 577 bytes
 .../icons/full/progress/progress_none.gif          |  Bin 219 -> 342 bytes
 .../icons/full/progress/progress_ok.gif            |  Bin 265 -> 328 bytes
 .../icons/full/progress/progress_task.gif          |  Bin 200 -> 316 bytes
 .../org.eclipse.ui/icons/full/progress/pview.gif   |  Bin 219 -> 339 bytes
 eclipse/plugins/org.eclipse.ui/plugin.properties   |    2 +-
 .../plugins/org.eclipse.ui/schema/keywords.exsd    |   17 +-
 .../update/configurator/ConfiguratorUtils.java     |    6 +-
 .../configurator/IPlatformConfiguration.java       |    6 +-
 .../IPlatformConfigurationFactory.java             |    6 +-
 .../configurator/BundleGroupComponent.java         |    9 +-
 .../configurator/ConfigurationActivator.java       |   14 +-
 .../internal/configurator/ConfigurationParser.java |    6 +-
 .../configurator/PlatformConfiguration.java        |    2 +-
 .../update/internal/configurator/Utils.java        |    6 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../org.eclipse.update.core.linux/src/update.c     |    4 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 .../src/make_ia64.bat                              |    2 +-
 eclipse/plugins/org.eclipse.update.core/plugin.xml |    7 +-
 .../eclipse/update/configuration/IActivity.java    |    6 +-
 .../update/configuration/IConfiguredSite.java      |    6 +-
 .../IConfiguredSiteChangedListener.java            |    6 +-
 .../configuration/IInstallConfiguration.java       |    6 +-
 .../IInstallConfigurationChangedListener.java      |    6 +-
 .../update/configuration/IInstallDeltaHandler.java |    5 +-
 .../eclipse/update/configuration/ILocalSite.java   |    6 +-
 .../configuration/ILocalSiteChangedListener.java   |    6 +-
 .../configuration/ILocalSystemInfoListener.java    |    6 +-
 .../update/configuration/IProblemHandler.java      |    6 +-
 .../update/configuration/ISessionDelta.java        |    3 +-
 .../org/eclipse/update/configuration/IVolume.java  |    6 +-
 .../update/configuration/LocalSystemInfo.java      |    6 +-
 .../org/eclipse/update/configuration/package.html  |    6 +-
 .../org/eclipse/update/core/ArchiveReference.java  |    6 +-
 .../eclipse/update/core/BaseFeatureFactory.java    |    6 +-
 .../eclipse/update/core/BaseInstallHandler.java    |    6 +-
 .../org/eclipse/update/core/BaseSiteFactory.java   |    6 +-
 .../src/org/eclipse/update/core/Category.java      |    6 +-
 .../org/eclipse/update/core/ContentReference.java  |    6 +-
 .../src/org/eclipse/update/core/Feature.java       |    4 +-
 .../update/core/FeatureContentProvider.java        |    6 +-
 .../org/eclipse/update/core/FeatureReference.java  |    6 +-
 .../org/eclipse/update/core/IArchiveReference.java |    6 +-
 .../src/org/eclipse/update/core/ICategory.java     |    6 +-
 .../org/eclipse/update/core/IContentConsumer.java  |    6 +-
 .../src/org/eclipse/update/core/IFeature.java      |    4 +-
 .../update/core/IFeatureContentConsumer.java       |    6 +-
 .../update/core/IFeatureContentProvider.java       |    6 +-
 .../org/eclipse/update/core/IFeatureFactory.java   |    6 +-
 .../org/eclipse/update/core/IFeatureReference.java |    6 +-
 .../src/org/eclipse/update/core/IImport.java       |    6 +-
 .../update/core/IIncludedFeatureReference.java     |    6 +-
 .../org/eclipse/update/core/IInstallHandler.java   |    6 +-
 .../eclipse/update/core/IInstallHandlerEntry.java  |    6 +-
 .../update/core/IInstallHandlerWithFilter.java     |    6 +-
 .../org/eclipse/update/core/INonPluginEntry.java   |    6 +-
 .../eclipse/update/core/IPlatformEnvironment.java  |    6 +-
 .../src/org/eclipse/update/core/IPluginEntry.java  |    6 +-
 .../src/org/eclipse/update/core/ISite.java         |    6 +-
 .../eclipse/update/core/ISiteContentProvider.java  |    6 +-
 .../src/org/eclipse/update/core/ISiteFactory.java  |    6 +-
 .../eclipse/update/core/ISiteFactoryExtension.java |    6 +-
 .../eclipse/update/core/ISiteFeatureReference.java |    6 +-
 .../org/eclipse/update/core/ISiteWithMirrors.java  |    8 +-
 .../src/org/eclipse/update/core/IURLEntry.java     |    6 +-
 .../org/eclipse/update/core/IUpdateConstants.java  |    6 +-
 .../eclipse/update/core/IVerificationListener.java |    6 +-
 .../eclipse/update/core/IVerificationResult.java   |    6 +-
 .../src/org/eclipse/update/core/IVerifier.java     |    6 +-
 .../src/org/eclipse/update/core/Import.java        |    6 +-
 .../update/core/IncludedFeatureReference.java      |    6 +-
 .../eclipse/update/core/InstallHandlerEntry.java   |    6 +-
 .../org/eclipse/update/core/InstallMonitor.java    |    6 +-
 .../eclipse/update/core/JarContentReference.java   |    6 +-
 .../update/core/JarEntryContentReference.java      |    6 +-
 .../org/eclipse/update/core/NonPluginEntry.java    |    6 +-
 .../src/org/eclipse/update/core/PluginEntry.java   |    6 +-
 .../src/org/eclipse/update/core/Site.java          |    6 +-
 .../eclipse/update/core/SiteContentProvider.java   |    6 +-
 .../eclipse/update/core/SiteFeatureReference.java  |    6 +-
 .../update/core/SiteFeatureReferenceModel.java     |    6 +-
 .../src/org/eclipse/update/core/SiteManager.java   |    6 +-
 .../src/org/eclipse/update/core/URLEntry.java      |    6 +-
 .../src/org/eclipse/update/core/Utilities.java     |    6 +-
 .../src/org/eclipse/update/core/Verifier.java      |    6 +-
 .../eclipse/update/core/VersionedIdentifier.java   |    6 +-
 .../update/core/model/ArchiveReferenceModel.java   |    6 +-
 .../eclipse/update/core/model/CategoryModel.java   |    6 +-
 .../update/core/model/ContentEntryModel.java       |    6 +-
 .../update/core/model/DefaultFeatureParser.java    |    6 +-
 .../update/core/model/DefaultSiteParser.java       |    6 +-
 .../eclipse/update/core/model/FeatureModel.java    |    4 +-
 .../update/core/model/FeatureModelFactory.java     |    6 +-
 .../update/core/model/FeatureReferenceModel.java   |    6 +-
 .../org/eclipse/update/core/model/ImportModel.java |    6 +-
 .../core/model/IncludedFeatureReferenceModel.java  |    6 +-
 .../update/core/model/InstallAbortedException.java |    6 +-
 .../core/model/InstallHandlerEntryModel.java       |    6 +-
 .../core/model/InvalidSiteTypeException.java       |    6 +-
 .../org/eclipse/update/core/model/ModelObject.java |    6 +-
 .../update/core/model/NonPluginEntryModel.java     |    8 +-
 .../update/core/model/PluginEntryModel.java        |    6 +-
 .../org/eclipse/update/core/model/SiteModel.java   |    6 +-
 .../update/core/model/SiteModelFactory.java        |    6 +-
 .../eclipse/update/core/model/URLEntryModel.java   |    6 +-
 .../src/org/eclipse/update/core/model/package.html |    4 +
 .../src/org/eclipse/update/core/package.html       |    4 +
 .../internal/core/InternalFeatureParser.java       |    2 +-
 .../eclipse/update/operations/IBatchOperation.java |    6 +-
 .../update/operations/IConfigFeatureOperation.java |    6 +-
 .../update/operations/IFeatureOperation.java       |    6 +-
 .../operations/IInstallFeatureOperation.java       |    6 +-
 .../org/eclipse/update/operations/IOperation.java  |    6 +-
 .../update/operations/IOperationFactory.java       |    6 +-
 .../update/operations/IOperationListener.java      |    6 +-
 .../update/operations/IOperationValidator.java     |    6 +-
 .../IReplaceFeatureVersionOperation.java           |    6 +-
 .../operations/IRevertConfigurationOperation.java  |    6 +-
 .../update/operations/IToggleSiteOperation.java    |    6 +-
 .../operations/IUnconfigFeatureOperation.java      |    6 +-
 .../operations/IUninstallFeatureOperation.java     |    6 +-
 .../operations/IUpdateModelChangedListener.java    |    6 +-
 .../update/operations/OperationsManager.java       |    6 +-
 .../src/org/eclipse/update/operations/package.html |    6 +-
 .../org/eclipse/update/search/BackLevelFilter.java |    6 +-
 .../src/org/eclipse/update/search/BaseFilter.java  |    6 +-
 .../eclipse/update/search/EnvironmentFilter.java   |    6 +-
 .../update/search/IQueryUpdateSiteAdapter.java     |    6 +-
 .../update/search/IUpdateSearchCategory.java       |    6 +-
 .../eclipse/update/search/IUpdateSearchFilter.java |    6 +-
 .../eclipse/update/search/IUpdateSearchQuery.java  |    6 +-
 .../search/IUpdateSearchResultCollector.java       |    6 +-
 .../IUpdateSearchResultCollectorFromMirror.java    |    6 +-
 .../eclipse/update/search/IUpdateSearchSite.java   |    6 +-
 .../eclipse/update/search/IUpdateSiteAdapter.java  |    6 +-
 .../eclipse/update/search/UpdateSearchRequest.java |    6 +-
 .../eclipse/update/search/UpdateSearchScope.java   |    6 +-
 .../update/search/VersionedIdentifiersFilter.java  |    6 +-
 .../src/org/eclipse/update/search/package.html     |    7 +-
 .../eclipse/update/standalone/AddSiteCommand.java  |    6 +-
 .../org/eclipse/update/standalone/CmdLineArgs.java |    6 +-
 .../eclipse/update/standalone/DisableCommand.java  |    6 +-
 .../eclipse/update/standalone/EnableCommand.java   |    6 +-
 .../eclipse/update/standalone/InstallCommand.java  |    6 +-
 .../update/standalone/ListFeaturesCommand.java     |    6 +-
 .../update/standalone/RemoveSiteCommand.java       |    6 +-
 .../eclipse/update/standalone/ScriptedCommand.java |    6 +-
 .../eclipse/update/standalone/SearchCommand.java   |    6 +-
 .../standalone/StandaloneUpdateApplication.java    |    6 +-
 .../update/standalone/UninstallCommand.java        |    6 +-
 .../eclipse/update/standalone/UpdateCommand.java   |    6 +-
 .../src/org/eclipse/update/standalone/package.html |    6 +-
 .../META-INF/MANIFEST.MF                           |    2 +-
 eclipse/plugins/org.eclipse.update.ui/plugin.xml   |    7 +-
 .../src/org/eclipse/update/ui/UpdateJob.java       |    3 +-
 .../src/org/eclipse/update/ui/UpdateManagerUI.java |    3 +-
 eclipse/plugins/org.junit4/about.html              |    2 +-
 .../META-INF/ECLIPSEF.RSA                          |  Bin 5637 -> 0 bytes
 .../META-INF/ECLIPSEF.SF                           |   20 -
 .../META-INF/MANIFEST.MF                           |   29 -
 .../plugin.properties                              |   13 -
 .../META-INF/ECLIPSEF.RSA                          |  Bin 0 -> 5639 bytes
 .../META-INF/ECLIPSEF.SF                           |   20 +
 .../META-INF/MANIFEST.MF                           |   29 +
 .../META-INF/eclipse.inf                           |    0
 .../about.html                                     |    0
 .../about_files/cpl-v10.html                       |    0
 .../plugin.properties                              |   13 +
 .../META-INF/ECLIPSEF.RSA                          |  Bin 5637 -> 0 bytes
 .../META-INF/ECLIPSEF.SF                           |   20 -
 .../META-INF/MANIFEST.MF                           |   46 -
 .../plugin.properties                              |   13 -
 .../META-INF/ECLIPSEF.RSA                          |  Bin 0 -> 5639 bytes
 .../META-INF/ECLIPSEF.SF                           |   20 +
 .../META-INF/MANIFEST.MF                           |   46 +
 .../META-INF/eclipse.inf                           |    0
 .../about.html                                     |    0
 .../about_files/cpl-v10.html                       |    0
 .../plugin.properties                              |   13 +
 3042 files changed, 45227 insertions(+), 23168 deletions(-)

diff --git a/eclipse/directory.txt b/eclipse/directory.txt
index 5c4e1cd..0308d75 100644
--- a/eclipse/directory.txt
+++ b/eclipse/directory.txt
@@ -1,207 +1,204 @@
 !***************  ANT CONTRIBUTION  ******************************************************** 
 
 #plugin at org.apache.ant=v20070416,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.core=v20091118,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.launching=v20091204,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.core=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.launching=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ant.ui=v20100325,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.ui=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.externaltools=v20100201,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.externaltools=v20091204,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.externaltools=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.externaltools=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 plugin at org.eclipse.ant.tests.core=v20091214,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.tests.ui=v20091214,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.tests.ui=v20100602-1000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  COMPARE CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.compare=I20100414-1020,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare
-plugin at org.eclipse.compare.core=I20100330-0755,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.core
-plugin at org.eclipse.compare.win32=I20090430-0408,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.win32
+plugin at org.eclipse.compare=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare
+plugin at org.eclipse.compare.core=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.core
+plugin at org.eclipse.compare.win32=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.win32
 
-plugin at org.eclipse.compare.examples=v20060606,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.compare.examples.xml=I20090714-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.compare.examples=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.compare.examples.xml=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.compare.tests=I20100302-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.compare.tests=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  CORE (HP-UX) CONTRIBUTION  ************************************************ 
 
-fragment at org.eclipse.core.filesystem.hpux.ia64_32=v20080604-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.hpux.ia64_32=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  CORE (MacOSX) CONTRIBUTION  ************************************************ 
 
-fragment at org.eclipse.core.filesystem.macosx=v20100216-0700,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-!***************  CORE (QNX) CONTRIBUTION  *************************************************** 
-
-fragment at org.eclipse.core.filesystem.qnx.x86=v20080604-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.macosx=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  CORE VARIABLES CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.core.variables=v20090911,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.variables=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  CORE CONTRIBUTION  ******************************************************** 
 
 !**** OSGi
-plugin at org.eclipse.osgi=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi
-plugin at org.eclipse.osgi.services=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.services
-plugin at org.eclipse.osgi.util=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.util
+plugin at org.eclipse.osgi=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi
+plugin at org.eclipse.osgi.services=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.services
+plugin at org.eclipse.osgi.util=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.util
 
 !**** Equinox
-plugin at org.eclipse.equinox.common=v20100315,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.common
-plugin at org.eclipse.equinox.preferences=v20100307,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.preferences
-plugin at org.eclipse.equinox.registry=v20100301,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.registry
-plugin at org.eclipse.equinox.supplement=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi/supplement
-plugin at org.eclipse.equinox.app=v20100304,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.app
-plugin at org.eclipse.equinox.device=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.device
-plugin at org.eclipse.equinox.event=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.event
-plugin at org.eclipse.equinox.http=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http
-plugin at org.eclipse.equinox.log=v20100329,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.log
-plugin at org.eclipse.equinox.metatype=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.metatype
-plugin at org.eclipse.equinox.useradmin=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.useradmin
-plugin at org.eclipse.equinox.http.jetty,2.0.0=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6
-plugin at org.eclipse.equinox.http.jetty,1.1.100=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty5
-plugin at org.eclipse.equinox.http.servlet=v20100201,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.servlet
-plugin at org.eclipse.equinox.http.servletbridge=v20091020,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.servletbridge
-plugin at org.eclipse.equinox.http.registry=v20100307,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.registry
-plugin at org.eclipse.equinox.servletbridge=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge
-fragment at org.eclipse.equinox.servletbridge.extensionbundle=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge.extensionbundle
-bundle at org.eclipse.equinox.jsp.jasper=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper
-bundle at org.eclipse.equinox.jsp.jasper.registry=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper.registry
-plugin at org.eclipse.equinox.cm=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.cm
-plugin at org.eclipse.equinox.concurrent=v20100215,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.concurrent
+plugin at org.eclipse.equinox.common=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.common
+plugin at org.eclipse.equinox.preferences=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.preferences
+plugin at org.eclipse.equinox.registry=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.registry
+plugin at org.eclipse.equinox.supplement=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi/supplement
+plugin at org.eclipse.equinox.app=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.app
+plugin at org.eclipse.equinox.device=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.device
+plugin at org.eclipse.equinox.event=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.event
+plugin at org.eclipse.equinox.http=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http
+plugin at org.eclipse.equinox.log=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.log
+plugin at org.eclipse.equinox.metatype=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.metatype
+plugin at org.eclipse.equinox.useradmin=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.useradmin
+plugin at org.eclipse.equinox.http.jetty,2.0.0=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6
+plugin at org.eclipse.equinox.http.jetty,1.1.100=v20100519,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty5
+plugin at org.eclipse.equinox.http.servlet=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.servlet
+plugin at org.eclipse.equinox.http.servletbridge=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.servletbridge
+plugin at org.eclipse.equinox.http.registry=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.registry
+plugin at org.eclipse.equinox.servletbridge=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge
+fragment at org.eclipse.equinox.servletbridge.extensionbundle=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge.extensionbundle
+bundle at org.eclipse.equinox.jsp.jasper=v20100421,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper
+bundle at org.eclipse.equinox.jsp.jasper.registry=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper.registry
+plugin at org.eclipse.equinox.cm=v20100520,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.cm
+plugin at org.eclipse.equinox.concurrent=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.concurrent
 
 !**** Prosyst Contributions
-plugin at org.eclipse.equinox.ds=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ds
-plugin at org.eclipse.equinox.io=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.io
-plugin at org.eclipse.equinox.ip=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ip
-plugin at org.eclipse.equinox.util=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.util
-plugin at org.eclipse.equinox.wireadmin=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.wireadmin
+plugin at org.eclipse.equinox.ds=v20100507,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ds
+plugin at org.eclipse.equinox.io=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.io
+plugin at org.eclipse.equinox.ip=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ip
+plugin at org.eclipse.equinox.util=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.util
+plugin at org.eclipse.equinox.wireadmin=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.wireadmin
 
 !**** Security Contributions
-plugin at org.eclipse.equinox.security=v20100301,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security
+plugin at org.eclipse.equinox.security=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security
 plugin at org.eclipse.equinox.security.tests=v20080722-0430,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.tests
-plugin at org.eclipse.equinox.security.ui=v20090928,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.ui
-fragment at org.eclipse.equinox.security.win32.x86=v20090520-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.win32.x86
-fragment at org.eclipse.equinox.security.macosx=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.macosx
+plugin at org.eclipse.equinox.security.ui=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.ui
+fragment at org.eclipse.equinox.security.win32.x86=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.win32.x86
+fragment at org.eclipse.equinox.security.macosx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.macosx
 
 !**** Transforms
-plugin at org.eclipse.equinox.transforms.xslt=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.xslt
-fragment at org.eclipse.equinox.transforms.hook=v20100329,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.hook
+plugin at org.eclipse.equinox.transforms.xslt=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.xslt
+fragment at org.eclipse.equinox.transforms.hook=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.hook
 
 !**** Weaving
-plugin at org.eclipse.equinox.weaving.aspectj=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.aspectj
-plugin at org.eclipse.equinox.weaving.caching=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching
-plugin at org.eclipse.equinox.weaving.caching.j9=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching.j9
-fragment at org.eclipse.equinox.weaving.hook=v20100108,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.hook
+plugin at org.eclipse.equinox.weaving.aspectj=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.aspectj
+plugin at org.eclipse.equinox.weaving.caching=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching
+plugin at org.eclipse.equinox.weaving.caching.j9=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching.j9
+fragment at org.eclipse.equinox.weaving.hook=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.hook
 
 !****launcher, startup.jar
-plugin at org.eclipse.equinox.launcher=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher
-fragment at org.eclipse.equinox.launcher.win32.win32.x86=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86
-fragment at org.eclipse.equinox.launcher.win32.win32.x86_64=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64
+plugin at org.eclipse.equinox.launcher=v20100507,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher
+fragment at org.eclipse.equinox.launcher.win32.win32.x86=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86
+fragment at org.eclipse.equinox.launcher.win32.win32.x86_64=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64
 fragment at org.eclipse.equinox.launcher.win32.win32.ia64=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64
 fragment at org.eclipse.equinox.launcher.wpf.win32.x86=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86
-fragment at org.eclipse.equinox.launcher.carbon.macosx=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx
-fragment at org.eclipse.equinox.launcher.cocoa.macosx=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx
-fragment at org.eclipse.equinox.launcher.cocoa.macosx.x86_64=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64
-fragment at org.eclipse.equinox.launcher.gtk.linux.x86=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86
-fragment at org.eclipse.equinox.launcher.gtk.linux.x86_64=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64
-fragment at org.eclipse.equinox.launcher.gtk.linux.ppc=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc
-fragment at org.eclipse.equinox.launcher.gtk.linux.ppc64=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc64
-fragment at org.eclipse.equinox.launcher.motif.hpux.ia64_32=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32
-fragment at org.eclipse.equinox.launcher.motif.aix.ppc=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc
-fragment at org.eclipse.equinox.launcher.motif.linux.x86=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86
-fragment at org.eclipse.equinox.launcher.gtk.solaris.sparc=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc
+fragment at org.eclipse.equinox.launcher.carbon.macosx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx
+fragment at org.eclipse.equinox.launcher.cocoa.macosx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx
+fragment at org.eclipse.equinox.launcher.cocoa.macosx.x86_64=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64
+fragment at org.eclipse.equinox.launcher.gtk.linux.x86=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86
+fragment at org.eclipse.equinox.launcher.gtk.linux.x86_64=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64
+fragment at org.eclipse.equinox.launcher.gtk.linux.ppc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc
+fragment at org.eclipse.equinox.launcher.gtk.linux.ppc64=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc64
+fragment at org.eclipse.equinox.launcher.motif.hpux.ia64_32=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32
+fragment at org.eclipse.equinox.launcher.motif.aix.ppc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc
+fragment at org.eclipse.equinox.launcher.motif.linux.x86=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86
+fragment at org.eclipse.equinox.launcher.gtk.solaris.sparc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc
 plugin at org.eclipse.equinox.launcher.releng=v20100208,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/releng/org.eclipse.equinox.launcher.releng
 
 !****contributed fragments
-fragment at org.eclipse.equinox.launcher.gtk.linux.s390=v20090426-1530,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390
+fragment at org.eclipse.equinox.launcher.gtk.linux.s390=v20100507,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390
 fragment at org.eclipse.equinox.launcher.gtk.linux.s390x=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x
-fragment at org.eclipse.equinox.launcher.gtk.solaris.x86=v20100329,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.solaris.x86
-fragment at org.eclipse.equinox.launcher.motif.solaris.sparc=v20100322-1720,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc
+fragment at org.eclipse.equinox.launcher.gtk.solaris.x86=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.solaris.x86
+fragment at org.eclipse.equinox.launcher.motif.solaris.sparc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc
 
-feature at org.eclipse.equinox.executable=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable
+feature at org.eclipse.equinox.executable=v20100524,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable
 
 !**** Runtime
-plugin at org.eclipse.core.runtime=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.contenttype=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.jobs=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.contenttype=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.jobs=v20100515,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Expressions
-plugin at org.eclipse.core.expressions=v20100222,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.expressions=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.core.expressions.tests=v20091203,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Resources
-plugin at org.eclipse.core.resources=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.win32=v20080508,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.win32.x86=v20081020,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.resources=v20100526-0737,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.win32=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.win32.x86=v20100505-1345,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 fragment at org.eclipse.core.resources.win32.ia64=v20081020,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.compatibility=v20090505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.compatibility=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** File System
-plugin at org.eclipse.core.filesystem=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.x86=v20100322,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.x86_64=v20090316-0910,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.ia64=v20100322,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.x86=v20100216-0700,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.x86_64=v20100216-0700,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.ppc=v20080604-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.solaris.sparc=v20100216-0700,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.aix.ppc=v20100216-0700,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc
+plugin at org.eclipse.core.filesystem=v20100526-0737,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.x86=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.x86_64=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.ia64=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.x86=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.x86_64=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.ppc=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.solaris.sparc=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.aix.ppc=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc
 
 !**** Legacy Runtime
-plugin at org.eclipse.core.boot=v20080218,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.runtime.compatibility=v20090413,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.runtime.compatibility.auth=v20090413,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.runtime.compatibility.registry=v20091116,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.boot=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime.compatibility=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime.compatibility.auth=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.runtime.compatibility.registry=v20100520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Other Core Code
-plugin at org.eclipse.pde.build=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build
-plugin at org.eclipse.pde.build.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build.tests
+plugin at org.eclipse.pde.build=v20100603,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build
+plugin at org.eclipse.pde.build.tests=v20100602-1630,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build.tests
 feature at org.eclipse.pde.builder=v20040624a,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build/feature
 
 !**** Test Suites
-plugin at org.eclipse.core.tests.harness=v20100322,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.resources=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.runtime=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.osgi.tests=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi.tests
+plugin at org.eclipse.core.tests.harness=v20100505-1235,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.resources=v20100526-0737,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.runtime=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.osgi.tests=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi.tests
 !***************  DOC CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.platform.doc.user=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.platform.doc.isv=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.platform.doc.user=v20100603-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.platform.doc.isv=v20100603-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.doc.user=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.doc.isv=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.doc.user=v20100603-1350,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.doc.isv=v20100602-1600,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.pde.doc.user=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/doc/org.eclipse.pde.doc.user
+plugin at org.eclipse.pde.doc.user=v20100603-1350,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/doc/org.eclipse.pde.doc.user
 !***************  Equinox Incubator Contribution ***************************
 
 !**** Initializer bundle
-bundle at org.eclipse.equinox.initializer=v20100316,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/framework/bundles/org.eclipse.equinox.initializer
+bundle at org.eclipse.equinox.initializer=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/framework/bundles/org.eclipse.equinox.initializer
 
 !**** Resource Monitoring ****
 
 !** Client **
-plugin at org.eclipse.equinox.jmx.client=v20070515,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client
-plugin at org.eclipse.equinox.jmx.client.rmi=v20100316,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.rmi
-plugin at org.eclipse.equinox.jmx.client.xmlrpc=v20070515,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.xmlrpc
+plugin at org.eclipse.equinox.jmx.client=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client
+plugin at org.eclipse.equinox.jmx.client.rmi=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.rmi
+plugin at org.eclipse.equinox.jmx.client.xmlrpc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.xmlrpc
 feature at org.eclipse.equinox.jmx.client.feature=v20081124,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.feature
 
 !** Common **
-plugin at org.eclipse.equinox.jmx.common=v20100215,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common
+plugin at org.eclipse.equinox.jmx.common=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common
 feature at org.eclipse.equinox.jmx.common.feature=v20070507,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common.feature
 
 !** Server **
-plugin at org.eclipse.equinox.jmx.server=v20071015,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server
-plugin at org.eclipse.equinox.jmx.server.rmi=v20070510,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.rmi
-plugin at org.eclipse.equinox.jmx.server.xmlrpc=v20070608,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.xmlrpc
-plugin at org.eclipse.equinox.jmx.vm=v20070515,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.vm
-plugin at org.eclipse.equinox.preferences.jmx=v20070510,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.preferences.jmx
-plugin at org.eclipse.equinox.registry.jmx=v20080610-1530,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.registry.jmx
-plugin at org.eclipse.osgi.jmx=v20080610-1530,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.osgi.jmx
-plugin at org.eclipse.swt.jmx=v20090331,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.swt.jmx
-plugin at org.eclipse.core.resources.jmx=v20070510,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.core.resources.jmx
+plugin at org.eclipse.equinox.jmx.server=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server
+plugin at org.eclipse.equinox.jmx.server.rmi=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.rmi
+plugin at org.eclipse.equinox.jmx.server.xmlrpc=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.xmlrpc
+plugin at org.eclipse.equinox.jmx.vm=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.vm
+plugin at org.eclipse.equinox.preferences.jmx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.preferences.jmx
+plugin at org.eclipse.equinox.registry.jmx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.registry.jmx
+plugin at org.eclipse.osgi.jmx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.osgi.jmx
+plugin at org.eclipse.swt.jmx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.swt.jmx
+plugin at org.eclipse.core.resources.jmx=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.core.resources.jmx
 feature at org.eclipse.equinox.jmx.server.feature=v20081124,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.feature
 !***************  FEATURE CONTRIBUTION  ******************************************************
-feature at org.eclipse.sdk=v20100409,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.sdk
+feature at org.eclipse.sdk=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.sdk
 plugin at org.eclipse.sdk=v20100216,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.jdt=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.jdt-feature
+feature at org.eclipse.jdt=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.jdt-feature
 
-feature at org.eclipse.pde=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.pde-feature
+feature at org.eclipse.pde=v20100525,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.pde-feature
 feature at org.eclipse.pde.api.tools.ee.cdcfoundation10_feature=v20091027-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10-feature
 feature at org.eclipse.pde.api.tools.ee.cdcfoundation11_feature=v20091027-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11-feature
 feature at org.eclipse.pde.api.tools.ee.j2se12_feature=v20091027-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12-feature
@@ -214,223 +211,223 @@ feature at org.eclipse.pde.api.tools.ee.osgiminimum10_feature=v20091027-1300,:pserv
 feature at org.eclipse.pde.api.tools.ee.osgiminimum11_feature=v20091027-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11-feature
 feature at org.eclipse.pde.api.tools.ee.osgiminimum12_feature=v20091027-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12-feature
 
-feature at org.eclipse.platform=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.platform-feature
-plugin at org.eclipse.platform=v20100407,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+feature at org.eclipse.platform=v20100602,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.platform-feature
+plugin at org.eclipse.platform=v20100531,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.sdk.examples=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.examples-feature
-plugin at org.eclipse.sdk.examples=v20080612,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+feature at org.eclipse.sdk.examples=v20100527,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.examples-feature
+plugin at org.eclipse.sdk.examples=v20100527,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.sdk.tests=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/features/org.eclipse.sdk.tests
+feature at org.eclipse.sdk.tests=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/features/org.eclipse.sdk.tests
 plugin at org.eclipse.sdk.tests=v20060605,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.equinox.sdk=v20100408,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.equinox.sdk
+feature at org.eclipse.equinox.sdk=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.equinox.sdk
 
-feature at org.eclipse.cvs=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.cvs-feature
+feature at org.eclipse.cvs=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.cvs-feature
 plugin at org.eclipse.cvs=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.cvs
 
-feature at org.eclipse.help=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.help-feature
+feature at org.eclipse.help=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.help-feature
 
-feature at org.eclipse.equinox.p2.user.ui=v20100409,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/p2/org.eclipse.equinox.p2.releng/buildtime-features/org.eclipse.equinox.p2.user.ui
+feature at org.eclipse.equinox.p2.user.ui=v20100503,:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/p2/org.eclipse.equinox.p2.releng/buildtime-features/org.eclipse.equinox.p2.user.ui
 
-feature at org.eclipse.equinox.p2.sdk=CVS,tag=v20100409,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.sdk
-feature at org.eclipse.equinox.p2.discovery.feature=CVS,tag=v20100409,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.discovery.feature
-feature at org.eclipse.equinox.core.sdk=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/framework/features/org.eclipse.equinox.core.sdk
-feature at org.eclipse.equinox.compendium.sdk=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/compendium/features/org.eclipse.equinox.compendium.sdk
+feature at org.eclipse.equinox.p2.sdk=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.sdk
+feature at org.eclipse.equinox.p2.discovery.feature=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.discovery.feature
+feature at org.eclipse.equinox.core.sdk=CVS,tag=v20100603,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/framework/features/org.eclipse.equinox.core.sdk
+feature at org.eclipse.equinox.compendium.sdk=CVS,tag=v20100421,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/compendium/features/org.eclipse.equinox.compendium.sdk
 
-feature at org.eclipse.equinox.serverside.sdk=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.serverside.sdk
-feature at org.eclipse.equinox.server.core=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.core
-feature at org.eclipse.equinox.server.jetty=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.jetty
-feature at org.eclipse.equinox.server.p2=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.p2
-feature at org.eclipse.equinox.server.servletbridge=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.servletbridge
-feature at org.eclipse.equinox.server.simple=CVS,tag=v20100412,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.simple
+feature at org.eclipse.equinox.serverside.sdk=CVS,tag=v20100421,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.serverside.sdk
+feature at org.eclipse.equinox.server.core=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.core
+feature at org.eclipse.equinox.server.jetty=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.jetty
+feature at org.eclipse.equinox.server.p2=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.p2
+feature at org.eclipse.equinox.server.servletbridge=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.servletbridge
+feature at org.eclipse.equinox.server.simple=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.simple
 
-feature at org.eclipse.equinox.weaving.sdk=CVS,tag=v20090817,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/weaving/features/org.eclipse.equinox.weaving.sdk
+feature at org.eclipse.equinox.weaving.sdk=CVS,tag=v20100421,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/weaving/features/org.eclipse.equinox.weaving.sdk
 
-feature at org.eclipse.pde.api.tools.ee.fragments=v20100409,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.pde.api.tools.ee.fragments
+feature at org.eclipse.pde.api.tools.ee.fragments=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.pde.api.tools.ee.fragments
 
-!***************  JDT APT CONTRIBUTION  [20091027-0900] *******************************************
+!***************  JDT APT CONTRIBUTION  [20100512-2100] *******************************************
 
-plugin at org.eclipse.jdt.apt.core=v20091203-0315,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.ui=v20091027-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.tests=v20091203-0315,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.jdt.compiler.apt=v20091027-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.compiler.apt.tests=v20090922-0135,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.pluggable.core=v20090922-0135,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.pluggable.tests=v20091203-0315,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.core=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.ui=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.tests=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.jdt.compiler.apt=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.compiler.apt.tests=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.pluggable.core=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.pluggable.tests=v20100513-0845,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-!***************  JDT CORE CONTRIBUTION  [20100420-0800] ******************************************* 
+!***************  JDT CORE CONTRIBUTION  [20100603-0800] ******************************************* 
 
-plugin at org.eclipse.jdt.core=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.jdt.compiler.tool=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.jdt.compiler.tool=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.core.tests.builder=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.compiler=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.model=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.performance=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.compiler.tool.tests=v_A45,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.builder=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.compiler=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.model=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.performance=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.compiler.tool.tests=v_A58,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  DEBUG CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.debug.core=v20100326,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.ui=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.debug=v20100326-1314,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.debug.ui=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching=v20100326,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching.macosx=v20100407-1200,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching.ui.macosx=v20090527,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.core=v20100519,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.ui=v20100601-1530,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug.ui=v20100602-0830,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching.macosx=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching.ui.macosx=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.console=v20100326,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.console=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.debug.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug.tests=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.tests=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.debug.examples.core=v20100213,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.examples.ui=v20100213,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.examples.core=v20100505,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.examples.ui=v20100526,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  JDT UI CONTRIBUTION  ******************************************************** 
-plugin at org.eclipse.search=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.search.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.search=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.search.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ltk.core.refactoring=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.core.refactoring.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.ui.refactoring=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.ui.refactoring.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.core.refactoring=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.core.refactoring.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.ui.refactoring=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.ui.refactoring.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.core.manipulation=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.manipulation=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.ui=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.ui.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.ui.tests.refactoring=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui=v20100602-1600,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui.tests=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui.tests.refactoring=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.junit=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit.core=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit.runtime=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit4.runtime=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit.core=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit.runtime=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit4.runtime=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.junit4=v20100302,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.junit4=v20100525,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  ORBIT CONTRIBUTION  ********************************************************
-plugin at com.ibm.icu,4.2.1=p2IU,id=com.ibm.icu,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.base,4.2.1=p2IU,id=com.ibm.icu.base,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.base.source,4.2.1=p2IU,id=com.ibm.icu.base.source,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.source,4.2.1=p2IU,id=com.ibm.icu.source,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.jcraft.jsch,0.1.41=p2IU,id=com.jcraft.jsch,version=0.1.41.v200903070017,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at com.jcraft.jsch.source,0.1.41=p2IU,id=com.jcraft.jsch.source,version=0.1.41.v200903070017,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.management,1.2.0=p2IU,id=javax.management,version=1.2.0.v200803061811,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.management.remote,1.0.0=p2IU,id=javax.management.remote,version=1.0.0.v200803061811,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet,2.4.0=p2IU,id=javax.servlet,version=2.4.0.v200806031604,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet,2.5.0=p2IU,id=javax.servlet,version=2.5.0.v200910301333,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.source,2.4.0=p2IU,id=javax.servlet.source,version=2.4.0.v200806031604,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.source,2.5.0=p2IU,id=javax.servlet.source,version=2.5.0.v200910301333,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.jsp,2.0.0=p2IU,id=javax.servlet.jsp,version=2.0.0.v200806031607,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.jsp.source,2.0.0=p2IU,id=javax.servlet.jsp.source,version=2.0.0.v200806031607,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at net.sourceforge.mx4j,3.0.1=p2IU,id=net.sourceforge.mx4j,version=3.0.1.v200803061811,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at net.sourceforge.mx4j.remote,3.0.1=p2IU,id=net.sourceforge.mx4j.remote,version=3.0.1.v200803061811,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ant,1.7.1=p2IU,id=org.apache.ant,version=1.7.1.v20090120-1145,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ant.source,1.7.1=p2IU,id=org.apache.ant.source,version=1.7.1.v20090120-1145,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.codec,1.3.0=p2IU,id=org.apache.commons.codec,version=1.3.0.v20100106-1700,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.codec.source,1.3.0=p2IU,id=org.apache.commons.codec.source,version=1.3.0.v20100106-1700,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.el,1.0.0=p2IU,id=org.apache.commons.el,version=1.0.0.v200806031608,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.el.source,1.0.0=p2IU,id=org.apache.commons.el.source,version=1.0.0.v200806031608,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.httpclient,3.1.0=p2IU,id=org.apache.commons.httpclient,version=3.1.0.v20080605-1935,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.httpclient.source,3.1.0=p2IU,id=org.apache.commons.httpclient.source,version=3.1.0.v20080605-1935,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.logging,1.0.4=p2IU,id=org.apache.commons.logging,version=1.0.4.v200904062259,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.logging.source,1.0.4=p2IU,id=org.apache.commons.logging.source,version=1.0.4.v200904062259,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.jasper,5.5.17=p2IU,id=org.apache.jasper,version=5.5.17.v200903231320,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.jasper.source,5.5.17=p2IU,id=org.apache.jasper.source,version=5.5.17.v200903231320,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene,1.9.1=p2IU,id=org.apache.lucene,version=1.9.1.v20080530-1600,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene.analysis,1.9.1=p2IU,id=org.apache.lucene.analysis,version=1.9.1.v20080530-1600,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene.analysis.source,1.9.1=p2IU,id=org.apache.lucene.analysis.source,version=1.9.1.v20080530-1600,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ws.commons.util,1.0.0=p2IU,id=org.apache.ws.commons.util,version=1.0.0.v20091022-1630,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ws.jaxme,0.5.1=p2IU,id=org.apache.ws.jaxme,version=0.5.1.v20080530-1550,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.xmlrpc,3.0.0=p2IU,id=org.apache.xmlrpc,version=3.0.0.v20080530-1550,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.easymock,2.4.0=p2IU,id=org.easymock,version=2.4.0.v20090202-0900,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.easymock.source,2.4.0=p2IU,id=org.easymock.source,version=2.4.0.v20090202-0900,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.hamcrest.core,1.1.0=p2IU,id=org.hamcrest.core,version=1.1.0.v20090501071000,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.hamcrest.core.source,1.1.0=p2IU,id=org.hamcrest.core.source,version=1.1.0.v20090501071000,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit,3.8.2=p2IU,id=org.junit,version=3.8.2.v20090203-1005,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit.source,3.8.2=p2IU,id=org.junit.source,version=3.8.2.v20090203-1005,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit,4.8.1=p2IU,id=org.junit,version=4.8.1.v4_8_1_v20100114-1600,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit.source,4.8.1=p2IU,id=org.junit.source,version=4.8.1.v4_8_1_v20100114-1600,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty,5.1.14=p2IU,id=org.mortbay.jetty,version=5.1.14.v200806031611,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.source,5.1.14=p2IU,id=org.mortbay.jetty.source,version=5.1.14.v200806031611,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.server,6.1.15=p2IU,id=org.mortbay.jetty.server,version=6.1.15.v200905151201,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.server.source,6.1.15=p2IU,id=org.mortbay.jetty.server.source,version=6.1.15.v200905151201,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.util,6.1.15=p2IU,id=org.mortbay.jetty.util,version=6.1.15.v200905182336,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.util.source,6.1.15=p2IU,id=org.mortbay.jetty.util.source,version=6.1.15.v200905182336,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
+plugin at com.ibm.icu,4.2.1=p2IU,id=com.ibm.icu,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.base,4.2.1=p2IU,id=com.ibm.icu.base,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.base.source,4.2.1=p2IU,id=com.ibm.icu.base.source,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.source,4.2.1=p2IU,id=com.ibm.icu.source,version=4.2.1.v20100412,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.jcraft.jsch,0.1.41=p2IU,id=com.jcraft.jsch,version=0.1.41.v200903070017,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.jcraft.jsch.source,0.1.41=p2IU,id=com.jcraft.jsch.source,version=0.1.41.v200903070017,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.management,1.2.0=p2IU,id=javax.management,version=1.2.0.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.management.remote,1.0.0=p2IU,id=javax.management.remote,version=1.0.0.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet,2.4.0=p2IU,id=javax.servlet,version=2.4.0.v200806031604,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet,2.5.0=p2IU,id=javax.servlet,version=2.5.0.v200910301333,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.source,2.4.0=p2IU,id=javax.servlet.source,version=2.4.0.v200806031604,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.source,2.5.0=p2IU,id=javax.servlet.source,version=2.5.0.v200910301333,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.jsp,2.0.0=p2IU,id=javax.servlet.jsp,version=2.0.0.v200806031607,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.jsp.source,2.0.0=p2IU,id=javax.servlet.jsp.source,version=2.0.0.v200806031607,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at net.sourceforge.mx4j,3.0.1=p2IU,id=net.sourceforge.mx4j,version=3.0.1.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at net.sourceforge.mx4j.remote,3.0.1=p2IU,id=net.sourceforge.mx4j.remote,version=3.0.1.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ant,1.7.1=p2IU,id=org.apache.ant,version=1.7.1.v20100518-1145,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ant.source,1.7.1=p2IU,id=org.apache.ant.source,version=1.7.1.v20100518-1145,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.codec,1.3.0=p2IU,id=org.apache.commons.codec,version=1.3.0.v20100518-1140,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.codec.source,1.3.0=p2IU,id=org.apache.commons.codec.source,version=1.3.0.v20100518-1140,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.el,1.0.0=p2IU,id=org.apache.commons.el,version=1.0.0.v201004212143,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.el.source,1.0.0=p2IU,id=org.apache.commons.el.source,version=1.0.0.v201004212143,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.httpclient,3.1.0=p2IU,id=org.apache.commons.httpclient,version=3.1.0.v201005080502,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.httpclient.source,3.1.0=p2IU,id=org.apache.commons.httpclient.source,version=3.1.0.v201005080502,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.logging,1.0.4=p2IU,id=org.apache.commons.logging,version=1.0.4.v201005080501,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.logging.source,1.0.4=p2IU,id=org.apache.commons.logging.source,version=1.0.4.v201005080501,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.jasper,5.5.17=p2IU,id=org.apache.jasper,version=5.5.17.v201004212143,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.jasper.source,5.5.17=p2IU,id=org.apache.jasper.source,version=5.5.17.v201004212143,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene,1.9.1=p2IU,id=org.apache.lucene,version=1.9.1.v20100518-1140,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene.analysis,1.9.1=p2IU,id=org.apache.lucene.analysis,version=1.9.1.v20100518-1140,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene.analysis.source,1.9.1=p2IU,id=org.apache.lucene.analysis.source,version=1.9.1.v20100518-1140,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ws.commons.util,1.0.0=p2IU,id=org.apache.ws.commons.util,version=1.0.0.v20100518-1135,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ws.jaxme,0.5.1=p2IU,id=org.apache.ws.jaxme,version=0.5.1.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.xmlrpc,3.0.0=p2IU,id=org.apache.xmlrpc,version=3.0.0.v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.easymock,2.4.0=p2IU,id=org.easymock,version=2.4.0.v20090202-0900,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.easymock.source,2.4.0=p2IU,id=org.easymock.source,version=2.4.0.v20090202-0900,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.hamcrest.core,1.1.0=p2IU,id=org.hamcrest.core,version=1.1.0.v20090501071000,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.hamcrest.core.source,1.1.0=p2IU,id=org.hamcrest.core.source,version=1.1.0.v20090501071000,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit,3.8.2=p2IU,id=org.junit,version=3.8.2.v3_8_2_v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit.source,3.8.2=p2IU,id=org.junit.source,version=3.8.2.v3_8_2_v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit,4.8.1=p2IU,id=org.junit,version=4.8.1.v4_8_1_v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit.source,4.8.1=p2IU,id=org.junit.source,version=4.8.1.v4_8_1_v20100427-1100,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty,5.1.14=p2IU,id=org.mortbay.jetty,version=5.1.14.v200806031611,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.source,5.1.14=p2IU,id=org.mortbay.jetty.source,version=5.1.14.v200806031611,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.server,6.1.23=p2IU,id=org.mortbay.jetty.server,version=6.1.23.v201004211559,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.server.source,6.1.23=p2IU,id=org.mortbay.jetty.server.source,version=6.1.23.v201004211559,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.util,6.1.23=p2IU,id=org.mortbay.jetty.util,version=6.1.23.v201004211559,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.util.source,6.1.23=p2IU,id=org.mortbay.jetty.util.source,version=6.1.23.v201004211559,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
 
 # Bundles from Orbit for p2
-plugin at org.apache.xml.resolver,1.2.0=p2IU,id=org.apache.xml.resolver,version=1.2.0.v200902170519,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.xerces,2.8.0=p2IU,id=org.apache.xerces,version=2.8.0.v200803070308,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.sat4j.core,2.2.0=p2IU,id=org.sat4j.core,version=2.2.0.v20100329,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at org.sat4j.pb,2.2.0=p2IU,id=org.sat4j.pb,version=2.2.0.v20100329,repository=http://download.eclipse.org/tools/orbit/downloads/drops/I20100413151631/updateSite
+plugin at org.apache.xml.resolver,1.2.0=p2IU,id=org.apache.xml.resolver,version=1.2.0.v201005080400,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.xerces,2.8.0=p2IU,id=org.apache.xerces,version=2.8.0.v200803070308,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.sat4j.core,2.2.0=p2IU,id=org.sat4j.core,version=2.2.0.v20100429,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.sat4j.pb,2.2.0=p2IU,id=org.sat4j.pb,version=2.2.0.v20100429,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
 
 # Orbit bundles for API tooling
-plugin at org.objectweb.asm,3.2.0=p2IU,id=org.objectweb.asm,version=3.2.0.v200909071300,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.objectweb.asm.source,3.2.0=p2IU,id=org.objectweb.asm.source,version=3.2.0.v200909071300,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100308015149/updateSite
+plugin at org.objectweb.asm,3.2.0=p2IU,id=org.objectweb.asm,version=3.2.0.v200909071300,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.objectweb.asm.source,3.2.0=p2IU,id=org.objectweb.asm.source,version=3.2.0.v200909071300,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20100519200754/repository
 
 #aspectj plugins for equinox weaving plugins
 plugin at org.aspectj.weaver,1.6.7=p2IU,id=org.aspectj.weaver,version=1.6.7.20091231194938,repository=http://download.eclipse.org/tools/ajdt/aspectj/update																   
 plugin at org.aspectj.runtime,1.6.7=p2IU,id=org.aspectj.runtime,version=1.6.7.20091231194938,repository=http://download.eclipse.org/tools/ajdt/aspectj/update
-plugin at org.eclipse.equinox.frameworkadmin=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin
-plugin at org.eclipse.equinox.frameworkadmin.equinox=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.equinox
-plugin at org.eclipse.equinox.frameworkadmin.test=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.test
-plugin at org.eclipse.equinox.p2.artifact.repository=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.artifact.repository
-plugin at org.eclipse.equinox.p2.console=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.console
-plugin at org.eclipse.equinox.p2.core=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.core
-plugin at org.eclipse.equinox.p2.director=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director
-plugin at org.eclipse.equinox.p2.director.app=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app
-plugin at org.eclipse.equinox.p2.directorywatcher=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.directorywatcher
-plugin at org.eclipse.equinox.p2.discovery=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery
-plugin at org.eclipse.equinox.p2.discovery.compatibility=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery.compatibility
-plugin at org.eclipse.equinox.p2.engine=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.engine
-plugin at org.eclipse.equinox.p2.extensionlocation=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.extensionlocation
-plugin at org.eclipse.equinox.p2.garbagecollector=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.garbagecollector
-plugin at org.eclipse.equinox.p2.installer=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.installer
-plugin at org.eclipse.equinox.p2.jarprocessor=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.jarprocessor
-plugin at org.eclipse.equinox.p2.metadata=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata
-plugin at org.eclipse.equinox.p2.metadata.generator=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.generator
-plugin at org.eclipse.equinox.p2.metadata.repository=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository
-plugin at org.eclipse.equinox.p2.operations=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.operations
-plugin at org.eclipse.equinox.p2.publisher=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.publisher
-plugin at org.eclipse.equinox.p2.reconciler.dropins=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.reconciler.dropins
-plugin at org.eclipse.equinox.p2.repository=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository
-plugin at org.eclipse.equinox.p2.repository.tools=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools
+plugin at org.eclipse.equinox.frameworkadmin=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin
+plugin at org.eclipse.equinox.frameworkadmin.equinox=CVS,tag=v20100505,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.equinox
+plugin at org.eclipse.equinox.frameworkadmin.test=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.test
+plugin at org.eclipse.equinox.p2.artifact.repository=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.artifact.repository
+plugin at org.eclipse.equinox.p2.console=CVS,tag=v20100601,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.console
+plugin at org.eclipse.equinox.p2.core=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.core
+plugin at org.eclipse.equinox.p2.director=CVS,tag=v20100525,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director
+plugin at org.eclipse.equinox.p2.director.app=CVS,tag=v20100527,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app
+plugin at org.eclipse.equinox.p2.directorywatcher=CVS,tag=v20100601,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.directorywatcher
+plugin at org.eclipse.equinox.p2.discovery=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery
+plugin at org.eclipse.equinox.p2.discovery.compatibility=CVS,tag=v20100518,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery.compatibility
+plugin at org.eclipse.equinox.p2.engine=CVS,tag=v20100527,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.engine
+plugin at org.eclipse.equinox.p2.extensionlocation=CVS,tag=v20100518,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.extensionlocation
+plugin at org.eclipse.equinox.p2.garbagecollector=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.garbagecollector
+plugin at org.eclipse.equinox.p2.installer=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.installer
+plugin at org.eclipse.equinox.p2.jarprocessor=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.jarprocessor
+plugin at org.eclipse.equinox.p2.metadata=CVS,tag=v20100601,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata
+plugin at org.eclipse.equinox.p2.metadata.generator=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.generator
+plugin at org.eclipse.equinox.p2.metadata.repository=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository
+plugin at org.eclipse.equinox.p2.operations=CVS,tag=v20100510,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.operations
+plugin at org.eclipse.equinox.p2.publisher=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.publisher
+plugin at org.eclipse.equinox.p2.reconciler.dropins=CVS,tag=v20100525,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.reconciler.dropins
+plugin at org.eclipse.equinox.p2.repository=CVS,tag=v20100519,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository
+plugin at org.eclipse.equinox.p2.repository.tools=CVS,tag=v20100520,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools
 plugin at org.eclipse.equinox.p2.selfhosting=CVS,tag=_api_cleanup_v20091125,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.selfhosting
-plugin at org.eclipse.equinox.p2.touchpoint.eclipse=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.eclipse
-plugin at org.eclipse.equinox.p2.touchpoint.natives=CVS,tag=v20100413,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.natives
-plugin at org.eclipse.equinox.p2.ui=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui
-plugin at org.eclipse.equinox.p2.ui.admin=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin
-plugin at org.eclipse.equinox.p2.ui.discovery=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.discovery
-plugin at org.eclipse.equinox.p2.ui.sdk=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk
-plugin at org.eclipse.equinox.p2.ui.sdk.scheduler=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler
-plugin at org.eclipse.equinox.p2.ui.admin.rcp=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin.rcp
-plugin at org.eclipse.equinox.p2.updatechecker=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatechecker
-plugin at org.eclipse.equinox.p2.updatesite=CVS,tag=v20100405-2203,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite
-plugin at org.eclipse.equinox.simpleconfigurator=CVS,tag=v20100416,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator
-plugin at org.eclipse.equinox.simpleconfigurator.manipulator=CVS,tag=v20100416,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator.manipulator
-plugin at org.eclipse.equinox.p2.tests=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests
-plugin at org.eclipse.equinox.p2.tests.discovery=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.discovery
-plugin at org.eclipse.equinox.p2.tests.ui=CVS,tag=v20100419,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.ui
-plugin at org.eclipse.equinox.p2.tests.verifier=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.verifier
-plugin at org.eclipse.equinox.p2.ql=CVS,tag=v20100329,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ql
+plugin at org.eclipse.equinox.p2.touchpoint.eclipse=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.eclipse
+plugin at org.eclipse.equinox.p2.touchpoint.natives=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.natives
+plugin at org.eclipse.equinox.p2.ui=CVS,tag=v20100518,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui
+plugin at org.eclipse.equinox.p2.ui.admin=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin
+plugin at org.eclipse.equinox.p2.ui.discovery=CVS,tag=v20100519,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.discovery
+plugin at org.eclipse.equinox.p2.ui.sdk=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk
+plugin at org.eclipse.equinox.p2.ui.sdk.scheduler=CVS,tag=v20100507-1815,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler
+plugin at org.eclipse.equinox.p2.ui.admin.rcp=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin.rcp
+plugin at org.eclipse.equinox.p2.updatechecker=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatechecker
+plugin at org.eclipse.equinox.p2.updatesite=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite
+plugin at org.eclipse.equinox.simpleconfigurator=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator
+plugin at org.eclipse.equinox.simpleconfigurator.manipulator=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator.manipulator
+plugin at org.eclipse.equinox.p2.tests=CVS,tag=v20100525,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests
+plugin at org.eclipse.equinox.p2.tests.discovery=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.discovery
+plugin at org.eclipse.equinox.p2.tests.ui=CVS,tag=v20100513,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.ui
+plugin at org.eclipse.equinox.p2.tests.verifier=CVS,tag=v20100503,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.verifier
+plugin at org.eclipse.equinox.p2.ql=CVS,tag=v20100503a,cvsRoot=:pserver:anonymous at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ql
 
 !# Bundles from ECF
-plugin at org.eclipse.ecf,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.identity,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.identity_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.identity.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.identity.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.filetransfer,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.filetransfer.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.httpclient.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
+plugin at org.eclipse.ecf,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.identity,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.identity_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.identity.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.identity.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.filetransfer,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.filetransfer.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.httpclient.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
 
 !# The following apache bundes are obtained from the orbit.map
 !#plugin at org.apache.commons.codec,1.3.0=GET,http://download.eclipse.org/tools/orbit/downloads/drops/S20090426201227/bundles/org.apache.commons.codec_1.3.0.v20080530-1600.jar
@@ -442,43 +439,43 @@ fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source,1.0.0=GET,h
 !***************  PDE CONTRIBUTION  ******************************************************** 
 
 
-plugin at org.eclipse.pde=v20091127,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde
-plugin at org.eclipse.pde.core=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.core
-plugin at org.eclipse.pde.junit.runtime=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.junit.runtime
-plugin at org.eclipse.pde.runtime=v20100305,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.runtime
-plugin at org.eclipse.pde.launching=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.launching
-plugin at org.eclipse.pde.ui=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui
-plugin at org.eclipse.pde.ui.templates=v20100208-2040,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.templates
-plugin at org.eclipse.pde.ui.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.tests
-
-plugin at org.eclipse.ui.views.log=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.ui.views.log
-plugin at org.eclipse.pde.api.tools=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools
-plugin at org.eclipse.pde.api.tools.ui=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ui
-plugin at org.eclipse.pde.api.tools.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.tests
-fragment at org.eclipse.pde.api.tools.ee.cdcfoundation10=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10
-fragment at org.eclipse.pde.api.tools.ee.cdcfoundation11=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11
-fragment at org.eclipse.pde.api.tools.ee.j2se12=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12
-fragment at org.eclipse.pde.api.tools.ee.j2se13=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se13
-fragment at org.eclipse.pde.api.tools.ee.j2se14=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se14
-fragment at org.eclipse.pde.api.tools.ee.j2se15=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se15
-fragment at org.eclipse.pde.api.tools.ee.javase16=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.javase16
-fragment at org.eclipse.pde.api.tools.ee.jre11=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.jre11
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum10=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum10
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum11=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum12=v20091028-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12
-
-plugin at org.eclipse.pde.ds.core=v20100310,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.core
-plugin at org.eclipse.pde.ds.ui=v20100406,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.ui
-plugin at org.eclipse.pde.ds.tests=v20090420,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.tests
-
-plugin at org.eclipse.pde.ua.core=v20090729,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.core
-plugin at org.eclipse.pde.ua.ui=v20100305,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.ui
-feature at org.eclipse.rcp=v20100414,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp
+plugin at org.eclipse.pde=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde
+plugin at org.eclipse.pde.core=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.core
+plugin at org.eclipse.pde.junit.runtime=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.junit.runtime
+plugin at org.eclipse.pde.runtime=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.runtime
+plugin at org.eclipse.pde.launching=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.launching
+plugin at org.eclipse.pde.ui=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui
+plugin at org.eclipse.pde.ui.templates=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.templates
+plugin at org.eclipse.pde.ui.tests=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.tests
+
+plugin at org.eclipse.ui.views.log=v20100423,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.ui.views.log
+plugin at org.eclipse.pde.api.tools=v20100602-0930,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools
+plugin at org.eclipse.pde.api.tools.ui=v20100601-1815,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ui
+plugin at org.eclipse.pde.api.tools.tests=v20100526-1600,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.tests
+fragment at org.eclipse.pde.api.tools.ee.cdcfoundation10=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10
+fragment at org.eclipse.pde.api.tools.ee.cdcfoundation11=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11
+fragment at org.eclipse.pde.api.tools.ee.j2se12=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12
+fragment at org.eclipse.pde.api.tools.ee.j2se13=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se13
+fragment at org.eclipse.pde.api.tools.ee.j2se14=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se14
+fragment at org.eclipse.pde.api.tools.ee.j2se15=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se15
+fragment at org.eclipse.pde.api.tools.ee.javase16=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.javase16
+fragment at org.eclipse.pde.api.tools.ee.jre11=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.jre11
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum10=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum10
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum11=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum12=v20100506-0900,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12
+
+plugin at org.eclipse.pde.ds.core=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.core
+plugin at org.eclipse.pde.ds.ui=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.ui
+plugin at org.eclipse.pde.ds.tests=v20100601,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.tests
+
+plugin at org.eclipse.pde.ua.core=v20100504,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.core
+plugin at org.eclipse.pde.ua.ui=v20100504,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.ui
+feature at org.eclipse.rcp=v20100519,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp
 feature at org.eclipse.rcp.sdk=v20080507,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp.sdk
-plugin at org.eclipse.rcp=v20090528,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.rcp
+plugin at org.eclipse.rcp=v20100527-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.rcp
 !****************  RELENG CONTRIBUTION  ******************************************************** 
 feature at master=v20091019,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master
-feature at master-equinox=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox
+feature at master-equinox=v20100521,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox
 feature at master-equinox-p2=v20091106,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox-p2
 feature at master-equinox-weaving=v20090817,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox-weaving
 feature at master-jetty=v20090305,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-jetty
@@ -486,10 +483,10 @@ feature at master-ecf=v20090316,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse
 
 feature at com.ibm.icu.base=v20090119,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/com.ibm.icu.base
 
-feature at org.eclipse.releng.tools=v20100409,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.releng.tools
+feature at org.eclipse.releng.tools=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.releng.tools
 
-plugin at org.eclipse.releng.tools=v20100304,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.releng.tests=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.releng.tools=v20100531,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.releng.tests=v20100519,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 plugin at org.eclipse.pde.tools.versioning=r20080922,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/plugins/org.eclipse.pde.tools.versioning
 
@@ -498,70 +495,70 @@ feature at org.eclipse.jdt.test.feature.sample=HEAD,:pserver:anonymous at dev.eclipse.
 !***************  SWT CONTRIBUTION  ******************************************************** 
 
 !*** SWT Plugin
-plugin at org.eclipse.swt=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Platform Fragments
-fragment at org.eclipse.swt.carbon.macosx=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.cocoa.macosx=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.cocoa.macosx.x86_64=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.ppc=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.ppc64=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.x86=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.x86_64=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.solaris.sparc=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.solaris.x86=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.aix.ppc=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.hpux.ia64_32=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.linux.x86=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.solaris.sparc=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.photon.qnx.x86=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.wce_ppc.arm=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.x86=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.x86_64=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.ia64=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-fragment at org.eclipse.swt.gtk.linux.s390=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.s390x=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.carbon.macosx=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.cocoa.macosx=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.cocoa.macosx.x86_64=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.ppc=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.ppc64=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.x86=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.x86_64=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.solaris.sparc=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.solaris.x86=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.aix.ppc=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.hpux.ia64_32=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.linux.x86=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.solaris.sparc=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.photon.qnx.x86=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.wce_ppc.arm=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.x86=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.x86_64=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.ia64=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+fragment at org.eclipse.swt.gtk.linux.s390=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.s390x=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Examples
-plugin at org.eclipse.swt.examples=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.browser=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.browser.demos=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.controls=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.launcher=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.layouts=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.ole.win32=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.paint=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.browser=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.browser.demos=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.controls=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.launcher=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.layouts=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.ole.win32=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.paint=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Tests and Tools
-plugin at org.eclipse.swt.tests=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.tools=v3642,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.tests=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.tools=v3650b,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  TEAM CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.team.core=I20100420-0520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.core=I20100310-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ssh=I20090508-2000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ssh2=I20100330-0755,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.ui=I20100420-0520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ui=I20100330-0755,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.core.net=I20100420-0520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.net=I20100216-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.net=I20100420-0520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.core=I20100112-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.ui=I20100310-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.tests=I20080604,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.team.examples.filesystem=I20100310-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.team.tests.core=I20090714-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.tests.cvs.core=I20100420-0520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.net.win32.x86=I20080909,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86
-fragment at org.eclipse.core.net.linux.x86=I20081021,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86
-fragment at org.eclipse.core.net.linux.x86_64=I20091106-0506,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64
-fragment at org.eclipse.core.net.win32.x86_64=I20090306-1030,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64
+plugin at org.eclipse.team.core=I20100527-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.core=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ssh=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ssh2=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.ui=I20100527-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ui=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.core.net=I20100511-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.net=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.net=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.core=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.ui=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.tests=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.team.examples.filesystem=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.team.tests.core=I20100511-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.tests.cvs.core=I20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.net.win32.x86=I20100511-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86
+fragment at org.eclipse.core.net.linux.x86=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86
+fragment at org.eclipse.core.net.linux.x86_64=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64
+fragment at org.eclipse.core.net.win32.x86_64=I20100505-1245,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64
 !***************  Test Framework CONTRIBUTION  ******************************************************** 
-feature at org.eclipse.test=v20100409,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.test-feature
+feature at org.eclipse.test=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.test-feature
 
 plugin at org.eclipse.test=v20100118,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 fragment at org.eclipse.ant.optional.junit=v20080717,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
@@ -574,97 +571,97 @@ plugin at org.eclipse.test.performance.data=v20050415,:pserver:anonymous at dev.eclips
 plugin at org.eclipse.test.dispatcher=HEAD,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.test.dispatcher
 !***************  TEXT CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.text=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.text=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench.texteditor=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.editors=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.filebuffers=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.text=v20100601-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.text=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench.texteditor=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.editors=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.filebuffers=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.examples.javaeditor=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.javaeditor=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.text.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.text.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.filebuffers.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench.texteditor.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.editors.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.text.tests=v20100420-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.text.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.text.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.filebuffers.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench.texteditor.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.editors.tests=v20100520-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.text.tests=v20100526-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  UI CONTRIBUTION  ********************************************************* 
 
-plugin at org.eclipse.core.commands=I20100122-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding=I20100310-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.observable=I20100310-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.property=I20100310-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.beans=I20100322-2025,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.databinding=I20100310-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.ide=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.ide.application=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.presentations.r21=I20100311-1200,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.views=I20090914-0830,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.workbench.compatibility=I20090429-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.win32=v20090429-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.carbon=I20091204-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.cocoa=I20091204-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-
-plugin at org.eclipse.jface.examples.databinding=I20100310-1300,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.multipageeditor=I20070605-0010,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.propertysheet=I20070319-0010,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.readmetool=I20090526-2000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.undo=I20080204-0800a,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.views.properties.tabbed.article=I20060605-1400,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.ui.examples.views.properties.tabbed/org.eclipse.ui.examples.views.properties.tabbed.article
-plugin at org.eclipse.ui.examples.fieldassist=I20100223-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.contributions=I20090526-2000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.ui.navigator=I20100329-1712,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.navigator.resources=I20100322-2025,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.ui.views.properties.tabbed=I20090429-1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-
-plugin at org.eclipse.jface.tests.databinding=I20100310-0100,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.commands=I20100512-1500,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.observable=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.property=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.beans=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.databinding=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui=I20100603-1100,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.ide=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.ide.application=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.presentations.r21=I20100517-1500,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.views=I20100527-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench=I20100603-1100,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.workbench.compatibility=I20100511-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.win32=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.carbon=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.cocoa=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+
+plugin at org.eclipse.jface.examples.databinding=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.multipageeditor=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.propertysheet=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.readmetool=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.undo=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.views.properties.tabbed.article=I20100517-1500,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.ui.examples.views.properties.tabbed/org.eclipse.ui.examples.views.properties.tabbed.article
+plugin at org.eclipse.ui.examples.fieldassist=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.contributions=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.ui.navigator=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.navigator.resources=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.ui.views.properties.tabbed=I20100509-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+
+plugin at org.eclipse.jface.tests.databinding=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.jface.tests.databinding.conformance=I20090818-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests=I20100419-1730,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.ui.tests.rcp=I20090525-2000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.navigator=I20100310-0100,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.navigator=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.ui.tests.views.properties.tabbed=I20090525-2000,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.performance=I20100122-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.harness=I20100209-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.performance=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.harness=I20100601-0800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  UPDATE CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.update.configurator=v20100307,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.core=v20100416,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.scheduler=v20081127,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.ui=v20090813,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.configurator=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.core=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.scheduler=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.ui=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-fragment at org.eclipse.update.core.win32=v20080107,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.update.core.linux=v20081008,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.update.core.win32=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.update.core.linux=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.update.tests.core=v20100416,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.tests.core=v20100512,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 !***************  UA CONTRIBUTION  *********************************************
 
 !**** Help
-plugin at org.eclipse.help=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.appserver=v20090429_1800,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.base=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.ui=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.webapp=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help=v20100524,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.appserver=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.base=v20100520,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.ui=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.webapp=v20100507,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Welcome
-plugin at org.eclipse.ui.intro=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.intro.universal=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.intro=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.intro.universal=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Cheat sheets
-plugin at org.eclipse.ui.cheatsheets=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.cheatsheets=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Browser
-plugin at org.eclipse.ui.browser=v20100405,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.browser=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Forms
-plugin at org.eclipse.ui.forms=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.forms=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Tests
-plugin at org.eclipse.ua.tests=v20100412,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ua.tests.doc=v20100419,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.forms=v20100301,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ua.tests=v20100519,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ua.tests.doc=v20100427,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.forms=v20100517,:pserver:anonymous at dev.eclipse.org:/cvsroot/eclipse,
diff --git a/eclipse/featureVersions.properties b/eclipse/featureVersions.properties
index bebdc5c..ae92187 100644
--- a/eclipse/featureVersions.properties
+++ b/eclipse/featureVersions.properties
@@ -1,35 +1,35 @@
-#Sun Apr 25 19:23:53 CEST 2010
-org.eclipse.equinox.compendium.sdk,0.0.0=v20100412
-org.eclipse.equinox.weaving.sdk,0.0.0=v20090817
-org.eclipse.platform,0.0.0=v20100414
-master-equinox,0.0.0=v20100118
-org.eclipse.rcp,0.0.0=v20100414
-org.eclipse.equinox.p2.sdk,0.0.0=v20100409
+#Mon Jun 07 12:15:24 EDT 2010
+org.eclipse.equinox.compendium.sdk,0.0.0=v20100421
+org.eclipse.equinox.weaving.sdk,0.0.0=v20100421
+org.eclipse.platform,0.0.0=v20100602
+master-equinox,0.0.0=v20100521
+org.eclipse.rcp,0.0.0=v20100519
+org.eclipse.equinox.p2.sdk,0.0.0=v20100503
 com.ibm.icu.base,0.0.0=v20090119
 master,0.0.0=v20091019
-org.eclipse.cvs,0.0.0=v20100419
-org.eclipse.equinox.server.simple,0.0.0=v20100412
-org.eclipse.equinox.server.core,0.0.0=v20100412
-org.eclipse.releng.tools,0.0.0=v20100409
-org.eclipse.equinox.p2.discovery.feature,0.0.0=v20100409
-org.eclipse.equinox.core.sdk,0.0.0=v20100412
-org.eclipse.equinox.p2.user.ui,0.0.0=v20100409
-org.eclipse.equinox.server.p2,0.0.0=v20100412
-org.eclipse.sdk,0.0.0=v20100409
+org.eclipse.cvs,0.0.0=v20100427
+org.eclipse.equinox.server.simple,0.0.0=v20100510
+org.eclipse.equinox.server.core,0.0.0=v20100510
+org.eclipse.releng.tools,0.0.0=v20100427
+org.eclipse.equinox.p2.discovery.feature,0.0.0=v20100510
+org.eclipse.equinox.core.sdk,0.0.0=v20100603
+org.eclipse.equinox.p2.user.ui,0.0.0=v20100503
+org.eclipse.equinox.server.p2,0.0.0=v20100503
+org.eclipse.sdk,0.0.0=v20100427
 master-equinox-weaving,0.0.0=v20090817
 master-jetty,0.0.0=v20090305
-org.eclipse.jdt,0.0.0=v20100420-0800
+org.eclipse.jdt,0.0.0=v20100526-0800
 org.eclipse.equinox.jmx.server.feature,0.0.0=v20081124
-org.eclipse.equinox.server.servletbridge,0.0.0=v20100412
+org.eclipse.equinox.server.servletbridge,0.0.0=v20100510
 master-ecf,0.0.0=v20090316
 org.eclipse.equinox.jmx.client.feature,0.0.0=v20081124
-org.eclipse.sdk.examples,0.0.0=v20100414
+org.eclipse.sdk.examples,0.0.0=v20100527
 org.eclipse.equinox.jmx.common.feature,0.0.0=v20070507
-org.eclipse.equinox.sdk,0.0.0=v20100408
-org.eclipse.pde.api.tools.ee.fragments,0.0.0=v20100409
-org.eclipse.pde,0.0.0=v20100414
-org.eclipse.equinox.serverside.sdk,0.0.0=v20100412
-org.eclipse.equinox.server.jetty,0.0.0=v20100412
-org.eclipse.equinox.executable,0.0.0=v20100419
-org.eclipse.help,0.0.0=v20100414
+org.eclipse.equinox.sdk,0.0.0=v20100601
+org.eclipse.pde.api.tools.ee.fragments,0.0.0=v20100427
+org.eclipse.equinox.serverside.sdk,0.0.0=v20100421
+org.eclipse.pde,0.0.0=v20100525
+org.eclipse.equinox.server.jetty,0.0.0=v20100510
+org.eclipse.equinox.executable,0.0.0=v20100524
+org.eclipse.help,0.0.0=v20100427
 master-equinox-p2,0.0.0=v20091106
diff --git a/eclipse/features/master-equinox/build.properties b/eclipse/features/master-equinox/build.properties
index 326dc76..62626c8 100644
--- a/eclipse/features/master-equinox/build.properties
+++ b/eclipse/features/master-equinox/build.properties
@@ -15,5 +15,5 @@ generate.feature at org.eclipse.equinox.source=org.eclipse.equinox,\
   plugin at org.apache.commons.el.source;version=1.0.0.qualifier;unpack="false",\
   plugin at javax.servlet.source;version=2.5.0.qualifier;unpack="false",\
   plugin at org.apache.commons.logging.source;version=1.0.4.qualifier;unpack="false",\
-  plugin at org.mortbay.jetty.util.source;version=6.1.15.qualifier;unpack="false",\
-  plugin at org.mortbay.jetty.server.source;version=6.1.15.qualifier;unpack="false"
+  plugin at org.mortbay.jetty.util.source;version=6.1.23.qualifier;unpack="false",\
+  plugin at org.mortbay.jetty.server.source;version=6.1.23.qualifier;unpack="false"
diff --git a/eclipse/features/org.eclipse.cvs/feature.properties b/eclipse/features/org.eclipse.cvs/feature.properties
index 45b5bb2..871667c 100644
--- a/eclipse/features/org.eclipse.cvs/feature.properties
+++ b/eclipse/features/org.eclipse.cvs/feature.properties
@@ -49,7 +49,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -74,21 +74,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -97,15 +97,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -118,18 +118,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -139,5 +169,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.cvs/license.html b/eclipse/features/org.eclipse.cvs/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.cvs/license.html
+++ b/eclipse/features/org.eclipse.cvs/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.cvs/rootfiles/notice.html b/eclipse/features/org.eclipse.cvs/rootfiles/notice.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.cvs/rootfiles/notice.html
+++ b/eclipse/features/org.eclipse.cvs/rootfiles/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/feature.properties
index 3011109..b7a1aec 100644
--- a/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.cvs/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties
index 328237e..9be70e8 100755
--- a/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties
@@ -41,103 +41,133 @@ Contributors:\n\
     EclipseSource - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html b/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html
index 15a10cf..c184ca3 100755
--- a/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties
index bc181a2..f9c9561 100755
--- a/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties
@@ -42,103 +42,133 @@ Contributors:\n\
     EclipseSource - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.core.sdk/license.html b/eclipse/features/org.eclipse.equinox.core.sdk/license.html
index 15a10cf..c184ca3 100755
--- a/eclipse/features/org.eclipse.equinox.core.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.core.sdk/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Info.plist b/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Info.plist
index 99e7358..ca325a6 100644
--- a/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Info.plist
+++ b/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Info.plist
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-
-<dict>
-	<key>CFBundleExecutable</key>
-		<string>eclipse</string>
-	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.5 for Mac OS X, Copyright IBM Corp. and others 2002, 2008. All rights reserved.</string>
-	<key>CFBundleIconFile</key>
-		<string>Eclipse.icns</string>
-	<key>CFBundleIdentifier</key>
-		<string>org.eclipse.eclipse</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-		<string>6.0</string>
-	<key>CFBundleName</key>
-		<string>Eclipse</string>
-	<key>CFBundlePackageType</key>
-		<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-		<string>3.5</string>
-	<key>CFBundleSignature</key>
-		<string>????</string>
-	<key>CFBundleVersion</key>
-		<string>3.5</string>
-	<key>CFBundleDevelopmentRegion</key>
-		<string>English</string>
-	<key>CFBundleLocalizations</key>
-		<array>
-			<string>ar</string>
-			<string>cs</string>
-			<string>da</string>
-			<string>el</string>
-			<string>en</string>
-			<string>es</string>
-			<string>de</string>
-			<string>fi</string>
-			<string>fr</string>
-			<string>hu</string>
-			<string>it</string>
-			<string>iw</string>
-			<string>ja</string>
-			<string>ko</string>
-			<string>nl</string>
-			<string>no</string>
-			<string>pl</string>
-			<string>pt_BR</string>
-			<string>pt</string>
-			<string>ru</string>
-			<string>sv</string>
-			<string>tr</string>
-			<string>zh_HK</string>
-			<string>zh_TW</string>
-			<string>zh</string>
-		</array>
-		
-	<key>Eclipse</key>
-		<array>
-			<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options:
-				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java</string>
-				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
-			-->
-			<string>-keyring</string><string>~/.eclipse_keyring</string>
-			<string>-showlocation</string>
-			<!-- WARNING:
-				If you try to add a single VM argument (-vmargs) here,
-				*all* vmargs specified in eclipse.ini will be ignored.
-				We recommend to add all arguments in eclipse.ini
-			 -->
-		</array>
-</dict>
-
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+
+<dict>
+	<key>CFBundleExecutable</key>
+		<string>eclipse</string>
+	<key>CFBundleGetInfoString</key>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
+	<key>CFBundleIconFile</key>
+		<string>Eclipse.icns</string>
+	<key>CFBundleIdentifier</key>
+		<string>org.eclipse.eclipse</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+		<string>6.0</string>
+	<key>CFBundleName</key>
+		<string>Eclipse</string>
+	<key>CFBundlePackageType</key>
+		<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+		<string>3.6</string>
+	<key>CFBundleSignature</key>
+		<string>????</string>
+	<key>CFBundleVersion</key>
+		<string>3.6</string>
+	<key>CFBundleDevelopmentRegion</key>
+		<string>English</string>
+	<key>CFBundleLocalizations</key>
+		<array>
+			<string>ar</string>
+			<string>cs</string>
+			<string>da</string>
+			<string>el</string>
+			<string>en</string>
+			<string>es</string>
+			<string>de</string>
+			<string>fi</string>
+			<string>fr</string>
+			<string>hu</string>
+			<string>it</string>
+			<string>iw</string>
+			<string>ja</string>
+			<string>ko</string>
+			<string>nl</string>
+			<string>no</string>
+			<string>pl</string>
+			<string>pt_BR</string>
+			<string>pt</string>
+			<string>ru</string>
+			<string>sv</string>
+			<string>tr</string>
+			<string>zh_HK</string>
+			<string>zh_TW</string>
+			<string>zh</string>
+		</array>
+		
+	<key>Eclipse</key>
+		<array>
+			<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options:
+				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java</string>
+				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
+			-->
+			<string>-keyring</string><string>~/.eclipse_keyring</string>
+			<string>-showlocation</string>
+			<!-- WARNING:
+				If you try to add a single VM argument (-vmargs) here,
+				*all* vmargs specified in eclipse.ini will be ignored.
+				We recommend to add all arguments in eclipse.ini
+			 -->
+		</array>
+</dict>
+
+</plist>
diff --git a/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Info.plist b/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Info.plist
index 40da89c..3f47b4b 100644
--- a/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Info.plist
+++ b/eclipse/features/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Info.plist
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-
-<dict>
-	<key>CFBundleExecutable</key>
-		<string>eclipse</string>
-	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.5 for Mac OS X, Copyright IBM Corp. and others 2002, 2008. All rights reserved.</string>
-	<key>CFBundleIconFile</key>
-		<string>Eclipse.icns</string>
-	<key>CFBundleIdentifier</key>
-		<string>org.eclipse.eclipse</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-		<string>6.0</string>
-	<key>CFBundleName</key>
-		<string>Eclipse</string>
-	<key>CFBundlePackageType</key>
-		<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-		<string>3.5</string>
-	<key>CFBundleSignature</key>
-		<string>????</string>
-	<key>CFBundleVersion</key>
-		<string>3.5</string>
-	<key>CFBundleDevelopmentRegion</key>
-		<string>English</string>
-	<key>CFBundleLocalizations</key>
-		<array>
-			<string>ar</string>
-			<string>cs</string>
-			<string>da</string>
-			<string>el</string>
-			<string>en</string>
-			<string>es</string>
-			<string>de</string>
-			<string>fi</string>
-			<string>fr</string>
-			<string>hu</string>
-			<string>it</string>
-			<string>iw</string>
-			<string>ja</string>
-			<string>ko</string>
-			<string>nl</string>
-			<string>no</string>
-			<string>pl</string>
-			<string>pt_BR</string>
-			<string>pt</string>
-			<string>ru</string>
-			<string>sv</string>
-			<string>tr</string>
-			<string>zh_HK</string>
-			<string>zh_TW</string>
-			<string>zh</string>
-		</array>
-
-	<key>Eclipse</key>
-		<array>
-			<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options:
-				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java</string>
-				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
-			-->
-			<string>-keyring</string><string>~/.eclipse_keyring</string>
-			<string>-showlocation</string>
-			<!-- WARNING:
-				If you try to add a single VM argument (-vmargs) here,
-				*all* vmargs specified in eclipse.ini will be ignored.
-				We recommend to add all arguments in eclipse.ini
-			 -->
-		</array>
-</dict>
-
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+
+<dict>
+	<key>CFBundleExecutable</key>
+		<string>eclipse</string>
+	<key>CFBundleGetInfoString</key>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
+	<key>CFBundleIconFile</key>
+		<string>Eclipse.icns</string>
+	<key>CFBundleIdentifier</key>
+		<string>org.eclipse.eclipse</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+		<string>6.0</string>
+	<key>CFBundleName</key>
+		<string>Eclipse</string>
+	<key>CFBundlePackageType</key>
+		<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+		<string>3.6</string>
+	<key>CFBundleSignature</key>
+		<string>????</string>
+	<key>CFBundleVersion</key>
+		<string>3.6</string>
+	<key>CFBundleDevelopmentRegion</key>
+		<string>English</string>
+	<key>CFBundleLocalizations</key>
+		<array>
+			<string>ar</string>
+			<string>cs</string>
+			<string>da</string>
+			<string>el</string>
+			<string>en</string>
+			<string>es</string>
+			<string>de</string>
+			<string>fi</string>
+			<string>fr</string>
+			<string>hu</string>
+			<string>it</string>
+			<string>iw</string>
+			<string>ja</string>
+			<string>ko</string>
+			<string>nl</string>
+			<string>no</string>
+			<string>pl</string>
+			<string>pt_BR</string>
+			<string>pt</string>
+			<string>ru</string>
+			<string>sv</string>
+			<string>tr</string>
+			<string>zh_HK</string>
+			<string>zh_TW</string>
+			<string>zh</string>
+		</array>
+
+	<key>Eclipse</key>
+		<array>
+			<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options:
+				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java</string>
+				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
+			-->
+			<string>-keyring</string><string>~/.eclipse_keyring</string>
+			<string>-showlocation</string>
+			<!-- WARNING:
+				If you try to add a single VM argument (-vmargs) here,
+				*all* vmargs specified in eclipse.ini will be ignored.
+				We recommend to add all arguments in eclipse.ini
+			 -->
+		</array>
+</dict>
+
+</plist>
diff --git a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Info.plist b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Info.plist
index ef79e22..ca325a6 100644
--- a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Info.plist
+++ b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Info.plist
@@ -6,7 +6,7 @@
 	<key>CFBundleExecutable</key>
 		<string>eclipse</string>
 	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.5 for Mac OS X, Copyright IBM Corp. and others 2002, 2008. All rights reserved.</string>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
 	<key>CFBundleIconFile</key>
 		<string>Eclipse.icns</string>
 	<key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleSignature</key>
 		<string>????</string>
 	<key>CFBundleVersion</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleDevelopmentRegion</key>
 		<string>English</string>
 	<key>CFBundleLocalizations</key>
diff --git a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Info.plist b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Info.plist
index ef79e22..ca325a6 100644
--- a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Info.plist
+++ b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Info.plist
@@ -6,7 +6,7 @@
 	<key>CFBundleExecutable</key>
 		<string>eclipse</string>
 	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.5 for Mac OS X, Copyright IBM Corp. and others 2002, 2008. All rights reserved.</string>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
 	<key>CFBundleIconFile</key>
 		<string>Eclipse.icns</string>
 	<key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleSignature</key>
 		<string>????</string>
 	<key>CFBundleVersion</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleDevelopmentRegion</key>
 		<string>English</string>
 	<key>CFBundleLocalizations</key>
diff --git a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Info.plist b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Info.plist
index ef79e22..ca325a6 100644
--- a/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Info.plist
+++ b/eclipse/features/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Info.plist
@@ -6,7 +6,7 @@
 	<key>CFBundleExecutable</key>
 		<string>eclipse</string>
 	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.5 for Mac OS X, Copyright IBM Corp. and others 2002, 2008. All rights reserved.</string>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
 	<key>CFBundleIconFile</key>
 		<string>Eclipse.icns</string>
 	<key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleSignature</key>
 		<string>????</string>
 	<key>CFBundleVersion</key>
-		<string>3.5</string>
+		<string>3.6</string>
 	<key>CFBundleDevelopmentRegion</key>
 		<string>English</string>
 	<key>CFBundleLocalizations</key>
diff --git a/eclipse/features/org.eclipse.equinox.executable/build.properties b/eclipse/features/org.eclipse.equinox.executable/build.properties
index 0c0aa94..d156bd9 100644
--- a/eclipse/features/org.eclipse.equinox.executable/build.properties
+++ b/eclipse/features/org.eclipse.equinox.executable/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -20,7 +20,8 @@ bin.includes = bin/,\
                target.build.xml,\
                license.html,\
                epl-v10.html,\
-               eclipse_update_120.jpg
+               eclipse_update_120.jpg,\
+               contributed/
 
 #Bug 139066 Launcher feature should not contain icons and splash screen
 bin.excludes=bin/**/Eclipse.icns,bin/**/icon.xpm,bin/**/*.pm,bin/**/splash.bmp
diff --git a/eclipse/features/org.eclipse.equinox.executable/customBuildCallbacks.xml b/eclipse/features/org.eclipse.equinox.executable/customBuildCallbacks.xml
index be5eaae..eaed1dd 100644
--- a/eclipse/features/org.eclipse.equinox.executable/customBuildCallbacks.xml
+++ b/eclipse/features/org.eclipse.equinox.executable/customBuildCallbacks.xml
@@ -72,6 +72,10 @@
 			<fileset dir="${feature.directory}/bin" />
 			<regexpmapper from="^(.*[/\\])eclipse(.exe)?$" to="\1launcher\2"/>
 		</move>
+		<move todir="${feature.directory}/contributed" verbose="true">
+			<fileset dir="${feature.directory}/contributed" />
+			<regexpmapper from="^(.*[/\\])eclipse(.exe)?$" to="\1launcher\2"/>
+		</move>
 	</target>
 	
 	<!-- ===================================================================== -->
diff --git a/eclipse/features/org.eclipse.equinox.executable/feature.properties b/eclipse/features/org.eclipse.equinox.executable/feature.properties
index f09398b..bc7b44d 100644
--- a/eclipse/features/org.eclipse.equinox.executable/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.executable/feature.properties
@@ -30,8 +30,8 @@ licenseURL=license.html
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to by "licenseURL"
 license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-March 17, 2005\n\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -39,42 +39,38 @@ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/
 OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
 USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
 AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
 AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
 AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
 TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
 OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
 BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
 \n\
 Applicable Licenses\n\
 \n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -83,47 +79,77 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
 \n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
 currently may have restrictions on the import, possession, and use,\n\
 and/or re-export to another country, of encryption software. BEFORE\n\
 using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
index 8267089..30606e2 100644
--- a/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
+++ b/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #*******************************************************************************
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at 
@@ -163,6 +163,9 @@ fi
 if [ "$defaultOSArch" = "ppc64" ];  then
 	M_ARCH=-m64
 	export M_ARCH
+elif [ "$defaultOSArch" = "s390" ];  then
+	M_ARCH=-m31
+	export M_ARCH
 fi
 
 LIBRARY_DIR="../../../org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.$defaultWS.$defaultOS.$defaultOSArch"
diff --git a/eclipse/features/org.eclipse.equinox.executable/license.html b/eclipse/features/org.eclipse.equinox.executable/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.executable/license.html
+++ b/eclipse/features/org.eclipse.equinox.executable/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.equinox.executable/target.build.properties b/eclipse/features/org.eclipse.equinox.executable/target.build.properties
index 3db7a22..8f0e254 100644
--- a/eclipse/features/org.eclipse.equinox.executable/target.build.properties
+++ b/eclipse/features/org.eclipse.equinox.executable/target.build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -57,4 +57,7 @@ root.linux.gtk.x86_64.permissions.755=libcairo-swt.so
 root.qnx.photon.x86=bin/photon/qnx/x86
 
 root.linux.motif.x86=bin/motif/linux/x86,motif_root
-root.linux.motif.x86.permissions.755=libXm.so.2,libcairo-swt.so
\ No newline at end of file
+root.linux.motif.x86.permissions.755=libXm.so.2,libcairo-swt.so
+
+root.linux.gtk.s390x=contributed/gtk/linux/s390x,gtk_root
+root.linux.gtk.s390=contributed/gtk/linux/s390,gtk_root
diff --git a/eclipse/features/org.eclipse.equinox.executable/target.build.xml b/eclipse/features/org.eclipse.equinox.executable/target.build.xml
index 1b29117..346a52c 100644
--- a/eclipse/features/org.eclipse.equinox.executable/target.build.xml
+++ b/eclipse/features/org.eclipse.equinox.executable/target.build.xml
@@ -169,6 +169,22 @@
 		</copy>
 		<chmod perm="755" dir="${feature.base}/linux.gtk.ia64/${collectingFolder}" includes="launcher" /> 
 	</target>
+	<target name="rootFileslinux_gtk_s390x">
+		<mkdir dir="${feature.base}/linux.gtk.s390x/${collectingFolder}"/>
+		<copy todir="${feature.base}/linux.gtk.s390x/${collectingFolder}" failonerror="true" overwrite="true">
+			<fileset dir="${basedir}/contributed/gtk/linux/s390x" includes="**"			/>
+			<fileset dir="${basedir}/gtk_root" includes="**"			/>
+		</copy>
+		<chmod perm="755" dir="${feature.base}/linux.gtk.s390x/${collectingFolder}" includes="launcher" /> 
+	</target>
+	<target name="rootFileslinux_gtk_s390">
+		<mkdir dir="${feature.base}/linux.gtk.s390/${collectingFolder}"/>
+		<copy todir="${feature.base}/linux.gtk.s390/${collectingFolder}" failonerror="true" overwrite="true">
+			<fileset dir="${basedir}/contributed/gtk/linux/s390" includes="**"			/>
+			<fileset dir="${basedir}/gtk_root" includes="**"			/>
+		</copy>
+		<chmod perm="755" dir="${feature.base}/linux.gtk.s390/${collectingFolder}" includes="launcher" /> 
+	</target>
 	<target name="rootFileslinux_motif_x86">
 		<mkdir dir="${feature.base}/linux.motif.x86/${collectingFolder}"/>
 		<copy todir="${feature.base}/linux.motif.x86/${collectingFolder}" failonerror="true" overwrite="true">
@@ -247,6 +263,7 @@
 		<antcall target="rootFileslinux_gtk_ppc64"/>
 		<antcall target="rootFileslinux_gtk_x86_64"/>
 		<antcall target="rootFileslinux_gtk_ia64"/>
+		<antcall target="rootFileslinux_gtk_s390x"/>
 		<antcall target="rootFileslinux_motif_x86"/>
 		<antcall target="rootFilessolaris_gtk_sparc"/>
 		<antcall target="rootFilessolaris_gtk_x86"/>
diff --git a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties
index 0c66ac4..6bd1ba0 100755
--- a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties
@@ -47,7 +47,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -72,21 +72,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -95,15 +95,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -116,18 +116,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -137,5 +167,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html
index c6af966..c184ca3 100755
--- a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html
+++ b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties
index 481c607..0753b2f 100755
--- a/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties
@@ -50,7 +50,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -75,21 +75,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -98,15 +98,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -119,18 +119,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -140,5 +170,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.p2.sdk/license.html b/eclipse/features/org.eclipse.equinox.p2.sdk/license.html
index c6af966..7ed55df 100755
--- a/eclipse/features/org.eclipse.equinox.p2.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.p2.sdk/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,40 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +61,53 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.equinox.p2.user.ui/feature.properties b/eclipse/features/org.eclipse.equinox.p2.user.ui/feature.properties
index 64ae437..2e92995 100644
--- a/eclipse/features/org.eclipse.equinox.p2.user.ui/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.p2.user.ui/feature.properties
@@ -30,7 +30,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -55,21 +55,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -78,15 +78,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -99,18 +99,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -120,5 +150,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.p2.user.ui/license.html b/eclipse/features/org.eclipse.equinox.p2.user.ui/license.html
index c6af966..61d632d 100644
--- a/eclipse/features/org.eclipse.equinox.p2.user.ui/license.html
+++ b/eclipse/features/org.eclipse.equinox.p2.user.ui/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,40 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +61,53 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/feature.properties
index 6fd1487..cd4e3c5 100644
--- a/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/feature.properties
@@ -45,8 +45,8 @@ licenseURL=license.html
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-March 17, 2005\n\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -54,42 +54,38 @@ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/
 OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
 USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
 AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
 AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
 AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
 TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
 OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
 BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
 \n\
 Applicable Licenses\n\
 \n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -98,47 +94,77 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
 \n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
 currently may have restrictions on the import, possession, and use,\n\
 and/or re-export to another country, of encryption software. BEFORE\n\
 using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/license.html
index c6af966..61d632d 100644
--- a/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.equinox.p2.user.ui/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,40 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +61,53 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.equinox.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.sdk/feature.properties
index 2cad1fa..c80d1e0 100644
--- a/eclipse/features/org.eclipse.equinox.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.sdk/feature.properties
@@ -16,7 +16,7 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
-featureName=Equinox Project SDK
+featureName=Equinox Target Components
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Equinox Project
@@ -52,7 +52,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -77,38 +77,38 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features andIncluded Features should be contained\n\
+conditions governing Features and Included Features should be contained\n\
 in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -121,18 +121,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -142,5 +172,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.equinox.sdk/feature.xml b/eclipse/features/org.eclipse.equinox.sdk/feature.xml
index 60bbeae..f3af010 100644
--- a/eclipse/features/org.eclipse.equinox.sdk/feature.xml
+++ b/eclipse/features/org.eclipse.equinox.sdk/feature.xml
@@ -37,4 +37,8 @@
          id="org.eclipse.equinox.executable"
          version="0.0.0"/>
 
+   <includes
+         id="org.eclipse.equinox.weaving.sdk"
+         version="0.0.0"/>   
+
 </feature>
diff --git a/eclipse/features/org.eclipse.equinox.sdk/license.html b/eclipse/features/org.eclipse.equinox.sdk/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.sdk/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.equinox.server.core/build.properties b/eclipse/features/org.eclipse.equinox.server.core/build.properties
index 64f93a9..2cbd854 100644
--- a/eclipse/features/org.eclipse.equinox.server.core/build.properties
+++ b/eclipse/features/org.eclipse.equinox.server.core/build.properties
@@ -1 +1,3 @@
-bin.includes = feature.xml
+bin.includes = feature.xml,\
+               feature.properties,\
+               license.html
diff --git a/eclipse/features/org.eclipse.equinox.server.core/feature.properties b/eclipse/features/org.eclipse.equinox.server.core/feature.properties
index c0a0b36..16cfd21 100644
--- a/eclipse/features/org.eclipse.equinox.server.core/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.server.core/feature.properties
@@ -32,103 +32,133 @@ Contributors:\n\
     IBM - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.server.core/license.html b/eclipse/features/org.eclipse.equinox.server.core/license.html
index 15a10cf..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.server.core/license.html
+++ b/eclipse/features/org.eclipse.equinox.server.core/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.server.jetty/build.properties b/eclipse/features/org.eclipse.equinox.server.jetty/build.properties
index 64f93a9..2cbd854 100644
--- a/eclipse/features/org.eclipse.equinox.server.jetty/build.properties
+++ b/eclipse/features/org.eclipse.equinox.server.jetty/build.properties
@@ -1 +1,3 @@
-bin.includes = feature.xml
+bin.includes = feature.xml,\
+               feature.properties,\
+               license.html
diff --git a/eclipse/features/org.eclipse.equinox.server.jetty/feature.properties b/eclipse/features/org.eclipse.equinox.server.jetty/feature.properties
index 04a5927..4904648 100644
--- a/eclipse/features/org.eclipse.equinox.server.jetty/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.server.jetty/feature.properties
@@ -32,103 +32,133 @@ Contributors:\n\
     IBM - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.server.jetty/license.html b/eclipse/features/org.eclipse.equinox.server.jetty/license.html
index 15a10cf..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.server.jetty/license.html
+++ b/eclipse/features/org.eclipse.equinox.server.jetty/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.server.p2/feature.properties b/eclipse/features/org.eclipse.equinox.server.p2/feature.properties
index 28ee608..4271e98 100644
--- a/eclipse/features/org.eclipse.equinox.server.p2/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.server.p2/feature.properties
@@ -32,103 +32,133 @@ Contributors:\n\
     IBM - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.server.p2/license.html b/eclipse/features/org.eclipse.equinox.server.p2/license.html
index 15a10cf..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.server.p2/license.html
+++ b/eclipse/features/org.eclipse.equinox.server.p2/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.server.servletbridge/build.properties b/eclipse/features/org.eclipse.equinox.server.servletbridge/build.properties
index 0c74b36..0bb82c9 100644
--- a/eclipse/features/org.eclipse.equinox.server.servletbridge/build.properties
+++ b/eclipse/features/org.eclipse.equinox.server.servletbridge/build.properties
@@ -1,3 +1,5 @@
 root=rootfiles
 bin.includes = feature.xml,\
-               rootfiles/
+               rootfiles/,\
+               license.html,\
+               feature.properties
diff --git a/eclipse/features/org.eclipse.equinox.server.servletbridge/feature.properties b/eclipse/features/org.eclipse.equinox.server.servletbridge/feature.properties
index 630432e..dee3d74 100644
--- a/eclipse/features/org.eclipse.equinox.server.servletbridge/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.server.servletbridge/feature.properties
@@ -32,103 +32,133 @@ Contributors:\n\
     IBM - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.server.servletbridge/license.html b/eclipse/features/org.eclipse.equinox.server.servletbridge/license.html
index 15a10cf..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.server.servletbridge/license.html
+++ b/eclipse/features/org.eclipse.equinox.server.servletbridge/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.server.simple/build.properties b/eclipse/features/org.eclipse.equinox.server.simple/build.properties
index 64f93a9..2cbd854 100644
--- a/eclipse/features/org.eclipse.equinox.server.simple/build.properties
+++ b/eclipse/features/org.eclipse.equinox.server.simple/build.properties
@@ -1 +1,3 @@
-bin.includes = feature.xml
+bin.includes = feature.xml,\
+               feature.properties,\
+               license.html
diff --git a/eclipse/features/org.eclipse.equinox.server.simple/feature.properties b/eclipse/features/org.eclipse.equinox.server.simple/feature.properties
index c8fea11..3f8befb 100644
--- a/eclipse/features/org.eclipse.equinox.server.simple/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.server.simple/feature.properties
@@ -32,103 +32,133 @@ Contributors:\n\
     IBM - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.server.simple/license.html b/eclipse/features/org.eclipse.equinox.server.simple/license.html
index 15a10cf..c184ca3 100644
--- a/eclipse/features/org.eclipse.equinox.server.simple/license.html
+++ b/eclipse/features/org.eclipse.equinox.server.simple/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties
index fff929f..38d7b1d 100755
--- a/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties
@@ -43,103 +43,133 @@ Contributors:\n\
     EclipseSource - initial API and implementation\n
 ################ end of copyright property ####################################
 
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html b/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html
index 15a10cf..c184ca3 100755
--- a/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html
@@ -1,79 +1,107 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties
index ef904b7..f93b673 100755
--- a/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties
@@ -45,8 +45,8 @@ licenseURL=license.html
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-March 17, 2005\n\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -54,42 +54,38 @@ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/
 OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
 USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
 AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
 AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
 AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
 TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
 OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
 BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
 \n\
 Applicable Licenses\n\
 \n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -98,47 +94,77 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
 \n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
 currently may have restrictions on the import, possession, and use,\n\
 and/or re-export to another country, of encryption software. BEFORE\n\
 using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html b/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html
index c6af966..c184ca3 100755
--- a/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html
+++ b/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.help/feature.properties b/eclipse/features/org.eclipse.help/feature.properties
index 626bb5d..a2fbb4e 100644
--- a/eclipse/features/org.eclipse.help/feature.properties
+++ b/eclipse/features/org.eclipse.help/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.help/license.html b/eclipse/features/org.eclipse.help/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.help/license.html
+++ b/eclipse/features/org.eclipse.help/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.help/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.help/sourceTemplateFeature/feature.properties
index acb4424..ce81b21 100644
--- a/eclipse/features/org.eclipse.help/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.help/sourceTemplateFeature/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.help/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.help/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.help/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.help/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.jdt/feature.properties b/eclipse/features/org.eclipse.jdt/feature.properties
index 360fa61..c94fe82 100644
--- a/eclipse/features/org.eclipse.jdt/feature.properties
+++ b/eclipse/features/org.eclipse.jdt/feature.properties
@@ -28,7 +28,7 @@ description=Eclipse Java development tools. (Binary runtime and user documentati
 
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
-Copyright (c) 2000, 2009 IBM Corporation and others.\n\
+Copyright (c) 2000, 2010 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\
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.jdt/license.html b/eclipse/features/org.eclipse.jdt/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.jdt/license.html
+++ b/eclipse/features/org.eclipse.jdt/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.jdt/rootfiles/notice.html b/eclipse/features/org.eclipse.jdt/rootfiles/notice.html
index 7d6ce3c..c184ca3 100644
--- a/eclipse/features/org.eclipse.jdt/rootfiles/notice.html
+++ b/eclipse/features/org.eclipse.jdt/rootfiles/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; Archive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/feature.properties
index 71679e6..67ad259 100644
--- a/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/feature.properties
@@ -28,7 +28,7 @@ description=API documentation and source code zips for Eclipse Java development
 
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
-Copyright (c) 2000, 2009 IBM Corporation and others.\n\
+Copyright (c) 2000, 2010 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\
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.jdt/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/about.properties b/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/about.properties
index b7099c7..02116f8 100644
--- a/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/about.properties
+++ b/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Java Development Tools SDK\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/jdt
 
diff --git a/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/plugin.properties b/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/plugin.properties
index 98d45f9..66e17bd 100644
--- a/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/plugin.properties
+++ b/eclipse/features/org.eclipse.jdt/sourceTemplatePlugin/plugin.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.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/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/feature.properties b/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/feature.properties
index c9d99b7..24a7500 100644
--- a/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/feature.properties
+++ b/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/feature.properties
@@ -44,7 +44,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -69,21 +69,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -92,15 +92,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -113,18 +113,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -134,5 +164,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/license.html b/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/license.html
+++ b/eclipse/features/org.eclipse.pde.api.tools.ee.fragments/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.pde/feature.properties b/eclipse/features/org.eclipse.pde/feature.properties
index 9016171..0cdd53e 100644
--- a/eclipse/features/org.eclipse.pde/feature.properties
+++ b/eclipse/features/org.eclipse.pde/feature.properties
@@ -28,7 +28,7 @@ description=Eclipse plug-in development environment.
 
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
-Copyright (c) 2000, 2009 IBM Corporation and others.\n\
+Copyright (c) 2000, 2010 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\
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.pde/license.html b/eclipse/features/org.eclipse.pde/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.pde/license.html
+++ b/eclipse/features/org.eclipse.pde/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.pde/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.pde/sourceTemplateFeature/feature.properties
index dc91f40..7f1f574 100644
--- a/eclipse/features/org.eclipse.pde/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.pde/sourceTemplateFeature/feature.properties
@@ -28,7 +28,7 @@ description=Eclipse plug-in development environment, including documentation and
 
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
-Copyright (c) 2000, 2009 IBM Corporation and others.\n\
+Copyright (c) 2000, 2010 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\
@@ -42,11 +42,15 @@ Contributors:\n\
 # do not translate value - just change to point to a locale-specific HTML page
 licenseURL=license.html
 
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +75,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +98,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +119,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +170,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.pde/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.pde/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.pde/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.pde/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.pde/sourceTemplatePlugin/about.properties b/eclipse/features/org.eclipse.pde/sourceTemplatePlugin/about.properties
index 67eb934..b4d259a 100644
--- a/eclipse/features/org.eclipse.pde/sourceTemplatePlugin/about.properties
+++ b/eclipse/features/org.eclipse.pde/sourceTemplatePlugin/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -21,6 +21,6 @@ blurb=Eclipse Plug-in Development Environment Developer Resources\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/pde
 
diff --git a/eclipse/features/org.eclipse.platform/feature.properties b/eclipse/features/org.eclipse.platform/feature.properties
index 758323a..beb18c9 100644
--- a/eclipse/features/org.eclipse.platform/feature.properties
+++ b/eclipse/features/org.eclipse.platform/feature.properties
@@ -50,7 +50,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -75,21 +75,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -98,15 +98,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -119,18 +119,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -140,5 +170,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.platform/feature.xml b/eclipse/features/org.eclipse.platform/feature.xml
index 2f1725f..65e6d99 100644
--- a/eclipse/features/org.eclipse.platform/feature.xml
+++ b/eclipse/features/org.eclipse.platform/feature.xml
@@ -490,17 +490,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.core.filesystem.qnx.x86"
-         os="qnx"
-         ws="photon"
-         arch="x86"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.core.filesystem.win32.x86"
          os="win32"
          arch="x86"
diff --git a/eclipse/features/org.eclipse.platform/license.html b/eclipse/features/org.eclipse.platform/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.platform/license.html
+++ b/eclipse/features/org.eclipse.platform/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.platform/rootfiles/notice.html b/eclipse/features/org.eclipse.platform/rootfiles/notice.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.platform/rootfiles/notice.html
+++ b/eclipse/features/org.eclipse.platform/rootfiles/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.platform/rootfiles/readme/readme_eclipse.html b/eclipse/features/org.eclipse.platform/rootfiles/readme/readme_eclipse.html
index 5ed41c4..53874f3 100644
--- a/eclipse/features/org.eclipse.platform/rootfiles/readme/readme_eclipse.html
+++ b/eclipse/features/org.eclipse.platform/rootfiles/readme/readme_eclipse.html
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <title>Eclipse Project Release Notes 3.6</title>
 </head>
 <body>
 
 <h1>Eclipse Project Release Notes</h1>
-<p>Release 3.6.0<br>
-  Last revised April 7, 2010</p>
-<p align="left"><strong>This software is OSI Certified Open Source Software.<br>
+<p>Release 3.6.0<br/>
+  Last revised June 2, 2010</p>
+<p align="left"><strong>This software is OSI Certified Open Source Software.<br/>
 OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</strong></p>
 <blockquote>
   <p align="left"><a href="#TargetOperatingEnvironments">1. Target Operating
-  Environments</a><br>
+  Environments</a><br/>
   <a href="#Compatibility">2. Compatibility with Previous
-  Releases</a><br>
-  <a href="#Known Issues">3. Known Issues</a><br>
-  <a href="#Running Eclipse">4. Running Eclipse</a><br>
-  <a href="#Upgrading">5. Upgrading a Workspace from a Previous Release</a><br>
-  <a href="#Interoperability with Previous Releases">6. Interoperability with
-  Previous Releases</a><br>
+  Releases</a><br/>
+  <a href="#KnownIssues">3. Known Issues</a><br/>
+  <a href="#RunningEclipse">4. Running Eclipse</a><br/>
+  <a href="#Upgrading">5. Upgrading a Workspace from a Previous Release</a><br/>
+  <a href="#InteroperabilityWithPreviousReleases">6. Interoperability with
+  Previous Releases</a><br/>
   </p>
 </blockquote>
 
@@ -31,12 +31,10 @@ OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</stro
   on the underlying operating system. The chief dependence is therefore on the
   Java Platform itself. Portions are targeted to specific classes of operating
   environments, requiring their source code to only reference facilities available
-  in particular class libraries (e.g. J2ME Foundation 1.0, J2SE 1.3 and 1.4,
-  etc.).</p>
-
-<p>In general, the 3.5 release of the Eclipse Project is developed on a mix
+  in particular class libraries (e.g. J2ME Foundation 1.1, J2SE 1.4, Java 5, etc).</p>
+<p>In general, the 3.6 release of the Eclipse Project is developed on a mix
   of Java 1.4, Java 5 and Java 6 VMs. As such, the Eclipse SDK as a whole
-  is targeted at all modern, desktop Java VMs. Full functionality is available for
+  is targeted at all modern, desktop Java VMs. Most functionality is available for
   1.4 level development everywhere, and extended development capabilities are made
   available on the VMs that support them.</p>
 <p><a href="#Appendix1">Appendix 1</a> contains a table that indicates the class
@@ -49,146 +47,191 @@ OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</stro
   them we cannot vouch for them. Problems encountered when running Eclipse on a
   non-reference platform that cannot be recreated on any reference platform will
   be given lower priority than problems with running Eclipse on a reference platform.</p>
-<p>Eclipse 3.5 is tested and validated on the following reference platforms</p>
-  
-
-  <table border="1" cellpadding="2" cellspacing="2" width="80%" summary="Eclipse Reference Platforms">
-    <tbody>
-      <tr align="center">
-        <td><b>Reference Platforms</b></td>
-      </tr>
-      <tr>
-        <td><b>Microsoft Windows Vista, x86-32, Win32</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Microsoft Windows</li>
-            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
-            <li>BEA JRockit 27.4.0, for Microsoft Windows</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Microsoft Windows XP, x86-32, Win32</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 6 Update 3 for Microsoft Windows</li>
-            <li>Sun Java Standard Edition 5 Update 14 for Microsoft Windows</li>
-            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
-            <li>BEA JRockit 27.4.0, for Microsoft Windows</li>
-            <li>Sun Java Standard Edition 1.4.2_16 for Microsoft Windows</li>
-            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 1.4.2 SR10</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Red Hat Enterprise Linux 5.0, x86-32, GTK</b> running (any of):
-          <ul>
-            <li> Sun Java Standard Edition 6 Update 3 for Linux x86</li>
-            <li>Sun Java Standard Edition 5 Update 14 for Linux x86</li>
-            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
-            <li>BEA JRockit 27.4.0, for Linux x86</li>
-            <li>Sun Java Standard Edition 1.4.2_16 for Linux x86</li>
-            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 1.4.2 SR10</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>SUSE Linux Enterprise Server 10, x86-32, GTK</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Linux x86</li>
-            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>SUSE Linux Enterprise Server 10, x86-64, GTK</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Linux x86-64</li>
-            <li>IBM 64-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Microsoft Windows Vista, x86-64, Win32</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Microsoft Windows (AMD64/EM64T)</li>
-            <li>IBM 64-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Microsoft Windows XP Professional x64 Edition, x86-64, Win32</b> running (any of):
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Microsoft Windows (AMD64/EM64T)</li>
-            <li>IBM 64-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Red Hat Enterprise Linux 4.0 update 2, x86-64, GTK</b> running:
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Linux x86-64</li>
-            <li>IBM 64-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Sun Solaris 10, SPARC, GTK</b> running:
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Solaris SPARC</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Sun Solaris 10, x86, GTK</b> running:
-          <ul>
-            <li>Sun Java Standard Edition 5 Update 14 for Solaris</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>HP-UX 11i v2, ia64, Motif 2.1, GTK</b> running:
-          <ul>
-            <li>HP-UX Java Standard Edition 5 Update 7 for Itanium</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>IBM AIX 5.3, Power, Motif 2.1</b> running:
-          <ul>
-            <li>IBM 32-bit SDK, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Red Hat Enterprise Linux 5.0, Power, GTK</b> running:
-          <ul>
-            <li>IBM 32-bit SDK for Linux on pSeries architecture, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>SUSE Linux Enterprise Server 10, Power, GTK</b> running:
-          <ul>
-            <li>IBM 32-bit SDK for Linux on pSeries architecture, Java 2 Technology Edition 5.0, SR6b</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Apple Mac OS X 10.5, Universal, Carbon</b> running:
-          <ul>
-            <li>Apple Java for Mac OS X 10.5, Update 1</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Apple Mac OS X 10.5, Universal 32-bit, Cocoa</b> running:
-          <ul>
-            <li>Apple Java for Mac OS X 10.5, Update 1</li>
-          </ul></td>
-      </tr>
-      <tr>
-        <td><b>Apple Mac OS X 10.5, Universal 64-bit, Cocoa</b> running:
-          <ul>
-            <li>Apple Java for Mac OS X 10.5, Update 1</li>
-          </ul></td>
-      </tr>
-	</tbody>    
-  </table>
-
+<p>Eclipse 3.6 is tested and validated on the following reference platforms:</p>
+<style type="text/css">
+	table.platforms {
+		border-width: 1px;
+		border-spacing: 0px;
+		border-style: solid;
+		border-collapse: separate;
+	}
+	table.platforms th {
+		border-width: 1px;
+		padding: 3px;
+		border-style: inset;
+		border-color: black;
+		background-color: #B9A9FF;
+	}
+	table.platforms td {
+		border-width: 1px 1px 1px 1px;
+		padding: 3px 3px 3px 3px;
+		border-style: inset inset inset inset;
+		border-color: gray gray gray gray;
+	}
+	table.platforms tr.c0 td {
+		background-color: #FDFDFD;
+	}
+	table.platforms tr.c1 td {
+		background-color: #F4EEFF;
+	}
+</style>
+<center>
+	<table class="platforms">
+		<tr>
+			<th>Operating System</th>
+			<th>Version</th>
+			<th>Hardware</th>
+			<th>JRE</th>
+			<th>Windowing System</th>
+		</tr>
+		<!-- ************ WINDOWS ************** -->
+		<tr class="c0">
+			<td rowspan="6">Windows</td>
+			<td rowspan="2">7</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td rowspan="2">Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+			<td rowspan="6">Win32</td>
+		</tr>
+		<tr>
+			<td rowspan="1">x86 64-bit</td>
+		</tr>
+		<tr>
+			<td rowspan="2">Vista</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td>Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11<br/>
+				Oracle JRockit 27.6.5
+			</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="1">x86 64-bit</td>
+			<td>Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="2">XP</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td>Sun Java 6 Update 17<br/>
+				Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11<br/>
+				Oracle JRockit 27.6.5
+			</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="1">x86 64-bit</td>
+			<td>Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+		</tr>
+		<!-- ************ RHEL ************** -->
+		<tr class="c1">
+			<td rowspan="3">Red Hat Enterprise Linux</td>
+			<td rowspan="2">5.0</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td>Sun Java 6 Update 17<br/>
+				Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11<br/>
+				Oracle JRockit 27.6.5
+			</td>
+			<td rowspan="3">GTK</td>
+		</tr>
+		<tr class="c1">
+			<td rowspan="1">Power 64-bit</td>
+			<td>IBM Java 5 SR11</td>
+		</tr>
+		<tr class="c1">
+			<td rowspan="1">4.0</td>
+			<td rowspan="1">x86 64-bit</td>
+			<td>Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+		</tr>
+		<!-- ************ SLES ************** -->
+		<tr class="c0">
+			<td rowspan="3">SUSE Linux Enterprise Server</td>
+			<td rowspan="3">11</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td rowspan="2">Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+			<td rowspan="3">GTK</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="1">x86 64-bit</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="1">Power 64-bit</td>
+			<td>IBM Java 5 SR11</td>
+		</tr>
+		<!-- ************ Ubuntu ************** -->
+		<tr class="c1">
+			<td rowspan="2">Ubuntu Long Term Support</td>
+			<td rowspan="2">10.04</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td rowspan="2">Sun Java 5 Update 22<br/>
+				IBM Java 5 SR11
+			</td>
+			<td rowspan="2">GTK</td>
+		</tr>
+		<tr class="c1">
+			<td rowspan="1">x86 64-bit</td>
+		</tr>
+		<!-- ************ Solaris ************** -->
+		<tr class="c0">
+			<td rowspan="2">Sun Solaris</td>
+			<td rowspan="2">10</td>
+			<td rowspan="1">x86 32-bit</td>
+			<td rowspan="2">Sun Java 5 Update 22</td>
+			<td rowspan="2">GTK</td>
+		</tr>
+		<tr class="c0">
+			<td rowspan="1">SPARC 32-bit</td>
+		</tr>
+		<!-- ************ HPUX ************** -->
+		<tr class="c1">
+			<td rowspan="1">HP-UX</td>
+			<td rowspan="1">11i v2</td>
+			<td rowspan="1">ia64 32-bit</td>
+			<td rowspan="1">HP-UX Java 5 Update 18</td>
+			<td rowspan="1">Motif 2.1</td>
+		</tr>
+		<!-- ************ AIX ************** -->
+		<tr class="c0">
+			<td rowspan="1">IBM AIX</td>
+			<td rowspan="1">5.3</td>
+			<td rowspan="1">Power 32-bit</td>
+			<td rowspan="1">IBM Java 5 SR11</td>
+			<td rowspan="1">Motif 2.1</td>
+		</tr>
+		<!-- ************ Mac ************** -->
+		<tr class="c1">
+			<td rowspan="3">Apple Mac OS X</td>
+			<td rowspan="3">10.5</td>
+			<td rowspan="1">Universal</td>
+			<td rowspan="3">Apple Java 10.5 Update 2</td>
+			<td rowspan="1">Carbon</td>
+		</tr>
+		<tr class="c1">
+			<td rowspan="1">Universal 32-bit</td>
+			<td rowspan="2">Cocoa</td>
+		</tr>
+		<tr class="c1">
+			<td rowspan="1">Universal 64-bit</td>
+		</tr>
+	</table>
+ </center>
 
 <p>As stated above, <i>we expect that Eclipse works fine on other current
   Java VM and OS versions but we cannot flag these as reference platforms without
   significant community support for testing them.</i></p>
-<h4>Internationalization</h4>
+
 <p>The Eclipse SDK is designed as the basis for internationalized products. The
   user interface elements provided by the Eclipse SDK components, including dialogs
   and error messages, are externalized. The English strings are provided as the
   default resource bundles.</p>
-
 <p>Latin-1 and DBCS locales are supported by the Eclipse SDK on all reference platforms;
   BIDI locales are supported by the Eclipse SDK everywhere but on Motif.</p>
 <p>The Eclipse SDK supports GB 18030 (level 1), the Chinese code page standard,
@@ -196,58 +239,57 @@ OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</stro
 <p>German and Japanese locales are tested.</p>
 
 <h2>2. <a name="Compatibility"></a>Compatibility with Previous Releases</h2>
-<h3>Compatibility of Release 3.5 with 3.4</h3>
-<p>Eclipse 3.5 is compatible with Eclipse 3.4 (and all earlier 3.x versions).</p>
+<h3>Compatibility of Release 3.6 with 3.5</h3>
+<p>Eclipse 3.6 is compatible with Eclipse 3.5 (and all earlier 3.x versions).</p>
 
-<p><strong>API Contract Compatibility:</strong> Eclipse SDK 3.5 is upwards
-  contract-compatible with Eclipse SDK 3.4 except in those areas noted in the
-  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
-    <em>Eclipse 3.5 Plug-in Migration Guide</em>
+<p><strong>API Contract Compatibility:</strong> Eclipse SDK 3.6 is upwards
+  contract-compatible with Eclipse SDK 3.5 except in those areas noted in the
+  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_6_porting_guide.html" target="_top">
+    <em>Eclipse 3.6 Plug-in Migration Guide</em>
   </a>. Programs that use affected APIs and extension points will need to be ported
-  to Eclipse SDK 3.5 APIs. Downward contract compatibility
-  is not supported. There is no guarantee that compliance with Eclipse SDK 3.5
-  APIs would ensure compliance with Eclipse SDK 3.4 APIs. Refer to
+  to Eclipse SDK 3.6 APIs. Downward contract compatibility
+  is not supported. There is no guarantee that compliance with Eclipse SDK 3.6
+  APIs would ensure compliance with Eclipse SDK 3.5 APIs. Refer to
   <a href="http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs">
     <em>Evolving Java-based APIs</em>
   </a> for a discussion of the kinds of API changes that maintain contract compatibility.</p>
   
-<p><strong>Binary (plug-in) Compatibility:</strong> Eclipse SDK 3.5 is upwards
-  binary-compatible with Eclipse SDK 3.4 except in those areas noted in the
-  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
-    <em>Eclipse 3.5 Plug-in Migration Guide</em>
-  </a>. Downward plug-in compatibility is not supported. Plug-ins developed for Eclipse SDK
-  3.5 will not be usable in Eclipse SDK 3.4. Refer to
+<p><strong>Binary (plug-in) Compatibility:</strong> Eclipse SDK 3.6 is upwards
+  binary-compatible with Eclipse SDK 3.5 except in those areas noted in the
+  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_6_porting_guide.html" target="_top">
+    <em>Eclipse 3.6 Plug-in Migration Guide</em>
+  </a>. Downward plug-in compatibility is not supported. Plug-ins for Eclipse SDK
+  3.6 will not be usable in Eclipse SDK 3.5. Refer to
   <a href="http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs">
     <em>Evolving Java-based APIs</em>
   </a> for a discussion of the kinds of API changes that maintain binary compatibility.</p>
   
-<p><strong>Source Compatibility:</strong> Eclipse SDK 3.5 is upwards source-compatible
-  with Eclipse SDK 3.4 except in the areas noted in the
-  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
-
-    <em>Eclipse 3.5 Plug-in Migration Guide</em>
+<p><strong>Source Compatibility:</strong> Eclipse SDK 3.6 is upwards source-compatible
+  with Eclipse SDK 3.5 except in the areas noted in the
+  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_6_porting_guide.html" target="_top">
+    <em>Eclipse 3.6 Plug-in Migration Guide</em>
   </a>. This means that source files written
-  to use Eclipse SDK 3.4 APIs might successfully compile and run against Eclipse
-  SDK 3.5 APIs, although this is not guaranteed. Downward source compatibility
+  to use Eclipse SDK 3.5 APIs might successfully compile and run against Eclipse
+  SDK 3.6 APIs, although this is not guaranteed. Downward source compatibility
   is not supported. If source files use new Eclipse SDK APIs, they will not be
   usable with an earlier version of the Eclipse SDK. </p>
   
-<p><strong>Workspace Compatibility:</strong> Eclipse SDK 3.5 is upwards
+<p><strong>Workspace Compatibility:</strong> Eclipse SDK 3.6 is upwards
   workspace-compatible with earlier 3.x versions of the Eclipse SDK unless noted.
-  This means that workspaces and projects created with Eclipse SDK 3.0 to 3.4 can be successfully
-  opened by Eclipse SDK 3.5 and upgraded to a 3.5 workspace. This includes both
+  This means that workspaces and projects created with Eclipse SDK 3.5 .. 3.0 can be successfully
+  opened by Eclipse SDK 3.6 and upgraded to a 3.6 workspace. This includes both
   hidden metadata, which is localized to a particular workspace, as well as metadata
   files found within a workspace project (e.g., the .project file), which may
   propagate between workspaces via file copying or team repositories. Individual
-  plug-ins developed for Eclipse SDK 3.5 should provide similar upwards compatibility
+  plug-ins developed for Eclipse SDK 3.6 should provide similar upwards compatibility
   for their hidden and visible workspace metadata created by earlier versions;
-  3.5 plug-in developers are responsible for ensuring that their plug-ins recognize
+  3.6 plug-in developers are responsible for ensuring that their plug-ins recognize
   metadata from earlier versions and process it appropriately. User
   interface session state may be discarded when a workspace is upgraded. Downward
   workspace compatibility is not supported. A workspace created (or opened) by
-  a product based on Eclipse 3.5 will be unusable with a product based on an earlier
+  a product based on Eclipse 3.6 will be unusable with a product based on an earlier
   version of Eclipse. Visible metadata files created (or overwritten) by Eclipse
-  3.5 will generally be unusable with earlier versions of Eclipse. </p>
+  3.6 will generally be unusable with earlier versions of Eclipse. </p>
   
 <p><strong>Non-compliant usage of API's</strong>: All non-API methods and classes,
   and certainly everything in a package with &quot;internal&quot; in its name,
@@ -257,33 +299,33 @@ OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</stro
   unsupportable and receive no guarantees about compatibility within a single
   release much less with earlier releases. Refer to
   <a href="http://www.eclipse.org/articles/Article-API%20use/eclipse-api-usage-rules.html">
-    <em>How to Use the Eclipse API</em></a> 
-    for information about how to write compliant plug-ins. </p>
+    <em>How to Use the Eclipse API</em>
+  </a> for information about how to write compliant plug-ins. </p>
 
-<h2>3. <a name="Known Issues"></a> Known Issues</h2>
+<h2>3. <a name="KnownIssues"></a> Known Issues</h2>
 <blockquote>
   <a href="#I-General">
-  3.1 General problems</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-Startup">3.1.1 Startup</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-GCJ">3.1.2 GCJ</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-64bitJava">3.1.3 64-bit Java HotSpot(TM) VM</a><br>
-  <a href="#I-Platform">3.2 Platform</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Core">3.2.1 Core</a><br>
-
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Ant">3.2.2 Ant</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-User-Assistance">3.2.3 User Assistance</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-UI">3.2.4 UI</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Text">3.2.5 Text</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-SWT">3.2.6 SWT</a><br>
-
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Team-CVS">3.2.7 Team and CVS</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Install-Update">3.2.8  Install/Update</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Debug">3.2.9 Debug</a><br>
-  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Compare">3.2.10 Compare</a><br>
+  3.1 General problems</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-Startup">3.1.1 Startup</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-GCJ">3.1.2 GCJ</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-General-64bitJava">3.1.3 64-bit Java HotSpot(TM) VM</a><br/>
+  <a href="#I-Platform">3.2 Platform</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Core">3.2.1 Core</a><br/>
+
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Ant">3.2.2 Ant</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-User-Assistance">3.2.3 User Assistance</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-UI">3.2.4 UI</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Text">3.2.5 Text</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-SWT">3.2.6 SWT</a><br/>
+
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Team-CVS">3.2.7 Team and CVS</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Install-Update">3.2.8  Install/Update</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Debug">3.2.9 Debug</a><br/>
+  &nbsp;&nbsp;&nbsp;&nbsp; <a href="#I-Platform-Compare">3.2.10 Compare</a><br/>
   <a href="#I-JDT">
-  3.3 Java development tools (JDT)</a><br>
+  3.3 Java development tools (JDT)</a><br/>
   <a href="#I-PDE">
-  3.4 Plug-in Development Environment (PDE)</a><br>
+  3.4 Plug-in Development Environment (PDE)</a><br/>
 
 </blockquote>
 <p>Note: Bug numbers refer to the Eclipse project bug database at <a href="http://dev.eclipse.org/bugs/">http://bugs.eclipse.org/bugs/</a></p>
@@ -293,15 +335,15 @@ OSI Certified is a certification mark of the Open Source Initiative.&nbsp;</stro
 <h4>Installation/Configuration issues that can cause Eclipse to fail start</h4>
 <p>Here are some common problems that can cause Eclipse not to start:</p>
 <ul>
-  <li>As shown <a href="#TargetOperatingEnvironments">above</a>, Eclipse 3.5 requires 
+  <li>As shown <a href="#TargetOperatingEnvironments">above</a>, Eclipse 3.6 requires 
     at least a 1.4.2 VM. Perhaps an older version of the VM is being found in 
     your path. To explicitly specify which VM to run with, use the Eclipse <tt>-vm</tt> 
-    command-line argument. (See also the <a href="#Running Eclipse">Running Eclipse</a> 
+    command-line argument. (See also the <a href="#RunningEclipse">Running Eclipse</a> 
     section below.)</li>
   <li>
     Running Eclipse on Gentoo Linux may result in the following error message:
     <div style="margin-left: 40px;">
-<tt>* run-java-tool is not available for sun-jdk-1.6 on i686<br>* IMPORTANT: some Java tools are not available on some VMs on some architectures</tt>
+<tt>* run-java-tool is not available for sun-jdk-1.6 on i686<br/>* IMPORTANT: some Java tools are not available on some VMs on some architectures</tt>
     </div>
 
 If this occurs, start Eclipse by specifying a -vm argument, either
@@ -336,7 +378,7 @@ and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=17281">17281</a>)</p>
 <p>
 The Sun VM may hang indefinitely during class loading if it runs out of permanent
 generation memory.  This will cause CPU usage to stay at 100% until the process
-is ended.  See the section <a href="#Running Eclipse">Running Eclipse</a> for details
+is ended.  See the section <a href="#RunningEclipse">Running Eclipse</a> for details
 on addressing this VM problem.
 </p>
 
@@ -364,7 +406,7 @@ run Eclipse by going to <b>Help &gt; About Eclipse SDK &gt; Installation Details
 <b>About</b> dialog itself can also provide other information, the build identifier
 can be of particular interest as it is tagged by some distributions. This allows the
 user to identify whether Eclipse was downloaded through the distribution's
-package management system or directly from the eclipse.org website.</p>
+package management system or directly from the eclipse.org web site.</p>
 
 Eg: <code>Build id: M20070212-1330 (Ubuntu version: 3.2.2-0ubuntu3)</code>
 
@@ -378,10 +420,10 @@ Eg: <code>Build id: M20070212-1330 (Ubuntu version: 3.2.2-0ubuntu3)</code>
 
 It is imperative that 64-bit builds are downloaded and used if a 64-bit Java
 runtime environment has been installed. Below are two sample tarball names of
-version 3.5.0 of the Eclipse SDK packaged for 32-bit and 64-bit processors.
+version 3.6.0 of the Eclipse SDK packaged for 32-bit and 64-bit processors.
 
-<pre>eclipse-SDK-3.5-linux-gtk.tar.gz (32-bit)
-eclipse-SDK-3.5-linux-gtk-x86_64.tar.gz (64-bit)</pre>
+<pre>eclipse-SDK-3.6-linux-gtk.tar.gz (32-bit)
+eclipse-SDK-3.6-linux-gtk-x86_64.tar.gz (64-bit)</pre>
 
 <p>To run Eclipse with an alternate Java runtime environment, the path to the Java
 virtual machine's binary must be identified. With an Eclipse installation from
@@ -391,8 +433,8 @@ Linux distributions package often performs a scan internally to pick up GCJ by
 itself whilst ignoring what's on the $PATH. An example of the terminal's output
 is shown below:</p>
 
-<code>searching for compatible vm...<br>
-  testing /usr/lib/jvm/java-7-icedtea...not found<br>
+<code>searching for compatible vm...<br/>
+  testing /usr/lib/jvm/java-7-icedtea...not found<br/>
   testing /usr/lib/jvm/java-gcj...found</code>
 
 <p>Once the path to the virtual machine's binary has been identified, try running
@@ -402,7 +444,7 @@ Eclipse with the following command:</p>
 
 <p>For an actual example, it might look something like the following:</p>
 
-<code>./eclipse -vm /usr/lib/jvm/sun-java-6/bin/java<br>
+<code>./eclipse -vm /usr/lib/jvm/sun-java-6/bin/java<br/>
 ./eclipse -vm /opt/sun-jdk-1.6.0.02/bin/java</code>
 
 <p>If this seems to solve the problem, it is likely that the problem really was
@@ -411,14 +453,14 @@ eclipse.ini file located within Eclipse's folder can be altered to
 automatically pass this argument to Eclipse at startup. An example of its
 content is presented below:</p>
 
-<code>-showsplash<br>
-org.eclipse.platform<br>
---launcher.XXMaxPermSize<br>
-256m<br>
--vm<br>
-/opt/sun-jdk-1.6.0.02/bin/java<br>
--vmargs<br>
--Xms40m<br>
+<code>-showsplash<br/>
+org.eclipse.platform<br/>
+--launcher.XXMaxPermSize<br/>
+256m<br/>
+-vm<br/>
+/opt/sun-jdk-1.6.0.02/bin/java<br/>
+-vmargs<br/>
+-Xms40m<br/>
 -Xmx512m</code>
 
 <p>Note that every argument must be on its own line. More information about the
@@ -454,18 +496,18 @@ This VM argument can be placed in the eclipse.ini file after the -vmargs line li
 </p>
 
 <code>
--startup<br>
-plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090306-1900<br>
---launcher.library<br>
-plugins/org.eclipse.equinox.launcher_1.0.200.v20090429-1630.jar<br>
--showsplash<br>
-org.eclipse.platform<br>
---launcher.XXMaxPermSize<br>
-256m<br>
--vmargs<br>
--XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith<br>
--Xms40m<br>
--Xmx256m<br>
+-startup<br/>
+plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090306-1900<br/>
+--launcher.library<br/>
+plugins/org.eclipse.equinox.launcher_1.0.200.v20090429-1630.jar<br/>
+-showsplash<br/>
+org.eclipse.platform<br/>
+--launcher.XXMaxPermSize<br/>
+256m<br/>
+-vmargs<br/>
+-XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith<br/>
+-Xms40m<br/>
+-Xmx256m<br/>
 </code>
 
 <p>
@@ -739,7 +781,10 @@ menu.</p>
 <h4>Default text file encoding
 may be detected incorrectly (Windows XP/2000 only)</h4>
 
-<p><strong>Note</strong>: the bug report associated with this problem has been fixed. If you run Eclipse with JDK 1.5 or greater you should not have to use the workaround stated below any longer. However, the problem still exists when running Eclipse with JDK 1.4.x or lower, so in this case  the workaround is still required . </p>
+<p><strong>Note</strong>: the bug report associated with this problem has been fixed. 
+If you run Eclipse with JDK 1.5 or greater you should not have to use the workaround 
+stated below any longer. However, the problem still exists when running Eclipse with 
+JDK 1.4.x or lower, so in this case  the workaround is still required . </p>
 <p>The &quot;Text file encoding&quot; value displayed in the Preferences
   dialog under &quot;Editors&quot; may be wrong on platforms running Windows XP
 (or 2000) when the user locale and system locale differ.&nbsp;</p>
@@ -909,38 +954,51 @@ for more information.</p>
 <p>When running on the IBM Java 5.0 VM, Eclipse crashes while the user is typing in an editor.
 If using this VM you must disable the JIT with the -Xnojit vm argument to avoid the crashes
 (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=116730">116730</a>).
-The command line for launching Eclipse with this vm should be: <br>
+The command line for launching Eclipse with this vm should be: <br/>
 <code>eclipse -vmargs -Dosgi.locking=none -Xnojit</code>
 </p>
 
 <h4>Eclipse won't start (Linux GTK PPC only)</h4>
 <p>Eclipse fails to create a lock file with reason &quot;No locks available&quot;. 
 To launch eclipse you must disable file locking using the osgi.locking property.
-For example, you could launch eclipse as follows: <br>
+For example, you could launch eclipse as follows: <br/>
 <code>eclipse -vmargs -Dosgi.locking=none</code>
 </p>
 
-<h4>SWT for carbon cannot be used with OS X JRE version 1.6 (Mac OSX only)</h4>
-<p>OS X JRE version 1.6 assumes that pointers have a size of 64 bits, but SWT's Carbon
-port only uses 32-bit pointers, so SWT and Eclipse cannot be used with OS X JRE version
-1.6.  The workaround is to use the cocoa version of SWT or an earlier supported version
-of the OS X JRE.
+<h4>SWT for Carbon cannot be used with Mac OS X JRE version 1.6 (Mac OS X 10.5 only)</h4>
+<p>On Leopard (Mac OS X 10.5), JDK version 1.6 assumes that pointers have a size of 64 bits, but SWT's Carbon
+port only uses 32-bit pointers, so SWT and Eclipse cannot be used on Leopard with JDK version
+1.6.  The workaround is to use the Cocoa version of SWT or an earlier supported version
+of the Mac OS X JDK.
+</p>
+<p>Snow Leopard (Mac OS X 10.6) has both a 32-bit and 64-bit version of JDK 1.6, so this restriction does not apply on that version of the operating system.
 </p>
 
 <h4>Strings may be truncated or incorrectly wrapped on RHEL5 (Linux GTK only)</h4>
 <p>
 Strings on wrapping Controls may not appear correctly in some locales on RHEL5 as a result
 of a bug in Pango version 1.14.x.  This problem can be fixed by upgrading the installed
-Pango library to a version that is newer than 1.14.x.  (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=231951">231951</a>)
+Pango library to a version that is newer than 1.14.x. (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=231951">231951</a>)
 </p>
 
 <h4>Block Selection functionality provided by StyledText is not BIDI aware</h4>
 <p>
 When the orientation of characters under the left and right edges of the block
 selection rectangle are not the same, the actual selection ranges (in memory)
-differ from the visual representation of the selection.(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=277929">277929</a>)
+differ from the visual representation of the selection. (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=277929">277929</a>)
 </p>
 
+<h4>Older versions of some Windows screen readers no longer work with Eclipse</h4>
+<p>JAWS versions 8 and 9 and Window-Eyes version 6 no longer work well with Eclipse and other SWT applications.
+Window-Eyes 6 will cause Eclipse to crash, and JAWS 8 and 9 can cause SWT applications to crash.
+This happens because IAccessible2 support was added to SWT for Eclipse 3.6, but these older screen reader versions contain
+partial implementations of IAccessible2 that do not follow the current IAccessible2 specification.</p>
+<p>
+The workaround for these cases is to specify Java property <code>org.eclipse.swt.accessibility.UseIA2</code> with value <code>false</code>,
+which will instruct SWT to not attempt to use IA2 interfaces.  An easy way to set this property is to specify VM argument
+<code>-Dorg.eclipse.swt.accessibility.UseIA2=false</code> when launching Eclipse or your SWT application. (bug
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313182">313182</a>)</p>
+
 
 <h3>3.2.7 <a name="I-Platform-Team-CVS">Platform - Team - CVS</a></h3>
 <p>The following are known problems with the CVS repository provider only, and
@@ -1018,11 +1076,11 @@ means the server is using a self-signed certificate, or a certificate authentica
 an unknown third party.</p>
 
 <h4>Extension location is lost if the install path changes</h4>
-<P>A previously configured extension location may be temporarily removed if the install is moved or mounted 
+<p>A previously configured extension location may be temporarily removed if the install is moved or mounted 
 under a different path. This only happens when the link file that configures the 
 extension location uses a relative path that points to a directory under the Eclipse 
 install. On a second startup using the same install path, the extension location 
-is added again (bug <A HREF="https://bugs.eclipse.org/bugs/show_bug.cgi?id=95403">95403</A>). <BR></P>
+is added again (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=95403">95403</a>). <br/></p>
 
 <h4>Feature patches can only be installed from Eclipse 3.4-based update sites</h4>
 <p>Feature patches can only be installed from update sites designed for Eclipse 3.4 or greater.
@@ -1030,7 +1088,7 @@ Specifically, the update site must have the necessary metadata for Equinox p2 (a
 or content.jar file). This data can be generated by building an update site using Eclipse 3.4
 or newer, or running the p2 metadata generator on an update site built using earlier versions
 of the Eclipse SDK. See the help topic <i>Generating p2 metadata</i> for more details on running the p2 metadata
-generator (bug <A HREF="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244483">244483</A>).
+generator (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244483">244483</a>).
 </p>
 
 <h3>3.2.9 <a name="I-Platform-Debug">Platform - Debug</a></h3>
@@ -1044,7 +1102,7 @@ section.)</p>
 
 <h4>Multiple regions formatting in a given source snippet</h4>
 In version 3.4, the new API method <code>org.eclipse.jdt.core.formatter.CodeFormatter.format(int, String, IRegion[], int, String)</code>
-has been added to allow the formatting of several regions in a source snippet with a single pass.<br>
+has been added to allow the formatting of several regions in a source snippet with a single pass.<br/>
 Even if specified, this method does not currently accept comments of the following kinds:
 <ul>
 <li><code>org.eclipse.jdt.core.formatter.CodeFormatter#K_SINGLE_LINE_COMMENT</code></li>
@@ -1238,7 +1296,7 @@ throw <code>UnsupportedOperationException</code>.</p>
 <p>
 Java 6 annotation processors are supported in the batch compiler and in the
 IDE. By design, Java 6 processors are only executed during a build, not while
-editing (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=188558">188558</a>).</p>
+editing. (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=188558">188558</a>)</p>
 <p>
 Java 5 annotation processors are supported in the IDE only. Java 5 processors
 can be executed while editing, as well as during a build. Slow annotation
@@ -1246,6 +1304,11 @@ processors can cause a slowdown of the editing experience. If this occurs, you
 may wish to turn off <b>Enable processing in editor</b> on the <b>Java Compiler &gt; Annotation Processing</b> properties
 page of your Java project.</p>
 
+<h4>Java indexing encounters problems when a folder is used both as a source and a class folder</h4>
+<p>Java indexing encounters problems when a folder is used both as a source folder
+in a project and as a class folder in another project. Hence, when this peculiar setup is
+used, the Java Search might miss matches located in such a folder. To avoid this kind of problem, it is strongly advised to use different
+folders for sources and binary classes. (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309903">309903</a>)</p>
 
 <h3>3.4 <a name="I-PDE">Plug-in Development Environment (PDE)</a></h3>
 <h4>Feature manifest editor does not preserve all comments</h4>
@@ -1333,12 +1396,12 @@ to edit the imported plug-ins is not required).
 (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=280259">280259</a>)
 </p>
 
-<h2>4. <a name="Running Eclipse">Running Eclipse</a></h2>
+<h2>4. <a name="RunningEclipse">Running Eclipse</a></h2>
 <p>After installing the Eclipse SDK in a directory, you can start the Workbench
 by running the Eclipse executable included with the release (you also need a 1.4.2
 JRE, not included with the Eclipse SDK). On Windows, the executable file is called <samp>eclipse.exe</samp>,
 and is located in the <code>eclipse</code> sub-directory of the install. If
-installed at <code>c:\eclipse-SDK-3.5-win32</code>, the executable is <code>c:\eclipse-SDK-3.5-win32\eclipse\eclipse.exe</code>.
+installed at <code>c:\eclipse-SDK-3.6-win32</code>, the executable is <code>c:\eclipse-SDK-3.6-win32\eclipse\eclipse.exe</code>.
 
 <b>Note:</b> Set-up on most other operating environments is analogous. Special
 instructions for Mac OS X are listed <a href="#macosx">below</a>.</p>
@@ -1479,12 +1542,19 @@ start Eclipse, your upgrade path is much easier:</p>
 after you've upgraded your workspace, you won't be able to use it
 again with an older version of Eclipse. If you ever want to go &quot;back in
 time&quot; to an earlier release, you will need that backup.</p>
-
-
-<h2>6. <a name="Interoperability with Previous Releases">Interoperability with
+<h3> Users who use User Libraries or classpath containers that contain JARs referencing other libraries via Class-Path in the MANIFEST.MF</h3>
+<p>
+If you want the referenced JAR files to be included in the classpath, you can do one of the following:<br/>
+<ul>
+<li>Add the system property (<code>-DresolveReferencedLibrariesForContainers=true</code>) to the <code>-vmargs</code>
+list on start-up, or</li>
+<li>Manually add the referenced JARs to the User Library or to the project.</li>
+</ul>
+</p>
+<h2>6. <a name="InteroperabilityWithPreviousReleases">Interoperability with
 Previous Releases</a></h2>
-<h3>6.1 Interoperability of Release 3.5 with previous releases</h3>
-<h4>Sharing projects between heterogeneous Eclipse 3.5 and 3.4</h4>
+<h3>6.1 Interoperability of Release 3.6 with previous releases</h3>
+<h4>Sharing projects between heterogeneous Eclipse 3.6 and 3.5</h4>
 <p>Special care is required when a project in a team repository is being loaded
 and operated on by developers using Eclipse-based products based on different
 feature or plug-in versions. The general problem is that the existence,
@@ -1492,57 +1562,67 @@ contents, and interpretation of metadata files in the workspaces may be specific
 to a particular feature or plug-in version, and differ between versions. The
 workspace compatibility guarantees only cover cases where all developers upgrade
 their Eclipse workspaces in lock step. In those cases there should be no problem
-with shared metadata. However, when some developers are working in Eclipse 3.5
-while others are working in Eclipse 3.4, there are no such guarantees.
+with shared metadata. However, when some developers are working in Eclipse 3.6
+while others are working in Eclipse 3.5, there are no such guarantees.
 This section provides advice for what to do and not to do. It addresses the
 specific issues with the Eclipse SDK.</p>
 
-<p>The typical failure mode is noticed by the 3.5 user. 3.5 metadata is lost
-when a 3.4 user saves changes and then commits the updated metadata files to the
+<p>The typical failure mode is noticed by the 3.6 user. 3.6 metadata is lost
+when a 3.5 user saves changes and then commits the updated metadata files to the
 repository. Here's how things typically go awry:</p>
 <ul>
-  <li>A user working in Eclipse 3.5 creates or modifies a project in a way that
-    results in changes to a shared metadata file that rely on 3.5-specific
+  <li>A user working in Eclipse 3.6 creates or modifies a project in a way that
+    results in changes to a shared metadata file that rely on 3.6-specific
     information. The user then commits the updated project files, including the
     shared metadata file, to the shared repository.</li>
-  <li>Another user working in Eclipse 3.4 shares this project from the same
-    repository. The 3.5-specific information in the shared metadata file is not
-    understood by Eclipse 3.4, and is generally discarded or ignored without
+  <li>Another user working in Eclipse 3.5 shares this project from the same
+    repository. The 3.6-specific information in the shared metadata file is not
+    understood by Eclipse 3.5, and is generally discarded or ignored without
     warning. The user modifies the project in a way that results in changes to
     the shared metadata file, causing the shared metadata file to be rewritten
-    without any of the 3.5-specific information. The user commits the updated
+    without any of the 3.6-specific information. The user commits the updated
     project files, including the shared metadata file, to the shared repository.
     The user is generally unaware that shared information has just been lost as
     a result of their actions.</li>
-  <li>A user working in Eclipse 3.5 picks up the changes to a project from the
+  <li>A user working in Eclipse 3.6 picks up the changes to a project from the
     shared repository, including the updated shared metadata file. The user may
     be unaware that they have just taken a retrograde step until later when
     things start to malfunction.</li>
 </ul>
 <p>Here are some things to watch out for when sharing projects between
-Eclipse 3.5 and earlier 3.x releases:</p>
+Eclipse 3.6 and earlier 3.x releases:</p>
 <ul>
-  <li><b>Linked resources in the .project file</b> - 
-  Eclipse 3.5 supports creating linked resources at arbitrary depth within a project,
-  and supports creating linked resources referring to other file systems. Neither of
-  these scenarios are supported in Eclipse 3.1 or earlier.  If such linked resources
-  are created in 3.5, and the project is subsequently loaded into an Eclipse 3.1
-  or earlier workspace, these links will not be recognized.  Recommendation:
-  avoid creating links at arbitrary depth or to other file systems where project
-  compatibility with Eclipse 3.1 or earlier is required.</li>
+  <li><b>Virtual folders</b> - 
+  Eclipse 3.6 supports a notion of <i>virtual folders</i> that did not exist
+  in Eclipse 3.5 or earlier. If such virtual folders are created in 3.6, and the project
+  is subsequently loaded into an Eclipse 3.5 or earlier workspace, these folders
+  will not be recognized. Recommendation: avoid creating virtual folders where project
+  compatibility with Eclipse 3.5 or earlier is required.</li>
+  <li><b>Resource filters</b> - 
+  Eclipse 3.6 supports a notion of <i>resource filters</i> that did not exist
+  in Eclipse 3.5 or earlier. If such filters are added to resources in 3.6, and the project
+  is subsequently loaded into an Eclipse 3.5 or earlier workspace, these filters
+  will not be recognized. Recommendation: avoid creating resource filters where project
+  compatibility with Eclipse 3.5 or earlier is required.</li>
+  <li><b>Predefined path variables</b> - 
+  Eclipse 3.6 supports a set of built in path variables that can be used as the basis
+  for linked resource locations. Such variables will not be defined automatically in 
+  Eclipse 3.5 or earlier. If compatibility with 3.5 or earlier workspace is required,
+  users on 3.5 or earlier workspaces will need to define such path variables manually.
+  </li>
 </ul>
-<h4>Using Eclipse 3.5 to develop plug-ins that work in Eclipse 3.4</h4>
-<p>It is also possible (and reasonable) to use Eclipse 3.5 to develop a plug-in 
-  intended to work in Eclipse 3.4 or earlier. Use the <b>Plug-in Development &gt; 
+<h4>Using Eclipse 3.6 to develop plug-ins that work in Eclipse 3.5</h4>
+<p>It is also possible (and reasonable) to use Eclipse 3.6 to develop a plug-in 
+  intended to work in Eclipse 3.5 or earlier. Use the <b>Plug-in Development &gt; 
   Target Platform </b>preference page to locate non-workspace plug-ins in an Eclipse 
-  3.4 install. This ensures that the code for your plug-in is being compiled and 
-  tested against Eclipse 3.4 APIs, extension points, and plug-ins. (The above 
+  3.5 install. This ensures that the code for your plug-in is being compiled and 
+  tested against Eclipse 3.5 APIs, extension points, and plug-ins. (The above 
   list of concerns do not apply since they affect the layout and interpretation 
   of files in the plug-in <i>project</i> but none affect the actual deployed form 
   of the plug-in.)</p>
 
-<hr>
-<p>Sun, Solaris, Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc.
+<hr/>
+<p>Sun, Solaris, Java and all Java-based trademarks are trademarks of Oracle Corporation.
 in the United States, other countries, or both.</p>
 <p>IBM is a trademark of International Business Machines Corporation in the
 United States, other countries, or both.</p>
@@ -1558,25 +1638,17 @@ of others.</p>
 
 <h2><a name="Appendix1">Appendix 1: Execution Environment by Bundle</a></h2>
 
-<p>In the table below, the &quot;3.5 minimum execution environment&quot;
+<p>In the table below, the &quot;3.6 minimum execution environment&quot;
   column indicates the minimum Java class library requirements of each bundle
-  for the 3.5 release, where the value is one of:</p>
-  <table border="0" width="90%">
-   <tbody>
+  for the 3.6 release, where the value is one of:</p>
+<table border="0" width="90%">
+  <tbody>
     <tr>
+
       <td align="center"><b>Entry</b></td>
       <td align="left"><b>Meaning</b></td>
     </tr>
     <tr>
-      <td width="9%">
-      <div align="center"><strong>M1.1</strong></div>
-      </td>
-      <td width="91%">OSGi Minimum Execution Environment 1.1 - This is a
-      subset of the J2ME Foundation class libraries defined by OSGi to
-      be the base for framework implementations. See the OSGi
-      specification for more details.</td>
-    </tr>
-    <tr>
       <td><div align="center"><strong>F1.0</strong></div></td>
       <td>J2ME Foundation 1.0 - indicates that the bundle can only be run on
         Foundation 1.0 or greater. Note that with the exception of some MicroEdition
@@ -1593,7 +1665,6 @@ of others.</p>
       <td>J2SE 1.3 - indicates that the bundle can only be run on JSE 1.3 or
         greater.</td>
     </tr>
-
     <tr>
       <td><div align="center"><strong>1.4</strong></div></td>
       <td>J2SE 1.4 - indicates that the bundle can only be run on JSE 1.4 or
@@ -1612,22 +1683,20 @@ of others.</p>
     </tr>
     <tr>
       <td align="center"><b>n/a</b></td>
-      <td>Not applicable. For example the bundle does not contain Java code.</td>
+      <td>Unknown at the time of this revision.</td>
     </tr>
   </tbody>
 </table>
-<br>
-<b>Table of minimum execution environments by bundle.</b><br>
+
+<p><b>Table of minimum execution environments by bundle.</b> (See also the
+  <a href="http://www.eclipse.org/projects/project-plan.php?projectid=rt.equinox#appendix">Equinox Project plan</a>
+  for the execution environment requirements of bundles contributed via that project.)</p>
+
 <table border="1">
   <tbody>
     <tr>
       <td width="290"><strong>Bundle</strong></td>
-      <td width="60"><div align="center">
-          <p align="center"><b>3.5<br>
-            minimum<br>
-            execution<br>
-            environment </b></p>
-        </div></td>
+      <td width="60"><div align="center"><p align="center"><b>3.6<br/>minimum<br/>execution<br/>environment</b></p></div></td>
     </tr>
     <tr>
       <td>aa.compute.bundle.ee</td>
@@ -1655,7 +1724,7 @@ of others.</p>
     </tr>
     <tr>
       <td>org.apache.commons.codec</td>
-      <td><div align="center">not specified</div></td>
+      <td><div align="center">F1.0</div></td>
     </tr>
     <tr>
       <td>org.apache.commons.el</td>
@@ -1686,6 +1755,10 @@ of others.</p>
       <td><div align="center">1.4</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.ant.launching</td>
+      <td><div align="center">1.4</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.ant.ui</td>
       <td><div align="center">1.4</div></td>
     </tr>
@@ -1734,6 +1807,10 @@ of others.</p>
       <td><div align="center">F1.0</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.core.externaltools</td>
+      <td><div align="center">1.4</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.core.filebuffers</td>
       <td><div align="center">1.4</div></td>
     </tr>
@@ -1762,10 +1839,6 @@ of others.</p>
       <td><div align="center">1.4</div></td>
     </tr>
     <tr>
-      <td>org.eclipse.core.resources.compatibility</td>
-      <td><div align="center">1.4</div></td>
-    </tr>
-    <tr>
       <td>org.eclipse.core.resources.win32.x86</td>
       <td><div align="center">not specified</div></td>
     </tr>
@@ -1850,6 +1923,10 @@ of others.</p>
       <td><div align="center">M1.2</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.equinox.event</td>
+      <td><div align="center">M1.1</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.equinox.frameworkadmin</td>
       <td><div align="center">F1.1</div></td>
     </tr>
@@ -1879,7 +1956,7 @@ of others.</p>
     </tr>
     <tr>
       <td>org.eclipse.equinox.launcher</td>
-      <td><div align="center">F1.0</div></td>
+      <td><div align="center">M1.2</div></td>
     </tr>
     <tr>
       <td>org.eclipse.equinox.launcher.win32.win32.x86</td>
@@ -1914,10 +1991,6 @@ of others.</p>
       <td><div align="center">F1.1</div></td>
     </tr>
     <tr>
-      <td>org.eclipse.equinox.p2.exemplarysetup</td>
-      <td><div align="center">F1.1</div></td>
-    </tr>
-    <tr>
       <td>org.eclipse.equinox.p2.extensionlocation</td>
       <td><div align="center">F1.1</div></td>
     </tr>
@@ -1942,10 +2015,18 @@ of others.</p>
       <td><div align="center">F1.1</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.equinox.p2.operations</td>
+      <td><div align="center">F1.1</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.equinox.p2.publisher</td>
       <td><div align="center">F1.1</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.equinox.p2.ql</td>
+      <td><div align="center">F1.1</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.equinox.p2.reconciler.dropins</td>
       <td><div align="center">F1.1</div></td>
     </tr>
@@ -2090,6 +2171,10 @@ of others.</p>
       <td><div align="center">1.4</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.jdt.junit.core</td>
+      <td><div align="center">1.4</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.jdt.junit.runtime</td>
       <td><div align="center">1.3</div></td>
     </tr>
@@ -2182,6 +2267,10 @@ of others.</p>
       <td><div align="center">1.4</div></td>
     </tr>
     <tr>
+      <td>org.eclipse.pde.launching</td>
+      <td><div align="center">1.4</div></td>
+    </tr>
+    <tr>
       <td>org.eclipse.pde.runtime</td>
       <td><div align="center">1.4</div></td>
     </tr>
@@ -2242,10 +2331,6 @@ of others.</p>
       <td><div align="center">1.4</div></td>
     </tr>
     <tr>
-      <td>org.eclipse.team.cvs.ssh</td>
-      <td><div align="center">1.4</div></td>
-    </tr>
-    <tr>
       <td>org.eclipse.team.cvs.ssh2</td>
       <td><div align="center">1.4</div></td>
     </tr>
@@ -2401,9 +2486,8 @@ of others.</p>
       <td>org.sat4j.pb</td>
       <td><div align="center">1.4</div></td>
     </tr>
-  </tbody>
+    </tbody>
 </table>
 
 </body>
-</html>
-
+</html>
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.platform/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.platform/sourceTemplateFeature/feature.properties
index ce78c53..8a1eab2 100644
--- a/eclipse/features/org.eclipse.platform/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.platform/sourceTemplateFeature/feature.properties
@@ -49,7 +49,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -74,21 +74,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -97,15 +97,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -118,18 +118,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -139,5 +169,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.platform/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.platform/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.platform/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.platform/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.platform/sourceTemplatePlugin/about.properties b/eclipse/features/org.eclipse.platform/sourceTemplatePlugin/about.properties
index 1af37f6..7e7d3a3 100644
--- a/eclipse/features/org.eclipse.platform/sourceTemplatePlugin/about.properties
+++ b/eclipse/features/org.eclipse.platform/sourceTemplatePlugin/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -21,6 +21,6 @@ blurb=Eclipse Platform Plug-in Developer Resources\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/platform
 
diff --git a/eclipse/features/org.eclipse.rcp/feature.properties b/eclipse/features/org.eclipse.rcp/feature.properties
index 25e7766..ddf35f4 100644
--- a/eclipse/features/org.eclipse.rcp/feature.properties
+++ b/eclipse/features/org.eclipse.rcp/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.rcp/feature.xml b/eclipse/features/org.eclipse.rcp/feature.xml
index ffb8de3..d40eab3 100644
--- a/eclipse/features/org.eclipse.rcp/feature.xml
+++ b/eclipse/features/org.eclipse.rcp/feature.xml
@@ -215,6 +215,28 @@
          version="0.0.0"
          fragment="true"
          unpack="false"/>
+         
+    <plugin
+         id="org.eclipse.swt.gtk.linux.s390x"
+         os="linux"
+         ws="gtk"
+         arch="s390x"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+         
+    <plugin
+         id="org.eclipse.swt.gtk.linux.s390"
+         os="linux"
+         ws="gtk"
+         arch="s390"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
 
    <plugin
          id="org.eclipse.swt.gtk.solaris.sparc"
@@ -546,6 +568,26 @@
          fragment="true"/>
 
    <plugin
+         id="org.eclipse.equinox.launcher.gtk.linux.s390x"
+         os="linux"
+         ws="gtk"
+         arch="s390x"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+         
+   <plugin
+         id="org.eclipse.equinox.launcher.gtk.linux.s390"
+         os="linux"
+         ws="gtk"
+         arch="s390"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
          id="org.eclipse.equinox.launcher.motif.linux.x86"
          os="linux"
          ws="motif"
diff --git a/eclipse/features/org.eclipse.rcp/license.html b/eclipse/features/org.eclipse.rcp/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.rcp/license.html
+++ b/eclipse/features/org.eclipse.rcp/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/feature.properties b/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/feature.properties
index 16fedbb..3e2d556 100644
--- a/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/feature.properties
+++ b/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/license.html b/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/license.html
+++ b/eclipse/features/org.eclipse.rcp/sourceTemplateFeature/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.releng.tools/feature.properties b/eclipse/features/org.eclipse.releng.tools/feature.properties
index 069d4c4..642b24c 100644
--- a/eclipse/features/org.eclipse.releng.tools/feature.properties
+++ b/eclipse/features/org.eclipse.releng.tools/feature.properties
@@ -46,7 +46,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -71,21 +71,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -94,15 +94,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -115,18 +115,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -136,5 +166,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.releng.tools/license.html b/eclipse/features/org.eclipse.releng.tools/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.releng.tools/license.html
+++ b/eclipse/features/org.eclipse.releng.tools/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/features/org.eclipse.sdk/build.properties b/eclipse/features/org.eclipse.sdk/build.properties
index a3785ee..910df08 100644
--- a/eclipse/features/org.eclipse.sdk/build.properties
+++ b/eclipse/features/org.eclipse.sdk/build.properties
@@ -31,7 +31,7 @@ generate.feature at org.eclipse.help.source=org.eclipse.help,\
   plugin at org.apache.commons.logging.source;version=1.0.4.qualifier;unpack="false",\
   plugin at org.apache.lucene.source;version=1.9.1.qualifier;unpack="false",\
   plugin at org.apache.lucene.analysis.source;version=1.9.1.qualifier;unpack="false",\
-  plugin at org.mortbay.jetty.util.source;version=6.1.15.qualifier;unpack="false",\
-  plugin at org.mortbay.jetty.server.source;version=6.1.15.qualifier;unpack="false"
+  plugin at org.mortbay.jetty.util.source;version=6.1.23.qualifier;unpack="false",\
+  plugin at org.mortbay.jetty.server.source;version=6.1.23.qualifier;unpack="false"
 
 generatedVersionLength=45
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.sdk/feature.properties b/eclipse/features/org.eclipse.sdk/feature.properties
index 939b062..84d8533 100644
--- a/eclipse/features/org.eclipse.sdk/feature.properties
+++ b/eclipse/features/org.eclipse.sdk/feature.properties
@@ -49,7 +49,7 @@ licenseURL=license.html
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-March 17, 2005\n\
+April 14, 2010\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -74,21 +74,21 @@ provided with this Content and is also available at http://www.eclipse.org/legal
 For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
 Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-	- Content may be structured and packaged into modules to facilitate delivering,\n\
-	  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-	  plug-in fragments ("Fragments"), and features ("Features").\n\
-	- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-	  in a directory named "plugins".\n\
-	- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-	  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-	  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-	  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-	- Features may also include other Features ("Included Features"). Within a Feature, files\n\
-	  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -97,15 +97,15 @@ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-	- The top-level (root) directory\n\
-	- Plug-in and Fragment directories\n\
-	- Inside Plug-ins and Fragments packaged as JARs\n\
-	- Sub-directories of the directory named "src" of certain Plug-ins\n\
-	- Feature directories\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
 Included Features, the Feature Update License should either provide you\n\
 with the terms and conditions governing the Included Features or inform\n\
 you where you can locate them. Feature Update Licenses may be found in\n\
@@ -118,18 +118,48 @@ THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-	- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-	- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-	- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-	- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-	- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-	- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
 is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
 govern that particular Content.\n\
 \n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
 Cryptography\n\
 \n\
 Content may contain encryption software. The country in which you are\n\
@@ -139,5 +169,5 @@ using any encryption software, please check the country's laws,\n\
 regulations and policies concerning the import, possession, or use, and\n\
 re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.sdk/license.html b/eclipse/features/org.eclipse.sdk/license.html
index c6af966..c184ca3 100644
--- a/eclipse/features/org.eclipse.sdk/license.html
+++ b/eclipse/features/org.eclipse.sdk/license.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>April 14, 2010</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,37 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -57,23 +58,50 @@ that directory.</p>
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/eclipse/label.properties b/eclipse/label.properties
index cc7c7ee..ed995ec 100644
--- a/eclipse/label.properties
+++ b/eclipse/label.properties
@@ -1,6 +1,6 @@
 
-			timestamp=20100425-1843
+			timestamp=20100607-1136
 			buildType=I
-			buildId=I20100425-1843
-			buildLabel=I20100425-1843
+			buildId=I20100607-1136
+			buildLabel=I20100607-1136
 		
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/ant.map b/eclipse/maps/org.eclipse.releng/maps/ant.map
index 1c85aef..ad2f608 100644
--- a/eclipse/maps/org.eclipse.releng/maps/ant.map
+++ b/eclipse/maps/org.eclipse.releng/maps/ant.map
@@ -1,13 +1,13 @@
 !***************  ANT CONTRIBUTION  ******************************************************** 
 
 #plugin at org.apache.ant=v20070416,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.core=v20091118,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.launching=v20091204,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.core=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.launching=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ant.ui=v20100325,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ant.ui=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.externaltools=v20100201,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.externaltools=v20091204,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.externaltools=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.externaltools=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 plugin at org.eclipse.ant.tests.core=v20091214,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ant.tests.ui=v20091214,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.ant.tests.ui=v20100602-1000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/compare.map b/eclipse/maps/org.eclipse.releng/maps/compare.map
index e4c1508..7239f62 100644
--- a/eclipse/maps/org.eclipse.releng/maps/compare.map
+++ b/eclipse/maps/org.eclipse.releng/maps/compare.map
@@ -1,10 +1,10 @@
 !***************  COMPARE CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.compare=I20100414-1020,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare
-plugin at org.eclipse.compare.core=I20100330-0755,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.core
-plugin at org.eclipse.compare.win32=I20090430-0408,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.win32
+plugin at org.eclipse.compare=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare
+plugin at org.eclipse.compare.core=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.core
+plugin at org.eclipse.compare.win32=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.compare/plugins/org.eclipse.compare.win32
 
-plugin at org.eclipse.compare.examples=v20060606,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.compare.examples.xml=I20090714-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.compare.examples=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.compare.examples.xml=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.compare.tests=I20100302-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.compare.tests=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/core-hpux.map b/eclipse/maps/org.eclipse.releng/maps/core-hpux.map
index 9945810..b077860 100644
--- a/eclipse/maps/org.eclipse.releng/maps/core-hpux.map
+++ b/eclipse/maps/org.eclipse.releng/maps/core-hpux.map
@@ -1,3 +1,3 @@
 !***************  CORE (HP-UX) CONTRIBUTION  ************************************************ 
 
-fragment at org.eclipse.core.filesystem.hpux.ia64_32=v20080604-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+fragment at org.eclipse.core.filesystem.hpux.ia64_32=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/core-macosx.map b/eclipse/maps/org.eclipse.releng/maps/core-macosx.map
index 286a291..2c24c98 100644
--- a/eclipse/maps/org.eclipse.releng/maps/core-macosx.map
+++ b/eclipse/maps/org.eclipse.releng/maps/core-macosx.map
@@ -1,3 +1,3 @@
 !***************  CORE (MacOSX) CONTRIBUTION  ************************************************ 
 
-fragment at org.eclipse.core.filesystem.macosx=v20100216-0700,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+fragment at org.eclipse.core.filesystem.macosx=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/core-qnx.map b/eclipse/maps/org.eclipse.releng/maps/core-qnx.map
deleted file mode 100644
index cbbda03..0000000
--- a/eclipse/maps/org.eclipse.releng/maps/core-qnx.map
+++ /dev/null
@@ -1,3 +0,0 @@
-!***************  CORE (QNX) CONTRIBUTION  *************************************************** 
-
-fragment at org.eclipse.core.filesystem.qnx.x86=v20080604-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/core-variables.map b/eclipse/maps/org.eclipse.releng/maps/core-variables.map
index 3f644da..a4a4aff 100644
--- a/eclipse/maps/org.eclipse.releng/maps/core-variables.map
+++ b/eclipse/maps/org.eclipse.releng/maps/core-variables.map
@@ -1,3 +1,3 @@
 !***************  CORE VARIABLES CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.core.variables=v20090911,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.core.variables=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/core.map b/eclipse/maps/org.eclipse.releng/maps/core.map
index 4a3788f..c86335b 100644
--- a/eclipse/maps/org.eclipse.releng/maps/core.map
+++ b/eclipse/maps/org.eclipse.releng/maps/core.map
@@ -1,125 +1,125 @@
 !***************  CORE CONTRIBUTION  ******************************************************** 
 
 !**** OSGi
-plugin at org.eclipse.osgi=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi
-plugin at org.eclipse.osgi.services=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.services
-plugin at org.eclipse.osgi.util=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.util
+plugin at org.eclipse.osgi=v20100517,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi
+plugin at org.eclipse.osgi.services=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.services
+plugin at org.eclipse.osgi.util=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.osgi.util
 
 !**** Equinox
-plugin at org.eclipse.equinox.common=v20100315,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.common
-plugin at org.eclipse.equinox.preferences=v20100307,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.preferences
-plugin at org.eclipse.equinox.registry=v20100301,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.registry
-plugin at org.eclipse.equinox.supplement=v20100405,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi/supplement
-plugin at org.eclipse.equinox.app=v20100304,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.app
-plugin at org.eclipse.equinox.device=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.device
-plugin at org.eclipse.equinox.event=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.event
-plugin at org.eclipse.equinox.http=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http
-plugin at org.eclipse.equinox.log=v20100329,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.log
-plugin at org.eclipse.equinox.metatype=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.metatype
-plugin at org.eclipse.equinox.useradmin=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.useradmin
-plugin at org.eclipse.equinox.http.jetty,2.0.0=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6
-plugin at org.eclipse.equinox.http.jetty,1.1.100=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty5
-plugin at org.eclipse.equinox.http.servlet=v20100201,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.servlet
-plugin at org.eclipse.equinox.http.servletbridge=v20091020,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.servletbridge
-plugin at org.eclipse.equinox.http.registry=v20100307,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.registry
-plugin at org.eclipse.equinox.servletbridge=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge
-fragment at org.eclipse.equinox.servletbridge.extensionbundle=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge.extensionbundle
-bundle at org.eclipse.equinox.jsp.jasper=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper
-bundle at org.eclipse.equinox.jsp.jasper.registry=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper.registry
-plugin at org.eclipse.equinox.cm=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.cm
-plugin at org.eclipse.equinox.concurrent=v20100215,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.concurrent
+plugin at org.eclipse.equinox.common=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.common
+plugin at org.eclipse.equinox.preferences=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.preferences
+plugin at org.eclipse.equinox.registry=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.registry
+plugin at org.eclipse.equinox.supplement=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi/supplement
+plugin at org.eclipse.equinox.app=v20100512,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.app
+plugin at org.eclipse.equinox.device=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.device
+plugin at org.eclipse.equinox.event=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.event
+plugin at org.eclipse.equinox.http=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http
+plugin at org.eclipse.equinox.log=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.log
+plugin at org.eclipse.equinox.metatype=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.metatype
+plugin at org.eclipse.equinox.useradmin=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.useradmin
+plugin at org.eclipse.equinox.http.jetty,2.0.0=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6
+plugin at org.eclipse.equinox.http.jetty,1.1.100=v20100519,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty5
+plugin at org.eclipse.equinox.http.servlet=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.servlet
+plugin at org.eclipse.equinox.http.servletbridge=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.servletbridge
+plugin at org.eclipse.equinox.http.registry=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.http.registry
+plugin at org.eclipse.equinox.servletbridge=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge
+fragment at org.eclipse.equinox.servletbridge.extensionbundle=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.servletbridge.extensionbundle
+bundle at org.eclipse.equinox.jsp.jasper=v20100421,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper
+bundle at org.eclipse.equinox.jsp.jasper.registry=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/server-side/bundles/org.eclipse.equinox.jsp.jasper.registry
+plugin at org.eclipse.equinox.cm=v20100520,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.cm
+plugin at org.eclipse.equinox.concurrent=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.concurrent
 
 !**** Prosyst Contributions
-plugin at org.eclipse.equinox.ds=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ds
-plugin at org.eclipse.equinox.io=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.io
-plugin at org.eclipse.equinox.ip=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ip
-plugin at org.eclipse.equinox.util=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.util
-plugin at org.eclipse.equinox.wireadmin=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.wireadmin
+plugin at org.eclipse.equinox.ds=v20100507,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ds
+plugin at org.eclipse.equinox.io=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.io
+plugin at org.eclipse.equinox.ip=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.ip
+plugin at org.eclipse.equinox.util=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.util
+plugin at org.eclipse.equinox.wireadmin=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.wireadmin
 
 !**** Security Contributions
-plugin at org.eclipse.equinox.security=v20100301,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security
+plugin at org.eclipse.equinox.security=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security
 plugin at org.eclipse.equinox.security.tests=v20080722-0430,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.tests
-plugin at org.eclipse.equinox.security.ui=v20090928,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.ui
-fragment at org.eclipse.equinox.security.win32.x86=v20090520-1800,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.win32.x86
-fragment at org.eclipse.equinox.security.macosx=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.macosx
+plugin at org.eclipse.equinox.security.ui=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.ui
+fragment at org.eclipse.equinox.security.win32.x86=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.win32.x86
+fragment at org.eclipse.equinox.security.macosx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/security/bundles/org.eclipse.equinox.security.macosx
 
 !**** Transforms
-plugin at org.eclipse.equinox.transforms.xslt=v20100118,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.xslt
-fragment at org.eclipse.equinox.transforms.hook=v20100329,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.hook
+plugin at org.eclipse.equinox.transforms.xslt=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.xslt
+fragment at org.eclipse.equinox.transforms.hook=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/components/bundles/org.eclipse.equinox.transforms.hook
 
 !**** Weaving
-plugin at org.eclipse.equinox.weaving.aspectj=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.aspectj
-plugin at org.eclipse.equinox.weaving.caching=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching
-plugin at org.eclipse.equinox.weaving.caching.j9=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching.j9
-fragment at org.eclipse.equinox.weaving.hook=v20100108,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.hook
+plugin at org.eclipse.equinox.weaving.aspectj=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.aspectj
+plugin at org.eclipse.equinox.weaving.caching=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching
+plugin at org.eclipse.equinox.weaving.caching.j9=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.caching.j9
+fragment at org.eclipse.equinox.weaving.hook=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/weaving/bundles/org.eclipse.equinox.weaving.hook
 
 !****launcher, startup.jar
-plugin at org.eclipse.equinox.launcher=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher
-fragment at org.eclipse.equinox.launcher.win32.win32.x86=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86
-fragment at org.eclipse.equinox.launcher.win32.win32.x86_64=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64
+plugin at org.eclipse.equinox.launcher=v20100507,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher
+fragment at org.eclipse.equinox.launcher.win32.win32.x86=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86
+fragment at org.eclipse.equinox.launcher.win32.win32.x86_64=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64
 fragment at org.eclipse.equinox.launcher.win32.win32.ia64=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64
 fragment at org.eclipse.equinox.launcher.wpf.win32.x86=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86
-fragment at org.eclipse.equinox.launcher.carbon.macosx=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx
-fragment at org.eclipse.equinox.launcher.cocoa.macosx=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx
-fragment at org.eclipse.equinox.launcher.cocoa.macosx.x86_64=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64
-fragment at org.eclipse.equinox.launcher.gtk.linux.x86=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86
-fragment at org.eclipse.equinox.launcher.gtk.linux.x86_64=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64
-fragment at org.eclipse.equinox.launcher.gtk.linux.ppc=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc
-fragment at org.eclipse.equinox.launcher.gtk.linux.ppc64=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc64
-fragment at org.eclipse.equinox.launcher.motif.hpux.ia64_32=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32
-fragment at org.eclipse.equinox.launcher.motif.aix.ppc=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc
-fragment at org.eclipse.equinox.launcher.motif.linux.x86=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86
-fragment at org.eclipse.equinox.launcher.gtk.solaris.sparc=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc
+fragment at org.eclipse.equinox.launcher.carbon.macosx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx
+fragment at org.eclipse.equinox.launcher.cocoa.macosx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx
+fragment at org.eclipse.equinox.launcher.cocoa.macosx.x86_64=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64
+fragment at org.eclipse.equinox.launcher.gtk.linux.x86=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86
+fragment at org.eclipse.equinox.launcher.gtk.linux.x86_64=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64
+fragment at org.eclipse.equinox.launcher.gtk.linux.ppc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc
+fragment at org.eclipse.equinox.launcher.gtk.linux.ppc64=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc64
+fragment at org.eclipse.equinox.launcher.motif.hpux.ia64_32=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32
+fragment at org.eclipse.equinox.launcher.motif.aix.ppc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc
+fragment at org.eclipse.equinox.launcher.motif.linux.x86=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86
+fragment at org.eclipse.equinox.launcher.gtk.solaris.sparc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc
 plugin at org.eclipse.equinox.launcher.releng=v20100208,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/releng/org.eclipse.equinox.launcher.releng
 
 !****contributed fragments
-fragment at org.eclipse.equinox.launcher.gtk.linux.s390=v20090426-1530,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390
+fragment at org.eclipse.equinox.launcher.gtk.linux.s390=v20100507,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390
 fragment at org.eclipse.equinox.launcher.gtk.linux.s390x=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x
-fragment at org.eclipse.equinox.launcher.gtk.solaris.x86=v20100329,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.solaris.x86
-fragment at org.eclipse.equinox.launcher.motif.solaris.sparc=v20100322-1720,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc
+fragment at org.eclipse.equinox.launcher.gtk.solaris.x86=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.solaris.x86
+fragment at org.eclipse.equinox.launcher.motif.solaris.sparc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc
 
-feature at org.eclipse.equinox.executable=v20100419,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable
+feature at org.eclipse.equinox.executable=v20100524,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable
 
 !**** Runtime
-plugin at org.eclipse.core.runtime=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.contenttype=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.jobs=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.contenttype=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.jobs=v20100515,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Expressions
-plugin at org.eclipse.core.expressions=v20100222,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.expressions=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.core.expressions.tests=v20091203,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Resources
-plugin at org.eclipse.core.resources=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.win32=v20080508,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.win32.x86=v20081020,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.resources=v20100526-0737,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.win32=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.win32.x86=v20100505-1345,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 fragment at org.eclipse.core.resources.win32.ia64=v20081020,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.resources.compatibility=v20090505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.resources.compatibility=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** File System
-plugin at org.eclipse.core.filesystem=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.x86=v20100322,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.x86_64=v20090316-0910,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.win32.ia64=v20100322,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.x86=v20100216-0700,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.x86_64=v20100216-0700,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.linux.ppc=v20080604-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.solaris.sparc=v20100216-0700,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.filesystem.aix.ppc=v20100216-0700,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc
+plugin at org.eclipse.core.filesystem=v20100526-0737,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.x86=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.x86_64=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.win32.ia64=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.x86=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.x86_64=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.linux.ppc=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.solaris.sparc=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.filesystem.aix.ppc=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc
 
 !**** Legacy Runtime
-plugin at org.eclipse.core.boot=v20080218,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.runtime.compatibility=v20090413,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.runtime.compatibility.auth=v20090413,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.runtime.compatibility.registry=v20091116,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.boot=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime.compatibility=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.runtime.compatibility.auth=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.runtime.compatibility.registry=v20100520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Other Core Code
-plugin at org.eclipse.pde.build=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build
-plugin at org.eclipse.pde.build.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build.tests
+plugin at org.eclipse.pde.build=v20100603,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build
+plugin at org.eclipse.pde.build.tests=v20100602-1630,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build.tests
 feature at org.eclipse.pde.builder=v20040624a,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/build/org.eclipse.pde.build/feature
 
 !**** Test Suites
-plugin at org.eclipse.core.tests.harness=v20100322,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.resources=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.runtime=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.osgi.tests=v20100405,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi.tests
\ No newline at end of file
+plugin at org.eclipse.core.tests.harness=v20100505-1235,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.resources=v20100526-0737,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.runtime=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.osgi.tests=v20100505,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/framework/bundles/org.eclipse.osgi.tests
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/doc.map b/eclipse/maps/org.eclipse.releng/maps/doc.map
index 7e01b9a..a5b1852 100644
--- a/eclipse/maps/org.eclipse.releng/maps/doc.map
+++ b/eclipse/maps/org.eclipse.releng/maps/doc.map
@@ -1,9 +1,9 @@
 !***************  DOC CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.platform.doc.user=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.platform.doc.isv=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.platform.doc.user=v20100603-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.platform.doc.isv=v20100603-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.doc.user=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.doc.isv=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.doc.user=v20100603-1350,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.doc.isv=v20100602-1600,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.pde.doc.user=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/doc/org.eclipse.pde.doc.user
\ No newline at end of file
+plugin at org.eclipse.pde.doc.user=v20100603-1350,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/doc/org.eclipse.pde.doc.user
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/equinox-incubator.map b/eclipse/maps/org.eclipse.releng/maps/equinox-incubator.map
index 9b31d22..35aaecc 100644
--- a/eclipse/maps/org.eclipse.releng/maps/equinox-incubator.map
+++ b/eclipse/maps/org.eclipse.releng/maps/equinox-incubator.map
@@ -1,28 +1,28 @@
 !***************  Equinox Incubator Contribution ***************************
 
 !**** Initializer bundle
-bundle at org.eclipse.equinox.initializer=v20100316,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/framework/bundles/org.eclipse.equinox.initializer
+bundle at org.eclipse.equinox.initializer=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/framework/bundles/org.eclipse.equinox.initializer
 
 !**** Resource Monitoring ****
 
 !** Client **
-plugin at org.eclipse.equinox.jmx.client=v20070515,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client
-plugin at org.eclipse.equinox.jmx.client.rmi=v20100316,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.rmi
-plugin at org.eclipse.equinox.jmx.client.xmlrpc=v20070515,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.xmlrpc
+plugin at org.eclipse.equinox.jmx.client=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client
+plugin at org.eclipse.equinox.jmx.client.rmi=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.rmi
+plugin at org.eclipse.equinox.jmx.client.xmlrpc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.xmlrpc
 feature at org.eclipse.equinox.jmx.client.feature=v20081124,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.client.feature
 
 !** Common **
-plugin at org.eclipse.equinox.jmx.common=v20100215,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common
+plugin at org.eclipse.equinox.jmx.common=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common
 feature at org.eclipse.equinox.jmx.common.feature=v20070507,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.common.feature
 
 !** Server **
-plugin at org.eclipse.equinox.jmx.server=v20071015,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server
-plugin at org.eclipse.equinox.jmx.server.rmi=v20070510,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.rmi
-plugin at org.eclipse.equinox.jmx.server.xmlrpc=v20070608,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.xmlrpc
-plugin at org.eclipse.equinox.jmx.vm=v20070515,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.vm
-plugin at org.eclipse.equinox.preferences.jmx=v20070510,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.preferences.jmx
-plugin at org.eclipse.equinox.registry.jmx=v20080610-1530,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.registry.jmx
-plugin at org.eclipse.osgi.jmx=v20080610-1530,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.osgi.jmx
-plugin at org.eclipse.swt.jmx=v20090331,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.swt.jmx
-plugin at org.eclipse.core.resources.jmx=v20070510,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.core.resources.jmx
+plugin at org.eclipse.equinox.jmx.server=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server
+plugin at org.eclipse.equinox.jmx.server.rmi=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.rmi
+plugin at org.eclipse.equinox.jmx.server.xmlrpc=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.xmlrpc
+plugin at org.eclipse.equinox.jmx.vm=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.vm
+plugin at org.eclipse.equinox.preferences.jmx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.preferences.jmx
+plugin at org.eclipse.equinox.registry.jmx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.registry.jmx
+plugin at org.eclipse.osgi.jmx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.osgi.jmx
+plugin at org.eclipse.swt.jmx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.swt.jmx
+plugin at org.eclipse.core.resources.jmx=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.core.resources.jmx
 feature at org.eclipse.equinox.jmx.server.feature=v20081124,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/incubator/monitoring/bundles/org.eclipse.equinox.jmx.server.feature
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/feature.map b/eclipse/maps/org.eclipse.releng/maps/feature.map
index bd61f6a..e2205a5 100644
--- a/eclipse/maps/org.eclipse.releng/maps/feature.map
+++ b/eclipse/maps/org.eclipse.releng/maps/feature.map
@@ -1,10 +1,10 @@
 !***************  FEATURE CONTRIBUTION  ******************************************************
-feature at org.eclipse.sdk=v20100409,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.sdk
+feature at org.eclipse.sdk=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.sdk
 plugin at org.eclipse.sdk=v20100216,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.jdt=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.jdt-feature
+feature at org.eclipse.jdt=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.jdt-feature
 
-feature at org.eclipse.pde=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.pde-feature
+feature at org.eclipse.pde=v20100525,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.pde-feature
 feature at org.eclipse.pde.api.tools.ee.cdcfoundation10_feature=v20091027-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10-feature
 feature at org.eclipse.pde.api.tools.ee.cdcfoundation11_feature=v20091027-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11-feature
 feature at org.eclipse.pde.api.tools.ee.j2se12_feature=v20091027-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12-feature
@@ -17,36 +17,36 @@ feature at org.eclipse.pde.api.tools.ee.osgiminimum10_feature=v20091027-1300,kmoir@
 feature at org.eclipse.pde.api.tools.ee.osgiminimum11_feature=v20091027-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11-feature
 feature at org.eclipse.pde.api.tools.ee.osgiminimum12_feature=v20091027-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12-feature
 
-feature at org.eclipse.platform=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.platform-feature
-plugin at org.eclipse.platform=v20100407,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+feature at org.eclipse.platform=v20100602,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.platform-feature
+plugin at org.eclipse.platform=v20100531,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.sdk.examples=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.examples-feature
-plugin at org.eclipse.sdk.examples=v20080612,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+feature at org.eclipse.sdk.examples=v20100527,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.examples-feature
+plugin at org.eclipse.sdk.examples=v20100527,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.sdk.tests=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/features/org.eclipse.sdk.tests
+feature at org.eclipse.sdk.tests=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/features/org.eclipse.sdk.tests
 plugin at org.eclipse.sdk.tests=v20060605,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-feature at org.eclipse.equinox.sdk=v20100408,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.equinox.sdk
+feature at org.eclipse.equinox.sdk=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.equinox.sdk
 
-feature at org.eclipse.cvs=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.cvs-feature
+feature at org.eclipse.cvs=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.cvs-feature
 plugin at org.eclipse.cvs=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.cvs
 
-feature at org.eclipse.help=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.help-feature
+feature at org.eclipse.help=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.help-feature
 
-feature at org.eclipse.equinox.p2.user.ui=v20100409,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/p2/org.eclipse.equinox.p2.releng/buildtime-features/org.eclipse.equinox.p2.user.ui
+feature at org.eclipse.equinox.p2.user.ui=v20100503,kmoir at dev.eclipse.org:/cvsroot/rt,,org.eclipse.equinox/p2/org.eclipse.equinox.p2.releng/buildtime-features/org.eclipse.equinox.p2.user.ui
 
-feature at org.eclipse.equinox.p2.sdk=CVS,tag=v20100409,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.sdk
-feature at org.eclipse.equinox.p2.discovery.feature=CVS,tag=v20100409,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.discovery.feature
-feature at org.eclipse.equinox.core.sdk=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/framework/features/org.eclipse.equinox.core.sdk
-feature at org.eclipse.equinox.compendium.sdk=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/compendium/features/org.eclipse.equinox.compendium.sdk
+feature at org.eclipse.equinox.p2.sdk=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.sdk
+feature at org.eclipse.equinox.p2.discovery.feature=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/features/org.eclipse.equinox.p2.discovery.feature
+feature at org.eclipse.equinox.core.sdk=CVS,tag=v20100603,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/framework/features/org.eclipse.equinox.core.sdk
+feature at org.eclipse.equinox.compendium.sdk=CVS,tag=v20100421,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/compendium/features/org.eclipse.equinox.compendium.sdk
 
-feature at org.eclipse.equinox.serverside.sdk=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.serverside.sdk
-feature at org.eclipse.equinox.server.core=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.core
-feature at org.eclipse.equinox.server.jetty=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.jetty
-feature at org.eclipse.equinox.server.p2=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.p2
-feature at org.eclipse.equinox.server.servletbridge=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.servletbridge
-feature at org.eclipse.equinox.server.simple=CVS,tag=v20100412,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.simple
+feature at org.eclipse.equinox.serverside.sdk=CVS,tag=v20100421,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.serverside.sdk
+feature at org.eclipse.equinox.server.core=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.core
+feature at org.eclipse.equinox.server.jetty=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.jetty
+feature at org.eclipse.equinox.server.p2=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.p2
+feature at org.eclipse.equinox.server.servletbridge=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.servletbridge
+feature at org.eclipse.equinox.server.simple=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/server-side/features/org.eclipse.equinox.server.simple
 
-feature at org.eclipse.equinox.weaving.sdk=CVS,tag=v20090817,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/weaving/features/org.eclipse.equinox.weaving.sdk
+feature at org.eclipse.equinox.weaving.sdk=CVS,tag=v20100421,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/weaving/features/org.eclipse.equinox.weaving.sdk
 
-feature at org.eclipse.pde.api.tools.ee.fragments=v20100409,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.pde.api.tools.ee.fragments
\ No newline at end of file
+feature at org.eclipse.pde.api.tools.ee.fragments=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.pde.api.tools.ee.fragments
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/jdtapt.map b/eclipse/maps/org.eclipse.releng/maps/jdtapt.map
index d5df315..c8353a7 100644
--- a/eclipse/maps/org.eclipse.releng/maps/jdtapt.map
+++ b/eclipse/maps/org.eclipse.releng/maps/jdtapt.map
@@ -1,10 +1,10 @@
 
-!***************  JDT APT CONTRIBUTION  [20091027-0900] *******************************************
+!***************  JDT APT CONTRIBUTION  [20100512-2100] *******************************************
 
-plugin at org.eclipse.jdt.apt.core=v20091203-0315,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.ui=v20091027-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.tests=v20091203-0315,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.jdt.compiler.apt=v20091027-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.compiler.apt.tests=v20090922-0135,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.pluggable.core=v20090922-0135,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.apt.pluggable.tests=v20091203-0315,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.jdt.apt.core=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.ui=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.tests=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.jdt.compiler.apt=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.compiler.apt.tests=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.pluggable.core=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.apt.pluggable.tests=v20100513-0845,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/jdtcore.map b/eclipse/maps/org.eclipse.releng/maps/jdtcore.map
index 835fd87..f1edf05 100644
--- a/eclipse/maps/org.eclipse.releng/maps/jdtcore.map
+++ b/eclipse/maps/org.eclipse.releng/maps/jdtcore.map
@@ -1,11 +1,11 @@
 
-!***************  JDT CORE CONTRIBUTION  [20100420-0800] ******************************************* 
+!***************  JDT CORE CONTRIBUTION  [20100603-0800] ******************************************* 
 
-plugin at org.eclipse.jdt.core=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.jdt.compiler.tool=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.jdt.compiler.tool=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.core.tests.builder=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.compiler=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.model=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.core.tests.performance=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.compiler.tool.tests=v_A45,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.jdt.core.tests.builder=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.compiler=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.model=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.tests.performance=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.compiler.tool.tests=v_A58,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/jdtdebug.map b/eclipse/maps/org.eclipse.releng/maps/jdtdebug.map
index 3e7c3b0..4e2d2c8 100644
--- a/eclipse/maps/org.eclipse.releng/maps/jdtdebug.map
+++ b/eclipse/maps/org.eclipse.releng/maps/jdtdebug.map
@@ -1,17 +1,17 @@
 !***************  DEBUG CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.debug.core=v20100326,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.ui=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.debug=v20100326-1314,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.debug.ui=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching=v20100326,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching.macosx=v20100407-1200,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.launching.ui.macosx=v20090527,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.core=v20100519,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.ui=v20100601-1530,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug.ui=v20100602-0830,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching.macosx=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.launching.ui.macosx=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.console=v20100326,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.console=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.debug.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.debug.tests=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.tests=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.debug.examples.core=v20100213,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.debug.examples.ui=v20100213,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.debug.examples.core=v20100505,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.debug.examples.ui=v20100526,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/jdtui.map b/eclipse/maps/org.eclipse.releng/maps/jdtui.map
index c44d114..b0f1746 100644
--- a/eclipse/maps/org.eclipse.releng/maps/jdtui.map
+++ b/eclipse/maps/org.eclipse.releng/maps/jdtui.map
@@ -1,23 +1,23 @@
 !***************  JDT UI CONTRIBUTION  ******************************************************** 
-plugin at org.eclipse.search=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.search.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.search=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.search.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ltk.core.refactoring=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.core.refactoring.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.ui.refactoring=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ltk.ui.refactoring.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.core.refactoring=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.core.refactoring.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.ui.refactoring=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ltk.ui.refactoring.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.core.manipulation=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.core.manipulation=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.ui=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.ui.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.ui.tests.refactoring=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui=v20100602-1600,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui.tests=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.ui.tests.refactoring=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jdt.junit=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit.core=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit.runtime=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.junit4.runtime=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit.core=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit.runtime=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.junit4.runtime=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.junit4=v20100302,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.junit4=v20100525,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/orbit.map b/eclipse/maps/org.eclipse.releng/maps/orbit.map
index 7a27271..3a6b3ca 100644
--- a/eclipse/maps/org.eclipse.releng/maps/orbit.map
+++ b/eclipse/maps/org.eclipse.releng/maps/orbit.map
@@ -1,62 +1,62 @@
 !***************  ORBIT CONTRIBUTION  ********************************************************
-plugin at com.ibm.icu,4.2.1=p2IU,id=com.ibm.icu,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.base,4.2.1=p2IU,id=com.ibm.icu.base,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.base.source,4.2.1=p2IU,id=com.ibm.icu.base.source,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.ibm.icu.source,4.2.1=p2IU,id=com.ibm.icu.source,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at com.jcraft.jsch,0.1.41=p2IU,id=com.jcraft.jsch,version=0.1.41.v200903070017,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at com.jcraft.jsch.source,0.1.41=p2IU,id=com.jcraft.jsch.source,version=0.1.41.v200903070017,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.management,1.2.0=p2IU,id=javax.management,version=1.2.0.v200803061811,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.management.remote,1.0.0=p2IU,id=javax.management.remote,version=1.0.0.v200803061811,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet,2.4.0=p2IU,id=javax.servlet,version=2.4.0.v200806031604,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet,2.5.0=p2IU,id=javax.servlet,version=2.5.0.v200910301333,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.source,2.4.0=p2IU,id=javax.servlet.source,version=2.4.0.v200806031604,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.source,2.5.0=p2IU,id=javax.servlet.source,version=2.5.0.v200910301333,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.jsp,2.0.0=p2IU,id=javax.servlet.jsp,version=2.0.0.v200806031607,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at javax.servlet.jsp.source,2.0.0=p2IU,id=javax.servlet.jsp.source,version=2.0.0.v200806031607,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at net.sourceforge.mx4j,3.0.1=p2IU,id=net.sourceforge.mx4j,version=3.0.1.v200803061811,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at net.sourceforge.mx4j.remote,3.0.1=p2IU,id=net.sourceforge.mx4j.remote,version=3.0.1.v200803061811,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ant,1.7.1=p2IU,id=org.apache.ant,version=1.7.1.v20090120-1145,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ant.source,1.7.1=p2IU,id=org.apache.ant.source,version=1.7.1.v20090120-1145,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.codec,1.3.0=p2IU,id=org.apache.commons.codec,version=1.3.0.v20100106-1700,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.codec.source,1.3.0=p2IU,id=org.apache.commons.codec.source,version=1.3.0.v20100106-1700,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.el,1.0.0=p2IU,id=org.apache.commons.el,version=1.0.0.v200806031608,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.el.source,1.0.0=p2IU,id=org.apache.commons.el.source,version=1.0.0.v200806031608,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.httpclient,3.1.0=p2IU,id=org.apache.commons.httpclient,version=3.1.0.v20080605-1935,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.httpclient.source,3.1.0=p2IU,id=org.apache.commons.httpclient.source,version=3.1.0.v20080605-1935,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.logging,1.0.4=p2IU,id=org.apache.commons.logging,version=1.0.4.v200904062259,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.commons.logging.source,1.0.4=p2IU,id=org.apache.commons.logging.source,version=1.0.4.v200904062259,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.jasper,5.5.17=p2IU,id=org.apache.jasper,version=5.5.17.v200903231320,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.jasper.source,5.5.17=p2IU,id=org.apache.jasper.source,version=5.5.17.v200903231320,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene,1.9.1=p2IU,id=org.apache.lucene,version=1.9.1.v20080530-1600,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene.analysis,1.9.1=p2IU,id=org.apache.lucene.analysis,version=1.9.1.v20080530-1600,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.lucene.analysis.source,1.9.1=p2IU,id=org.apache.lucene.analysis.source,version=1.9.1.v20080530-1600,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ws.commons.util,1.0.0=p2IU,id=org.apache.ws.commons.util,version=1.0.0.v20091022-1630,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.ws.jaxme,0.5.1=p2IU,id=org.apache.ws.jaxme,version=0.5.1.v20080530-1550,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.xmlrpc,3.0.0=p2IU,id=org.apache.xmlrpc,version=3.0.0.v20080530-1550,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.easymock,2.4.0=p2IU,id=org.easymock,version=2.4.0.v20090202-0900,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.easymock.source,2.4.0=p2IU,id=org.easymock.source,version=2.4.0.v20090202-0900,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.hamcrest.core,1.1.0=p2IU,id=org.hamcrest.core,version=1.1.0.v20090501071000,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.hamcrest.core.source,1.1.0=p2IU,id=org.hamcrest.core.source,version=1.1.0.v20090501071000,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit,3.8.2=p2IU,id=org.junit,version=3.8.2.v20090203-1005,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit.source,3.8.2=p2IU,id=org.junit.source,version=3.8.2.v20090203-1005,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit,4.8.1=p2IU,id=org.junit,version=4.8.1.v4_8_1_v20100114-1600,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.junit.source,4.8.1=p2IU,id=org.junit.source,version=4.8.1.v4_8_1_v20100114-1600,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty,5.1.14=p2IU,id=org.mortbay.jetty,version=5.1.14.v200806031611,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.source,5.1.14=p2IU,id=org.mortbay.jetty.source,version=5.1.14.v200806031611,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.server,6.1.15=p2IU,id=org.mortbay.jetty.server,version=6.1.15.v200905151201,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.server.source,6.1.15=p2IU,id=org.mortbay.jetty.server.source,version=6.1.15.v200905151201,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.util,6.1.15=p2IU,id=org.mortbay.jetty.util,version=6.1.15.v200905182336,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.mortbay.jetty.util.source,6.1.15=p2IU,id=org.mortbay.jetty.util.source,version=6.1.15.v200905182336,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
+plugin at com.ibm.icu,4.2.1=p2IU,id=com.ibm.icu,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.base,4.2.1=p2IU,id=com.ibm.icu.base,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.base.source,4.2.1=p2IU,id=com.ibm.icu.base.source,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.ibm.icu.source,4.2.1=p2IU,id=com.ibm.icu.source,version=4.2.1.v20100412,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.jcraft.jsch,0.1.41=p2IU,id=com.jcraft.jsch,version=0.1.41.v200903070017,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at com.jcraft.jsch.source,0.1.41=p2IU,id=com.jcraft.jsch.source,version=0.1.41.v200903070017,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.management,1.2.0=p2IU,id=javax.management,version=1.2.0.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.management.remote,1.0.0=p2IU,id=javax.management.remote,version=1.0.0.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet,2.4.0=p2IU,id=javax.servlet,version=2.4.0.v200806031604,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet,2.5.0=p2IU,id=javax.servlet,version=2.5.0.v200910301333,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.source,2.4.0=p2IU,id=javax.servlet.source,version=2.4.0.v200806031604,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.source,2.5.0=p2IU,id=javax.servlet.source,version=2.5.0.v200910301333,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.jsp,2.0.0=p2IU,id=javax.servlet.jsp,version=2.0.0.v200806031607,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at javax.servlet.jsp.source,2.0.0=p2IU,id=javax.servlet.jsp.source,version=2.0.0.v200806031607,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at net.sourceforge.mx4j,3.0.1=p2IU,id=net.sourceforge.mx4j,version=3.0.1.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at net.sourceforge.mx4j.remote,3.0.1=p2IU,id=net.sourceforge.mx4j.remote,version=3.0.1.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ant,1.7.1=p2IU,id=org.apache.ant,version=1.7.1.v20100518-1145,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ant.source,1.7.1=p2IU,id=org.apache.ant.source,version=1.7.1.v20100518-1145,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.codec,1.3.0=p2IU,id=org.apache.commons.codec,version=1.3.0.v20100518-1140,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.codec.source,1.3.0=p2IU,id=org.apache.commons.codec.source,version=1.3.0.v20100518-1140,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.el,1.0.0=p2IU,id=org.apache.commons.el,version=1.0.0.v201004212143,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.el.source,1.0.0=p2IU,id=org.apache.commons.el.source,version=1.0.0.v201004212143,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.httpclient,3.1.0=p2IU,id=org.apache.commons.httpclient,version=3.1.0.v201005080502,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.httpclient.source,3.1.0=p2IU,id=org.apache.commons.httpclient.source,version=3.1.0.v201005080502,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.logging,1.0.4=p2IU,id=org.apache.commons.logging,version=1.0.4.v201005080501,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.commons.logging.source,1.0.4=p2IU,id=org.apache.commons.logging.source,version=1.0.4.v201005080501,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.jasper,5.5.17=p2IU,id=org.apache.jasper,version=5.5.17.v201004212143,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.jasper.source,5.5.17=p2IU,id=org.apache.jasper.source,version=5.5.17.v201004212143,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene,1.9.1=p2IU,id=org.apache.lucene,version=1.9.1.v20100518-1140,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene.analysis,1.9.1=p2IU,id=org.apache.lucene.analysis,version=1.9.1.v20100518-1140,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.lucene.analysis.source,1.9.1=p2IU,id=org.apache.lucene.analysis.source,version=1.9.1.v20100518-1140,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ws.commons.util,1.0.0=p2IU,id=org.apache.ws.commons.util,version=1.0.0.v20100518-1135,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.ws.jaxme,0.5.1=p2IU,id=org.apache.ws.jaxme,version=0.5.1.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.xmlrpc,3.0.0=p2IU,id=org.apache.xmlrpc,version=3.0.0.v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.easymock,2.4.0=p2IU,id=org.easymock,version=2.4.0.v20090202-0900,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.easymock.source,2.4.0=p2IU,id=org.easymock.source,version=2.4.0.v20090202-0900,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.hamcrest.core,1.1.0=p2IU,id=org.hamcrest.core,version=1.1.0.v20090501071000,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.hamcrest.core.source,1.1.0=p2IU,id=org.hamcrest.core.source,version=1.1.0.v20090501071000,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit,3.8.2=p2IU,id=org.junit,version=3.8.2.v3_8_2_v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit.source,3.8.2=p2IU,id=org.junit.source,version=3.8.2.v3_8_2_v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit,4.8.1=p2IU,id=org.junit,version=4.8.1.v4_8_1_v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.junit.source,4.8.1=p2IU,id=org.junit.source,version=4.8.1.v4_8_1_v20100427-1100,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty,5.1.14=p2IU,id=org.mortbay.jetty,version=5.1.14.v200806031611,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.source,5.1.14=p2IU,id=org.mortbay.jetty.source,version=5.1.14.v200806031611,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.server,6.1.23=p2IU,id=org.mortbay.jetty.server,version=6.1.23.v201004211559,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.server.source,6.1.23=p2IU,id=org.mortbay.jetty.server.source,version=6.1.23.v201004211559,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.util,6.1.23=p2IU,id=org.mortbay.jetty.util,version=6.1.23.v201004211559,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.mortbay.jetty.util.source,6.1.23=p2IU,id=org.mortbay.jetty.util.source,version=6.1.23.v201004211559,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
 
 # Bundles from Orbit for p2
-plugin at org.apache.xml.resolver,1.2.0=p2IU,id=org.apache.xml.resolver,version=1.2.0.v200902170519,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.apache.xerces,2.8.0=p2IU,id=org.apache.xerces,version=2.8.0.v200803070308,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.sat4j.core,2.2.0=p2IU,id=org.sat4j.core,version=2.2.0.v20100329,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
-plugin at org.sat4j.pb,2.2.0=p2IU,id=org.sat4j.pb,version=2.2.0.v20100329,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/I20100413151631/updateSite
+plugin at org.apache.xml.resolver,1.2.0=p2IU,id=org.apache.xml.resolver,version=1.2.0.v201005080400,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.apache.xerces,2.8.0=p2IU,id=org.apache.xerces,version=2.8.0.v200803070308,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.sat4j.core,2.2.0=p2IU,id=org.sat4j.core,version=2.2.0.v20100429,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.sat4j.pb,2.2.0=p2IU,id=org.sat4j.pb,version=2.2.0.v20100429,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
 
 # Orbit bundles for API tooling
-plugin at org.objectweb.asm,3.2.0=p2IU,id=org.objectweb.asm,version=3.2.0.v200909071300,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
-plugin at org.objectweb.asm.source,3.2.0=p2IU,id=org.objectweb.asm.source,version=3.2.0.v200909071300,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100308015149/updateSite
+plugin at org.objectweb.asm,3.2.0=p2IU,id=org.objectweb.asm,version=3.2.0.v200909071300,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
+plugin at org.objectweb.asm.source,3.2.0=p2IU,id=org.objectweb.asm.source,version=3.2.0.v200909071300,repository=http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20100519200754/repository
 
 #aspectj plugins for equinox weaving plugins
 plugin at org.aspectj.weaver,1.6.7=p2IU,id=org.aspectj.weaver,version=1.6.7.20091231194938,repository=http://fullmoon.ottawa.ibm.com/tools/ajdt/aspectj/update																   
diff --git a/eclipse/maps/org.eclipse.releng/maps/p2.map b/eclipse/maps/org.eclipse.releng/maps/p2.map
index 6670bd7..e3e5ba1 100644
--- a/eclipse/maps/org.eclipse.releng/maps/p2.map
+++ b/eclipse/maps/org.eclipse.releng/maps/p2.map
@@ -1,63 +1,63 @@
-plugin at org.eclipse.equinox.frameworkadmin=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin
-plugin at org.eclipse.equinox.frameworkadmin.equinox=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.equinox
-plugin at org.eclipse.equinox.frameworkadmin.test=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.test
-plugin at org.eclipse.equinox.p2.artifact.repository=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.artifact.repository
-plugin at org.eclipse.equinox.p2.console=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.console
-plugin at org.eclipse.equinox.p2.core=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.core
-plugin at org.eclipse.equinox.p2.director=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director
-plugin at org.eclipse.equinox.p2.director.app=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app
-plugin at org.eclipse.equinox.p2.directorywatcher=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.directorywatcher
-plugin at org.eclipse.equinox.p2.discovery=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery
-plugin at org.eclipse.equinox.p2.discovery.compatibility=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery.compatibility
-plugin at org.eclipse.equinox.p2.engine=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.engine
-plugin at org.eclipse.equinox.p2.extensionlocation=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.extensionlocation
-plugin at org.eclipse.equinox.p2.garbagecollector=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.garbagecollector
-plugin at org.eclipse.equinox.p2.installer=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.installer
-plugin at org.eclipse.equinox.p2.jarprocessor=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.jarprocessor
-plugin at org.eclipse.equinox.p2.metadata=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata
-plugin at org.eclipse.equinox.p2.metadata.generator=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.generator
-plugin at org.eclipse.equinox.p2.metadata.repository=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository
-plugin at org.eclipse.equinox.p2.operations=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.operations
-plugin at org.eclipse.equinox.p2.publisher=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.publisher
-plugin at org.eclipse.equinox.p2.reconciler.dropins=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.reconciler.dropins
-plugin at org.eclipse.equinox.p2.repository=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository
-plugin at org.eclipse.equinox.p2.repository.tools=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools
+plugin at org.eclipse.equinox.frameworkadmin=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin
+plugin at org.eclipse.equinox.frameworkadmin.equinox=CVS,tag=v20100505,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.equinox
+plugin at org.eclipse.equinox.frameworkadmin.test=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.frameworkadmin.test
+plugin at org.eclipse.equinox.p2.artifact.repository=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.artifact.repository
+plugin at org.eclipse.equinox.p2.console=CVS,tag=v20100601,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.console
+plugin at org.eclipse.equinox.p2.core=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.core
+plugin at org.eclipse.equinox.p2.director=CVS,tag=v20100525,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director
+plugin at org.eclipse.equinox.p2.director.app=CVS,tag=v20100527,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app
+plugin at org.eclipse.equinox.p2.directorywatcher=CVS,tag=v20100601,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.directorywatcher
+plugin at org.eclipse.equinox.p2.discovery=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery
+plugin at org.eclipse.equinox.p2.discovery.compatibility=CVS,tag=v20100518,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.discovery.compatibility
+plugin at org.eclipse.equinox.p2.engine=CVS,tag=v20100527,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.engine
+plugin at org.eclipse.equinox.p2.extensionlocation=CVS,tag=v20100518,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.extensionlocation
+plugin at org.eclipse.equinox.p2.garbagecollector=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.garbagecollector
+plugin at org.eclipse.equinox.p2.installer=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.installer
+plugin at org.eclipse.equinox.p2.jarprocessor=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.jarprocessor
+plugin at org.eclipse.equinox.p2.metadata=CVS,tag=v20100601,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata
+plugin at org.eclipse.equinox.p2.metadata.generator=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.generator
+plugin at org.eclipse.equinox.p2.metadata.repository=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository
+plugin at org.eclipse.equinox.p2.operations=CVS,tag=v20100510,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.operations
+plugin at org.eclipse.equinox.p2.publisher=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.publisher
+plugin at org.eclipse.equinox.p2.reconciler.dropins=CVS,tag=v20100525,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.reconciler.dropins
+plugin at org.eclipse.equinox.p2.repository=CVS,tag=v20100519,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository
+plugin at org.eclipse.equinox.p2.repository.tools=CVS,tag=v20100520,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools
 plugin at org.eclipse.equinox.p2.selfhosting=CVS,tag=_api_cleanup_v20091125,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.selfhosting
-plugin at org.eclipse.equinox.p2.touchpoint.eclipse=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.eclipse
-plugin at org.eclipse.equinox.p2.touchpoint.natives=CVS,tag=v20100413,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.natives
-plugin at org.eclipse.equinox.p2.ui=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui
-plugin at org.eclipse.equinox.p2.ui.admin=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin
-plugin at org.eclipse.equinox.p2.ui.discovery=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.discovery
-plugin at org.eclipse.equinox.p2.ui.sdk=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk
-plugin at org.eclipse.equinox.p2.ui.sdk.scheduler=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler
-plugin at org.eclipse.equinox.p2.ui.admin.rcp=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin.rcp
-plugin at org.eclipse.equinox.p2.updatechecker=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatechecker
-plugin at org.eclipse.equinox.p2.updatesite=CVS,tag=v20100405-2203,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite
-plugin at org.eclipse.equinox.simpleconfigurator=CVS,tag=v20100416,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator
-plugin at org.eclipse.equinox.simpleconfigurator.manipulator=CVS,tag=v20100416,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator.manipulator
-plugin at org.eclipse.equinox.p2.tests=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests
-plugin at org.eclipse.equinox.p2.tests.discovery=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.discovery
-plugin at org.eclipse.equinox.p2.tests.ui=CVS,tag=v20100419,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.ui
-plugin at org.eclipse.equinox.p2.tests.verifier=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.verifier
-plugin at org.eclipse.equinox.p2.ql=CVS,tag=v20100329,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ql
+plugin at org.eclipse.equinox.p2.touchpoint.eclipse=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.eclipse
+plugin at org.eclipse.equinox.p2.touchpoint.natives=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.touchpoint.natives
+plugin at org.eclipse.equinox.p2.ui=CVS,tag=v20100518,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui
+plugin at org.eclipse.equinox.p2.ui.admin=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin
+plugin at org.eclipse.equinox.p2.ui.discovery=CVS,tag=v20100519,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.discovery
+plugin at org.eclipse.equinox.p2.ui.sdk=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk
+plugin at org.eclipse.equinox.p2.ui.sdk.scheduler=CVS,tag=v20100507-1815,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler
+plugin at org.eclipse.equinox.p2.ui.admin.rcp=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.admin.rcp
+plugin at org.eclipse.equinox.p2.updatechecker=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatechecker
+plugin at org.eclipse.equinox.p2.updatesite=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite
+plugin at org.eclipse.equinox.simpleconfigurator=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator
+plugin at org.eclipse.equinox.simpleconfigurator.manipulator=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.simpleconfigurator.manipulator
+plugin at org.eclipse.equinox.p2.tests=CVS,tag=v20100525,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests
+plugin at org.eclipse.equinox.p2.tests.discovery=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.discovery
+plugin at org.eclipse.equinox.p2.tests.ui=CVS,tag=v20100513,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.ui
+plugin at org.eclipse.equinox.p2.tests.verifier=CVS,tag=v20100503,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests.verifier
+plugin at org.eclipse.equinox.p2.ql=CVS,tag=v20100503a,cvsRoot=kmoir at dev.eclipse.org:/cvsroot/rt,path=org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ql
 
 !# Bundles from ECF
-plugin at org.eclipse.ecf,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.identity,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.identity_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.identity.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.identity.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.filetransfer,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.filetransfer.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100301-1516.jar,usetimestamp=true
-plugin at org.eclipse.ecf.provider.filetransfer.httpclient.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100301-1516.jar,usetimestamp=true
-fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-03-01_07-12-39/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100301-1516.jar,usetimestamp=true
+plugin at org.eclipse.ecf,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.identity,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.identity_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.identity.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.identity.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.filetransfer,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.filetransfer.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.source,3.1.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100529-0735.jar,usetimestamp=true
+plugin at org.eclipse.ecf.provider.filetransfer.httpclient.source,4.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100529-0735.jar,usetimestamp=true
+fragment at org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source,1.0.0=GET,http://www.eclipse.org/external/rt/ecf/integration/platform/v2010-05-29_00-32-38/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100529-0735.jar,usetimestamp=true
 
 !# The following apache bundes are obtained from the orbit.map
 !#plugin at org.apache.commons.codec,1.3.0=GET,http://fullmoon.ottawa.ibm.com/tools/orbit/downloads/drops/S20090426201227/bundles/org.apache.commons.codec_1.3.0.v20080530-1600.jar
diff --git a/eclipse/maps/org.eclipse.releng/maps/pde.map b/eclipse/maps/org.eclipse.releng/maps/pde.map
index 280de82..6201135 100644
--- a/eclipse/maps/org.eclipse.releng/maps/pde.map
+++ b/eclipse/maps/org.eclipse.releng/maps/pde.map
@@ -1,34 +1,34 @@
 !***************  PDE CONTRIBUTION  ******************************************************** 
 
 
-plugin at org.eclipse.pde=v20091127,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde
-plugin at org.eclipse.pde.core=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.core
-plugin at org.eclipse.pde.junit.runtime=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.junit.runtime
-plugin at org.eclipse.pde.runtime=v20100305,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.runtime
-plugin at org.eclipse.pde.launching=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.launching
-plugin at org.eclipse.pde.ui=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui
-plugin at org.eclipse.pde.ui.templates=v20100208-2040,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.templates
-plugin at org.eclipse.pde.ui.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.tests
+plugin at org.eclipse.pde=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde
+plugin at org.eclipse.pde.core=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.core
+plugin at org.eclipse.pde.junit.runtime=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.junit.runtime
+plugin at org.eclipse.pde.runtime=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.runtime
+plugin at org.eclipse.pde.launching=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.launching
+plugin at org.eclipse.pde.ui=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui
+plugin at org.eclipse.pde.ui.templates=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.templates
+plugin at org.eclipse.pde.ui.tests=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.pde.ui.tests
 
-plugin at org.eclipse.ui.views.log=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.ui.views.log
-plugin at org.eclipse.pde.api.tools=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools
-plugin at org.eclipse.pde.api.tools.ui=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ui
-plugin at org.eclipse.pde.api.tools.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.tests
-fragment at org.eclipse.pde.api.tools.ee.cdcfoundation10=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10
-fragment at org.eclipse.pde.api.tools.ee.cdcfoundation11=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11
-fragment at org.eclipse.pde.api.tools.ee.j2se12=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12
-fragment at org.eclipse.pde.api.tools.ee.j2se13=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se13
-fragment at org.eclipse.pde.api.tools.ee.j2se14=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se14
-fragment at org.eclipse.pde.api.tools.ee.j2se15=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se15
-fragment at org.eclipse.pde.api.tools.ee.javase16=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.javase16
-fragment at org.eclipse.pde.api.tools.ee.jre11=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.jre11
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum10=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum10
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum11=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11
-fragment at org.eclipse.pde.api.tools.ee.osgiminimum12=v20091028-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12
+plugin at org.eclipse.ui.views.log=v20100423,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ui/org.eclipse.ui.views.log
+plugin at org.eclipse.pde.api.tools=v20100602-0930,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools
+plugin at org.eclipse.pde.api.tools.ui=v20100601-1815,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ui
+plugin at org.eclipse.pde.api.tools.tests=v20100526-1600,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.tests
+fragment at org.eclipse.pde.api.tools.ee.cdcfoundation10=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation10
+fragment at org.eclipse.pde.api.tools.ee.cdcfoundation11=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.cdcfoundation11
+fragment at org.eclipse.pde.api.tools.ee.j2se12=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se12
+fragment at org.eclipse.pde.api.tools.ee.j2se13=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se13
+fragment at org.eclipse.pde.api.tools.ee.j2se14=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se14
+fragment at org.eclipse.pde.api.tools.ee.j2se15=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.j2se15
+fragment at org.eclipse.pde.api.tools.ee.javase16=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.javase16
+fragment at org.eclipse.pde.api.tools.ee.jre11=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.jre11
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum10=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum10
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum11=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum11
+fragment at org.eclipse.pde.api.tools.ee.osgiminimum12=v20100506-0900,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/apitools/org.eclipse.pde.api.tools.ee.osgiminimum12
 
-plugin at org.eclipse.pde.ds.core=v20100310,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.core
-plugin at org.eclipse.pde.ds.ui=v20100406,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.ui
-plugin at org.eclipse.pde.ds.tests=v20090420,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.tests
+plugin at org.eclipse.pde.ds.core=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.core
+plugin at org.eclipse.pde.ds.ui=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.ui
+plugin at org.eclipse.pde.ds.tests=v20100601,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ds/org.eclipse.pde.ds.tests
 
-plugin at org.eclipse.pde.ua.core=v20090729,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.core
-plugin at org.eclipse.pde.ua.ui=v20100305,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.ui
\ No newline at end of file
+plugin at org.eclipse.pde.ua.core=v20100504,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.core
+plugin at org.eclipse.pde.ua.ui=v20100504,kmoir at dev.eclipse.org:/cvsroot/eclipse,,pde/ua/org.eclipse.pde.ua.ui
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/rcp.map b/eclipse/maps/org.eclipse.releng/maps/rcp.map
index fd35c39..e2d9f62 100644
--- a/eclipse/maps/org.eclipse.releng/maps/rcp.map
+++ b/eclipse/maps/org.eclipse.releng/maps/rcp.map
@@ -1,3 +1,3 @@
-feature at org.eclipse.rcp=v20100414,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp
+feature at org.eclipse.rcp=v20100519,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp
 feature at org.eclipse.rcp.sdk=v20080507,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.rcp.sdk
-plugin at org.eclipse.rcp=v20090528,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.rcp
\ No newline at end of file
+plugin at org.eclipse.rcp=v20100527-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/plugins/org.eclipse.rcp
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/releng.map b/eclipse/maps/org.eclipse.releng/maps/releng.map
index d719f1b..49fe41d 100644
--- a/eclipse/maps/org.eclipse.releng/maps/releng.map
+++ b/eclipse/maps/org.eclipse.releng/maps/releng.map
@@ -1,6 +1,6 @@
 !****************  RELENG CONTRIBUTION  ******************************************************** 
 feature at master=v20091019,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master
-feature at master-equinox=v20100118,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox
+feature at master-equinox=v20100521,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox
 feature at master-equinox-p2=v20091106,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox-p2
 feature at master-equinox-weaving=v20090817,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-equinox-weaving
 feature at master-jetty=v20090305,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/master-jetty
@@ -8,10 +8,10 @@ feature at master-ecf=v20090316,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse
 
 feature at com.ibm.icu.base=v20090119,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/com.ibm.icu.base
 
-feature at org.eclipse.releng.tools=v20100409,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.releng.tools
+feature at org.eclipse.releng.tools=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk-feature/features/org.eclipse.releng.tools
 
-plugin at org.eclipse.releng.tools=v20100304,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.releng.tests=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.releng.tools=v20100531,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.releng.tests=v20100519,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 plugin at org.eclipse.pde.tools.versioning=r20080922,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.sdk.tests-feature/plugins/org.eclipse.pde.tools.versioning
 
diff --git a/eclipse/maps/org.eclipse.releng/maps/swt.map b/eclipse/maps/org.eclipse.releng/maps/swt.map
index c0dc1fa..5e42059 100644
--- a/eclipse/maps/org.eclipse.releng/maps/swt.map
+++ b/eclipse/maps/org.eclipse.releng/maps/swt.map
@@ -1,41 +1,41 @@
 !***************  SWT CONTRIBUTION  ******************************************************** 
 
 !*** SWT Plugin
-plugin at org.eclipse.swt=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Platform Fragments
-fragment at org.eclipse.swt.carbon.macosx=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.cocoa.macosx=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.cocoa.macosx.x86_64=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.ppc=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.ppc64=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.x86=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.x86_64=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.solaris.sparc=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.solaris.x86=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.aix.ppc=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.hpux.ia64_32=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.linux.x86=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.motif.solaris.sparc=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.photon.qnx.x86=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.wce_ppc.arm=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.x86=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.x86_64=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.win32.win32.ia64=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.carbon.macosx=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.cocoa.macosx=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.cocoa.macosx.x86_64=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.ppc=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.ppc64=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.x86=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.x86_64=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.solaris.sparc=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.solaris.x86=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.aix.ppc=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.hpux.ia64_32=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.linux.x86=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.motif.solaris.sparc=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.photon.qnx.x86=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.wce_ppc.arm=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.x86=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.x86_64=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.win32.win32.ia64=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-fragment at org.eclipse.swt.gtk.linux.s390=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.swt.gtk.linux.s390x=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.s390=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.swt.gtk.linux.s390x=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Examples
-plugin at org.eclipse.swt.examples=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.browser=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.browser.demos=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.controls=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.launcher=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.layouts=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.ole.win32=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.examples.paint=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.browser=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.browser.demos=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.controls=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.launcher=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.layouts=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.ole.win32=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.examples.paint=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !*** SWT Tests and Tools
-plugin at org.eclipse.swt.tests=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.swt.tools=v3642,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.swt.tests=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.swt.tools=v3650b,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/team.map b/eclipse/maps/org.eclipse.releng/maps/team.map
index 82f3dcb..00557a8 100644
--- a/eclipse/maps/org.eclipse.releng/maps/team.map
+++ b/eclipse/maps/org.eclipse.releng/maps/team.map
@@ -1,24 +1,24 @@
 !***************  TEAM CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.team.core=I20100420-0520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.core=I20100310-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ssh=I20090508-2000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ssh2=I20100330-0755,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.ui=I20100420-0520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.cvs.ui=I20100330-0755,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.core=I20100527-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.core=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ssh=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ssh2=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.ui=I20100527-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.cvs.ui=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.core.net=I20100420-0520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.net=I20100216-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.tests.net=I20100420-0520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.core=I20100112-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.ui=I20100310-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jsch.tests=I20080604,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.net=I20100511-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.net=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.tests.net=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.core=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.ui=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jsch.tests=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.team.examples.filesystem=I20100310-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.examples.filesystem=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.team.tests.core=I20090714-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.team.tests.cvs.core=I20100420-0520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.core.net.win32.x86=I20080909,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86
-fragment at org.eclipse.core.net.linux.x86=I20081021,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86
-fragment at org.eclipse.core.net.linux.x86_64=I20091106-0506,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64
-fragment at org.eclipse.core.net.win32.x86_64=I20090306-1030,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64
\ No newline at end of file
+plugin at org.eclipse.team.tests.core=I20100511-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.team.tests.cvs.core=I20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.core.net.win32.x86=I20100511-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86
+fragment at org.eclipse.core.net.linux.x86=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86
+fragment at org.eclipse.core.net.linux.x86_64=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64
+fragment at org.eclipse.core.net.win32.x86_64=I20100505-1245,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/testframework.map b/eclipse/maps/org.eclipse.releng/maps/testframework.map
index 6ac5815..dc3ef74 100644
--- a/eclipse/maps/org.eclipse.releng/maps/testframework.map
+++ b/eclipse/maps/org.eclipse.releng/maps/testframework.map
@@ -1,5 +1,5 @@
 !***************  Test Framework CONTRIBUTION  ******************************************************** 
-feature at org.eclipse.test=v20100409,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.test-feature
+feature at org.eclipse.test=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.test-feature
 
 plugin at org.eclipse.test=v20100118,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 fragment at org.eclipse.ant.optional.junit=v20080717,kmoir at dev.eclipse.org:/cvsroot/eclipse,
diff --git a/eclipse/maps/org.eclipse.releng/maps/text.map b/eclipse/maps/org.eclipse.releng/maps/text.map
index 15caf88..d5f9192 100644
--- a/eclipse/maps/org.eclipse.releng/maps/text.map
+++ b/eclipse/maps/org.eclipse.releng/maps/text.map
@@ -1,16 +1,16 @@
 !***************  TEXT CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.text=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.text=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench.texteditor=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.editors=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.filebuffers=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.text=v20100601-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.text=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench.texteditor=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.editors=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.filebuffers=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.examples.javaeditor=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.javaeditor=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.text.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.text.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.filebuffers.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench.texteditor.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.editors.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jdt.text.tests=v20100420-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.text.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.text.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.filebuffers.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench.texteditor.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.editors.tests=v20100520-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jdt.text.tests=v20100526-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/ui.map b/eclipse/maps/org.eclipse.releng/maps/ui.map
index 41833e5..640e806 100644
--- a/eclipse/maps/org.eclipse.releng/maps/ui.map
+++ b/eclipse/maps/org.eclipse.releng/maps/ui.map
@@ -1,43 +1,43 @@
 !***************  UI CONTRIBUTION  ********************************************************* 
 
-plugin at org.eclipse.core.commands=I20100122-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding=I20100310-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.observable=I20100310-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.property=I20100310-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.core.databinding.beans=I20100322-2025,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.jface.databinding=I20100310-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.ide=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.ide.application=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.presentations.r21=I20100311-1200,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.views=I20090914-0830,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.workbench=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.workbench.compatibility=I20090429-1800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.win32=v20090429-1800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.carbon=I20091204-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.ui.cocoa=I20091204-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.commands=I20100512-1500,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.observable=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.property=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.core.databinding.beans=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.databinding=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui=I20100603-1100,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.ide=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.ide.application=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.presentations.r21=I20100517-1500,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.views=I20100527-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.workbench=I20100603-1100,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.workbench.compatibility=I20100511-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.win32=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.carbon=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.ui.cocoa=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 
-plugin at org.eclipse.jface.examples.databinding=I20100310-1300,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.multipageeditor=I20070605-0010,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.propertysheet=I20070319-0010,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.readmetool=I20090526-2000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.undo=I20080204-0800a,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.views.properties.tabbed.article=I20060605-1400,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.ui.examples.views.properties.tabbed/org.eclipse.ui.examples.views.properties.tabbed.article
-plugin at org.eclipse.ui.examples.fieldassist=I20100223-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.examples.contributions=I20090526-2000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.examples.databinding=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.multipageeditor=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.propertysheet=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.readmetool=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.undo=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.views.properties.tabbed.article=I20100517-1500,kmoir at dev.eclipse.org:/cvsroot/eclipse,,org.eclipse.ui.examples.views.properties.tabbed/org.eclipse.ui.examples.views.properties.tabbed.article
+plugin at org.eclipse.ui.examples.fieldassist=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.examples.contributions=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.navigator=I20100329-1712,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.navigator.resources=I20100322-2025,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.navigator=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.navigator.resources=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.ui.views.properties.tabbed=I20090429-1800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.views.properties.tabbed=I20100509-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.jface.tests.databinding=I20100310-0100,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.jface.tests.databinding=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.jface.tests.databinding.conformance=I20090818-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests=I20100419-1730,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.ui.tests.rcp=I20090525-2000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.navigator=I20100310-0100,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.navigator=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 plugin at org.eclipse.ui.tests.views.properties.tabbed=I20090525-2000,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.performance=I20100122-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.harness=I20100209-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.ui.tests.performance=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.harness=I20100601-0800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/update.map b/eclipse/maps/org.eclipse.releng/maps/update.map
index 18ae137..089c670 100644
--- a/eclipse/maps/org.eclipse.releng/maps/update.map
+++ b/eclipse/maps/org.eclipse.releng/maps/update.map
@@ -1,11 +1,11 @@
 !***************  UPDATE CONTRIBUTION  ******************************************************** 
 
-plugin at org.eclipse.update.configurator=v20100307,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.core=v20100416,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.scheduler=v20081127,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.update.ui=v20090813,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.configurator=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.core=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.scheduler=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.update.ui=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-fragment at org.eclipse.update.core.win32=v20080107,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-fragment at org.eclipse.update.core.linux=v20081008,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.update.core.win32=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+fragment at org.eclipse.update.core.linux=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
-plugin at org.eclipse.update.tests.core=v20100416,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.update.tests.core=v20100512,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/maps/org.eclipse.releng/maps/userassist.map b/eclipse/maps/org.eclipse.releng/maps/userassist.map
index 54300ac..9c2ec60 100644
--- a/eclipse/maps/org.eclipse.releng/maps/userassist.map
+++ b/eclipse/maps/org.eclipse.releng/maps/userassist.map
@@ -1,26 +1,26 @@
 !***************  UA CONTRIBUTION  *********************************************
 
 !**** Help
-plugin at org.eclipse.help=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.appserver=v20090429_1800,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.base=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.ui=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.help.webapp=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help=v20100524,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.appserver=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.base=v20100520,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.ui=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.help.webapp=v20100507,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Welcome
-plugin at org.eclipse.ui.intro=v20100405,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.intro.universal=v20100405,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.intro=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.intro.universal=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Cheat sheets
-plugin at org.eclipse.ui.cheatsheets=v20100405,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.cheatsheets=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Browser
-plugin at org.eclipse.ui.browser=v20100405,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.browser=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Forms
-plugin at org.eclipse.ui.forms=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.forms=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
 
 !**** Tests
-plugin at org.eclipse.ua.tests=v20100412,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ua.tests.doc=v20100419,kmoir at dev.eclipse.org:/cvsroot/eclipse,
-plugin at org.eclipse.ui.tests.forms=v20100301,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
+plugin at org.eclipse.ua.tests=v20100519,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ua.tests.doc=v20100427,kmoir at dev.eclipse.org:/cvsroot/eclipse,
+plugin at org.eclipse.ui.tests.forms=v20100517,kmoir at dev.eclipse.org:/cvsroot/eclipse,
\ No newline at end of file
diff --git a/eclipse/pluginVersions.properties b/eclipse/pluginVersions.properties
index 9035d0b..418fea4 100644
--- a/eclipse/pluginVersions.properties
+++ b/eclipse/pluginVersions.properties
@@ -1,298 +1,299 @@
-#Sun Apr 25 19:23:53 CEST 2010
-org.eclipse.help.appserver,0.0.0=v20090429_1800
-org.eclipse.ui.forms,0.0.0=v20100419
-org.eclipse.jdt.debug.ui,0.0.0=v20100419
-org.eclipse.jdt.launching.macosx,0.0.0=v20100407-1200
-org.eclipse.equinox.jmx.server.xmlrpc,0.0.0=v20070608
-org.eclipse.equinox.launcher.motif.solaris.sparc,0.0.0=v20100322-1720
-org.eclipse.core.boot,0.0.0=v20080218
-org.eclipse.ui.net,0.0.0=I20100216-0800
-org.eclipse.equinox.launcher.gtk.solaris.x86,0.0.0=v20100329
-org.eclipse.jdt.apt.pluggable.core,0.0.0=v20090922-0135
-org.eclipse.swt.examples.paint,0.0.0=v3642
-org.eclipse.core.net.win32.x86,0.0.0=I20080909
-org.eclipse.core.filesystem.macosx,0.0.0=v20100216-0700
-org.eclipse.equinox.launcher.motif.linux.x86,0.0.0=v20100322-1720
-org.eclipse.ui.navigator.resources,0.0.0=I20100322-2025
-org.eclipse.equinox.p2.metadata.repository,0.0.0=v20100419
-org.eclipse.swt,0.0.0=v3642
-org.eclipse.swt.win32.win32.x86,0.0.0=v3642
-org.eclipse.update.ui,0.0.0=v20090813
-org.eclipse.core.filesystem,0.0.0=v20100419
-org.eclipse.core.externaltools,0.0.0=v20091204
-org.eclipse.equinox.registry.jmx,0.0.0=v20080610-1530
-org.eclipse.equinox.io,0.0.0=v20100118
-org.eclipse.equinox.simpleconfigurator.manipulator,0.0.0=v20100416
-org.eclipse.pde.api.tools.ui,0.0.0=v20100419
-org.eclipse.jdt.debug,0.0.0=v20100326-1314
-org.eclipse.sdk.examples,0.0.0=v20080612
-org.eclipse.pde,0.0.0=v20091127
-org.eclipse.compare.core,0.0.0=I20100330-0755
-org.eclipse.equinox.p2.engine,0.0.0=v20100405-2203
-org.eclipse.equinox.launcher.motif.hpux.ia64_32,0.0.0=v20100322-1720
-org.eclipse.equinox.http,0.0.0=v20100108
-org.eclipse.swt.gtk.linux.x86_64,0.0.0=v3642
-org.eclipse.swt.photon.qnx.x86,0.0.0=v3642
-org.eclipse.equinox.p2.ui.admin,0.0.0=v20100405-2203
-org.eclipse.equinox.weaving.caching.j9,0.0.0=v20100108
-org.eclipse.equinox.transforms.xslt,0.0.0=v20100118
-org.eclipse.jface.databinding,0.0.0=I20100310-1300
-org.eclipse.equinox.p2.touchpoint.eclipse,0.0.0=v20100405-2203
-org.eclipse.help.base,0.0.0=v20100419
-org.eclipse.ui.presentations.r21,0.0.0=I20100311-1200
-org.eclipse.equinox.frameworkadmin,0.0.0=v20100419
-org.eclipse.pde.launching,0.0.0=v20100419
-org.eclipse.ui.intro,0.0.0=v20100405
-org.eclipse.ltk.ui.refactoring,0.0.0=v20100420-0800
-org.eclipse.swt.examples.ole.win32,0.0.0=v3642
-org.eclipse.ui.workbench.texteditor,0.0.0=v20100420-0800
-org.eclipse.ui.examples.multipageeditor,0.0.0=I20070605-0010
-org.eclipse.core.filesystem.linux.x86,0.0.0=v20100216-0700
-org.eclipse.equinox.p2.ui.discovery,0.0.0=v20100419
-org.eclipse.ui.examples.javaeditor,0.0.0=v20100420-0800
-org.eclipse.ant.core,0.0.0=v20091118
-org.eclipse.equinox.p2.ui.admin.rcp,0.0.0=v20100329
-org.eclipse.equinox.p2.updatechecker,0.0.0=v20100405-2203
-org.eclipse.debug.core,0.0.0=v20100326
-org.eclipse.ui.examples.views.properties.tabbed.article,0.0.0=I20060605-1400
-org.eclipse.core.databinding,0.0.0=I20100310-1300
-org.eclipse.equinox.transforms.hook,0.0.0=v20100329
-org.eclipse.ui.carbon,0.0.0=I20091204-0800
-org.eclipse.core.contenttype,0.0.0=v20100412
-org.eclipse.text,0.0.0=v20100420-0800
-org.eclipse.help.ui,0.0.0=v20100419
-org.eclipse.equinox.servletbridge,0.0.0=v20100419
-org.eclipse.jdt.apt.core,0.0.0=v20091203-0315
-org.eclipse.swt.win32.win32.x86_64,0.0.0=v3642
-org.eclipse.equinox.metatype,0.0.0=v20100118
-org.eclipse.pde.ua.ui,0.0.0=v20100305
-org.eclipse.equinox.initializer,0.0.0=v20100316
-org.eclipse.jsch.core,0.0.0=I20100112-0800
-org.eclipse.equinox.frameworkadmin.equinox,0.0.0=v20100419
-org.eclipse.osgi.util,0.0.0=v20100108
-org.eclipse.search,0.0.0=v20100420-0800
-org.eclipse.ui.views,0.0.0=I20090914-0830
-org.eclipse.equinox.simpleconfigurator,0.0.0=v20100416
-org.eclipse.team.ui,0.0.0=I20100420-0520
-org.eclipse.equinox.p2.metadata,0.0.0=v20100419
-org.eclipse.swt.cocoa.macosx.x86_64,0.0.0=v3642
-org.eclipse.swt.gtk.linux.ppc64,0.0.0=v3642
-org.eclipse.jdt.compiler.tool,0.0.0=v_A45
-org.eclipse.platform,0.0.0=v20100407
-org.eclipse.core.databinding.observable,0.0.0=I20100310-1300
-org.eclipse.equinox.weaving.aspectj,0.0.0=v20100108
-org.eclipse.team.examples.filesystem,0.0.0=I20100310-0800
-org.eclipse.pde.core,0.0.0=v20100419
-org.eclipse.ui.workbench,0.0.0=I20100419-1730
-org.eclipse.core.runtime,0.0.0=v20100412
-org.eclipse.core.resources.win32.x86,0.0.0=v20081020
-org.eclipse.equinox.launcher.gtk.linux.x86_64,0.0.0=v20100322-1720
-org.eclipse.help,0.0.0=v20100412
-org.eclipse.pde.api.tools.ee.j2se15,0.0.0=v20091028-1400
-org.junit4,0.0.0=v20100302
-org.eclipse.update.scheduler,0.0.0=v20081127
-org.eclipse.equinox.launcher.gtk.linux.s390,0.0.0=v20090426-1530
-org.eclipse.pde.junit.runtime,0.0.0=v20100412
-org.eclipse.osgi.services,0.0.0=v20100108
-org.eclipse.swt.examples.layouts,0.0.0=v3642
-org.eclipse.jface,0.0.0=I20100419-1730
-org.eclipse.equinox.p2.discovery,0.0.0=v20100329
-org.eclipse.pde.api.tools.ee.osgiminimum10,0.0.0=v20091028-1400
-org.eclipse.equinox.jmx.server,0.0.0=v20071015
-org.eclipse.equinox.jmx.server.rmi,0.0.0=v20070510
-org.eclipse.jdt.ui,0.0.0=v20100420-0800
-org.eclipse.equinox.security,0.0.0=v20100301
-org.eclipse.equinox.launcher,0.0.0=v20100419
-org.eclipse.core.runtime.compatibility.registry,0.0.0=v20091116
-org.eclipse.jdt.junit.core,0.0.0=v20100420-0800
-org.eclipse.equinox.http.jetty,2.0.0=v20090520-1800
-org.eclipse.jdt.launching,0.0.0=v20100326
-org.eclipse.equinox.p2.ql,0.0.0=v20100329
-org.eclipse.ui.console,0.0.0=v20100326
-org.eclipse.equinox.weaving.caching,0.0.0=v20100108
-org.eclipse.jdt.apt.ui,0.0.0=v20091027-0900
-org.eclipse.equinox.p2.discovery.compatibility,0.0.0=v20100413
-org.eclipse.ui.examples.fieldassist,0.0.0=I20100223-0800
-org.eclipse.ui.ide.application,0.0.0=I20100419-1730
-org.eclipse.equinox.launcher.gtk.linux.ppc,0.0.0=v20100322-1720
-org.eclipse.equinox.launcher.carbon.macosx,0.0.0=v20100322-1720
-org.eclipse.jdt.junit,0.0.0=v20100420-0800
-org.eclipse.pde.api.tools,0.0.0=v20100419
-org.eclipse.core.runtime.compatibility,0.0.0=v20090413
-org.eclipse.equinox.p2.directorywatcher,0.0.0=v20100405-2203
-org.eclipse.equinox.launcher.gtk.solaris.sparc,0.0.0=v20100322-1720
-org.eclipse.core.filesystem.hpux.ia64_32,0.0.0=v20080604-1400
-org.eclipse.swt.motif.aix.ppc,0.0.0=v3642
-org.eclipse.ui.examples.undo,0.0.0=I20080204-0800a
-org.eclipse.ui.cocoa,0.0.0=I20091204-0800
-org.eclipse.core.filesystem.qnx.x86,0.0.0=v20080604-1400
-org.eclipse.equinox.http.registry,0.0.0=v20100307
-org.eclipse.pde.api.tools.ee.jre11,0.0.0=v20091028-1400
-org.eclipse.core.net.linux.x86_64,0.0.0=I20091106-0506
-org.eclipse.equinox.jsp.jasper,0.0.0=v20090520-1800
-org.eclipse.pde.api.tools.ee.j2se14,0.0.0=v20091028-1400
-org.eclipse.equinox.p2.ui,0.0.0=v20100419
-org.eclipse.jdt.launching.ui.macosx,0.0.0=v20090527
-org.eclipse.equinox.p2.ui.sdk,0.0.0=v20100419
-org.eclipse.compare.examples,0.0.0=v20060606
-org.eclipse.pde.ua.core,0.0.0=v20090729
-org.eclipse.platform.doc.isv,0.0.0=v20100420-0800
-org.eclipse.ant.launching,0.0.0=v20091204
-org.eclipse.equinox.p2.operations,0.0.0=v20100419
-org.eclipse.compare,0.0.0=I20100414-1020
-org.eclipse.equinox.http.servletbridge,0.0.0=v20091020
-org.eclipse.jdt.compiler.apt,0.0.0=v20091027-0900
-org.eclipse.help.webapp,0.0.0=v20100412
-org.eclipse.pde.ui.templates,0.0.0=v20100208-2040
-org.eclipse.equinox.p2.repository,0.0.0=v20100405-2203
-org.eclipse.equinox.p2.metadata.generator,0.0.0=v20100413
-org.eclipse.equinox.p2.director.app,0.0.0=v20100413
-org.eclipse.equinox.launcher.motif.aix.ppc,0.0.0=v20100322-1720
-org.eclipse.equinox.app,0.0.0=v20100304
-org.eclipse.swt.motif.hpux.ia64_32,0.0.0=v3642
-org.eclipse.swt.gtk.solaris.x86,0.0.0=v3642
-org.eclipse.pde.ds.ui,0.0.0=v20100406
-org.eclipse.core.net.linux.x86,0.0.0=I20081021
-org.eclipse.equinox.p2.console,0.0.0=v20100329
-org.eclipse.equinox.http.jetty,0.0.0=v20090520-1800
-org.eclipse.swt.examples.browser.demos,0.0.0=v3642
-org.eclipse.equinox.launcher.cocoa.macosx.x86_64,0.0.0=v20100322-1720
-org.eclipse.releng.tools,0.0.0=v20100304
-org.eclipse.pde.doc.user,0.0.0=v20100419
-org.eclipse.swt.motif.linux.x86,0.0.0=v3642
-org.eclipse.jface.examples.databinding,0.0.0=I20100310-1300
-org.eclipse.equinox.jmx.client.rmi,0.0.0=v20100316
-org.eclipse.equinox.weaving.hook,0.0.0=v20100108
-org.eclipse.debug.ui,0.0.0=v20100419
-org.eclipse.core.net,0.0.0=I20100420-0520
-org.eclipse.core.filesystem.solaris.sparc,0.0.0=v20100216-0700
-org.eclipse.equinox.p2.touchpoint.natives,0.0.0=v20100413
-org.eclipse.pde.api.tools.ee.cdcfoundation11,0.0.0=v20091028-1400
+#Mon Jun 07 12:15:24 EDT 2010
+org.eclipse.help.appserver,0.0.0=v20100427
+org.eclipse.ui.forms,0.0.0=v20100427
+org.eclipse.swt.gtk.linux.s390x,0.0.0=v3650b
+org.eclipse.jdt.debug.ui,0.0.0=v20100602-0830
+org.eclipse.jdt.launching.macosx,0.0.0=v20100505
+org.eclipse.equinox.jmx.server.xmlrpc,0.0.0=v20100503
+org.eclipse.equinox.launcher.motif.solaris.sparc,0.0.0=v20100503
+org.eclipse.core.boot,0.0.0=v20100505
+org.eclipse.ui.net,0.0.0=I20100505-1245
+org.eclipse.equinox.launcher.gtk.solaris.x86,0.0.0=v20100503
+org.eclipse.jdt.apt.pluggable.core,0.0.0=v20100513-0845
+org.eclipse.swt.examples.paint,0.0.0=v3650b
+org.eclipse.core.net.win32.x86,0.0.0=I20100511-0800
+org.eclipse.core.filesystem.macosx,0.0.0=v20100505
+org.eclipse.equinox.launcher.motif.linux.x86,0.0.0=v20100503
+org.eclipse.ui.navigator.resources,0.0.0=I20100601-0800
+org.eclipse.equinox.p2.metadata.repository,0.0.0=v20100513
+org.eclipse.swt,0.0.0=v3650b
+org.eclipse.swt.win32.win32.x86,0.0.0=v3650b
+org.eclipse.update.ui,0.0.0=v20100512
+org.eclipse.core.filesystem,0.0.0=v20100526-0737
+org.eclipse.core.externaltools,0.0.0=v20100505
+org.eclipse.equinox.registry.jmx,0.0.0=v20100503
+org.eclipse.equinox.io,0.0.0=v20100503
+org.eclipse.equinox.simpleconfigurator.manipulator,0.0.0=v20100503
+org.eclipse.pde.api.tools.ui,0.0.0=v20100601-1815
+org.eclipse.jdt.debug,0.0.0=v20100526
+org.eclipse.sdk.examples,0.0.0=v20100527
+org.eclipse.pde,0.0.0=v20100601
+org.eclipse.compare.core,0.0.0=I20100526-0800
+org.eclipse.equinox.p2.engine,0.0.0=v20100527
+org.eclipse.equinox.launcher.motif.hpux.ia64_32,0.0.0=v20100503
+org.eclipse.equinox.http,0.0.0=v20100503
+org.eclipse.swt.gtk.linux.x86_64,0.0.0=v3650b
+org.eclipse.swt.photon.qnx.x86,0.0.0=v3650b
+org.eclipse.equinox.p2.ui.admin,0.0.0=v20100503
+org.eclipse.equinox.weaving.caching.j9,0.0.0=v20100503
+org.eclipse.equinox.transforms.xslt,0.0.0=v20100503
+org.eclipse.jface.databinding,0.0.0=I20100601-0800
+org.eclipse.equinox.p2.touchpoint.eclipse,0.0.0=v20100513
+org.eclipse.help.base,0.0.0=v20100520
+org.eclipse.ui.presentations.r21,0.0.0=I20100517-1500
+org.eclipse.equinox.frameworkadmin,0.0.0=v20100503
+org.eclipse.pde.launching,0.0.0=v20100601
+org.eclipse.ui.intro,0.0.0=v20100427
+org.eclipse.ltk.ui.refactoring,0.0.0=v20100526-0800
+org.eclipse.swt.examples.ole.win32,0.0.0=v3650b
+org.eclipse.ui.workbench.texteditor,0.0.0=v20100520-0800
+org.eclipse.ui.examples.multipageeditor,0.0.0=I20100509-0800
+org.eclipse.core.filesystem.linux.x86,0.0.0=v20100505-1235
+org.eclipse.equinox.p2.ui.discovery,0.0.0=v20100519
+org.eclipse.ui.examples.javaeditor,0.0.0=v20100520-0800
+org.eclipse.ant.core,0.0.0=v20100427
+org.eclipse.equinox.p2.ui.admin.rcp,0.0.0=v20100503a
+org.eclipse.equinox.p2.updatechecker,0.0.0=v20100503a
+org.eclipse.debug.core,0.0.0=v20100519
+org.eclipse.ui.examples.views.properties.tabbed.article,0.0.0=I20100517-1500
+org.eclipse.core.databinding,0.0.0=I20100601-0800
+org.eclipse.equinox.transforms.hook,0.0.0=v20100503
+org.eclipse.ui.carbon,0.0.0=I20100601-0800
+org.eclipse.core.contenttype,0.0.0=v20100505-1235
+org.eclipse.text,0.0.0=v20100601-1300
+org.eclipse.help.ui,0.0.0=v20100517
+org.eclipse.equinox.servletbridge,0.0.0=v20100503
+org.eclipse.jdt.apt.core,0.0.0=v20100513-0845
+org.eclipse.swt.win32.win32.x86_64,0.0.0=v3650b
+org.eclipse.equinox.metatype,0.0.0=v20100503
+org.eclipse.pde.ua.ui,0.0.0=v20100504
+org.eclipse.equinox.initializer,0.0.0=v20100503
+org.eclipse.jsch.core,0.0.0=I20100505-1245
+org.eclipse.equinox.frameworkadmin.equinox,0.0.0=v20100505
+org.eclipse.osgi.util,0.0.0=v20100503
+org.eclipse.search,0.0.0=v20100520-0800
+org.eclipse.ui.views,0.0.0=I20100527-0800
+org.eclipse.equinox.simpleconfigurator,0.0.0=v20100503
+org.eclipse.team.ui,0.0.0=I20100527-0800
+org.eclipse.equinox.p2.metadata,0.0.0=v20100601
+org.eclipse.swt.cocoa.macosx.x86_64,0.0.0=v3650b
+org.eclipse.swt.gtk.linux.ppc64,0.0.0=v3650b
+org.eclipse.jdt.compiler.tool,0.0.0=v_A58
+org.eclipse.platform,0.0.0=v20100531
+org.eclipse.core.databinding.observable,0.0.0=I20100601-0800
+org.eclipse.equinox.weaving.aspectj,0.0.0=v20100503
+org.eclipse.team.examples.filesystem,0.0.0=I20100526-0800
+org.eclipse.pde.core,0.0.0=v20100601
+org.eclipse.ui.workbench,0.0.0=I20100603-1100
+org.eclipse.core.runtime,0.0.0=v20100505
+org.eclipse.core.resources.win32.x86,0.0.0=v20100505-1345
+org.eclipse.equinox.launcher.gtk.linux.x86_64,0.0.0=v20100503
+org.eclipse.help,0.0.0=v20100524
+org.eclipse.pde.api.tools.ee.j2se15,0.0.0=v20100506-0900
+org.junit4,0.0.0=v20100525
+org.eclipse.update.scheduler,0.0.0=v20100512
+org.eclipse.equinox.launcher.gtk.linux.s390,0.0.0=v20100507
+org.eclipse.pde.junit.runtime,0.0.0=v20100601
+org.eclipse.osgi.services,0.0.0=v20100503
+org.eclipse.swt.examples.layouts,0.0.0=v3650b
+org.eclipse.jface,0.0.0=I20100601-0800
+org.eclipse.equinox.p2.discovery,0.0.0=v20100503
+org.eclipse.pde.api.tools.ee.osgiminimum10,0.0.0=v20100506-0900
+org.eclipse.equinox.jmx.server,0.0.0=v20100503
+org.eclipse.equinox.jmx.server.rmi,0.0.0=v20100503
+org.eclipse.jdt.ui,0.0.0=v20100602-1600
+org.eclipse.equinox.security,0.0.0=v20100503
+org.eclipse.equinox.launcher,0.0.0=v20100507
+org.eclipse.core.runtime.compatibility.registry,0.0.0=v20100520
+org.eclipse.jdt.junit.core,0.0.0=v20100526-0800
+org.eclipse.equinox.http.jetty,2.0.0=v20100503
+org.eclipse.jdt.launching,0.0.0=v20100526
+org.eclipse.equinox.p2.ql,0.0.0=v20100503a
+org.eclipse.ui.console,0.0.0=v20100526
+org.eclipse.equinox.weaving.caching,0.0.0=v20100503
+org.eclipse.swt.gtk.linux.s390,0.0.0=v3650b
+org.eclipse.jdt.apt.ui,0.0.0=v20100513-0845
+org.eclipse.equinox.p2.discovery.compatibility,0.0.0=v20100518
+org.eclipse.ui.examples.fieldassist,0.0.0=I20100601-0800
+org.eclipse.ui.ide.application,0.0.0=I20100601-0800
+org.eclipse.equinox.launcher.gtk.linux.ppc,0.0.0=v20100503
+org.eclipse.equinox.launcher.carbon.macosx,0.0.0=v20100503
+org.eclipse.jdt.junit,0.0.0=v20100526-0800
+org.eclipse.pde.api.tools,0.0.0=v20100602-0930
+org.eclipse.core.runtime.compatibility,0.0.0=v20100505
+org.eclipse.equinox.p2.directorywatcher,0.0.0=v20100601
+org.eclipse.equinox.launcher.gtk.solaris.sparc,0.0.0=v20100503
+org.eclipse.core.filesystem.hpux.ia64_32,0.0.0=v20100505
+org.eclipse.swt.motif.aix.ppc,0.0.0=v3650b
+org.eclipse.ui.examples.undo,0.0.0=I20100509-0800
+org.eclipse.ui.cocoa,0.0.0=I20100601-0800
+org.eclipse.equinox.http.registry,0.0.0=v20100503
+org.eclipse.pde.api.tools.ee.jre11,0.0.0=v20100506-0900
+org.eclipse.core.net.linux.x86_64,0.0.0=I20100505-1245
+org.eclipse.equinox.jsp.jasper,0.0.0=v20100421
+org.eclipse.pde.api.tools.ee.j2se14,0.0.0=v20100506-0900
+org.eclipse.equinox.p2.ui,0.0.0=v20100518
+org.eclipse.jdt.launching.ui.macosx,0.0.0=v20100505
+org.eclipse.equinox.p2.ui.sdk,0.0.0=v20100513
+org.eclipse.compare.examples,0.0.0=I20100505-1245
+org.eclipse.pde.ua.core,0.0.0=v20100504
+org.eclipse.platform.doc.isv,0.0.0=v20100603-1400
+org.eclipse.ant.launching,0.0.0=v20100427
+org.eclipse.equinox.p2.operations,0.0.0=v20100510
+org.eclipse.compare,0.0.0=I20100526-0800
+org.eclipse.equinox.http.servletbridge,0.0.0=v20100503
+org.eclipse.jdt.compiler.apt,0.0.0=v20100513-0845
+org.eclipse.help.webapp,0.0.0=v20100507
+org.eclipse.pde.ui.templates,0.0.0=v20100601
+org.eclipse.equinox.p2.repository,0.0.0=v20100519
+org.eclipse.equinox.p2.metadata.generator,0.0.0=v20100503a
+org.eclipse.equinox.p2.director.app,0.0.0=v20100527
+org.eclipse.equinox.launcher.motif.aix.ppc,0.0.0=v20100503
+org.eclipse.equinox.app,0.0.0=v20100512
+org.eclipse.swt.motif.hpux.ia64_32,0.0.0=v3650b
+org.eclipse.swt.gtk.solaris.x86,0.0.0=v3650b
+org.eclipse.pde.ds.ui,0.0.0=v20100601
+org.eclipse.core.net.linux.x86,0.0.0=I20100505-1245
+org.eclipse.equinox.p2.console,0.0.0=v20100601
+org.eclipse.equinox.http.jetty,0.0.0=v20100503
+org.eclipse.swt.examples.browser.demos,0.0.0=v3650b
+org.eclipse.equinox.launcher.cocoa.macosx.x86_64,0.0.0=v20100503
+org.eclipse.releng.tools,0.0.0=v20100531
+org.eclipse.pde.doc.user,0.0.0=v20100603-1350
+org.eclipse.swt.motif.linux.x86,0.0.0=v3650b
+org.eclipse.jface.examples.databinding,0.0.0=I20100601-0800
+org.eclipse.equinox.jmx.client.rmi,0.0.0=v20100503
+org.eclipse.equinox.weaving.hook,0.0.0=v20100503
+org.eclipse.debug.ui,0.0.0=v20100601-1530
+org.eclipse.core.net,0.0.0=I20100511-0800
+org.eclipse.core.filesystem.solaris.sparc,0.0.0=v20100505-1235
+org.eclipse.equinox.p2.touchpoint.natives,0.0.0=v20100503a
+org.eclipse.pde.api.tools.ee.cdcfoundation11,0.0.0=v20100506-0900
 org.eclipse.equinox.launcher.win32.win32.ia64,0.0.0=v20100322-1720
-org.eclipse.swt.examples.browser,0.0.0=v3642
-org.eclipse.core.filesystem.linux.x86_64,0.0.0=v20100216-0700
-org.eclipse.equinox.event,0.0.0=v20100108
-org.eclipse.ui.ide,0.0.0=I20100419-1730
-org.eclipse.ui.views.log,0.0.0=v20100419
-org.eclipse.equinox.p2.jarprocessor,0.0.0=v20100329
-org.eclipse.ui.browser,0.0.0=v20100405
-org.eclipse.core.expressions,0.0.0=v20100222
-org.eclipse.core.databinding.beans,0.0.0=I20100322-2025
-org.eclipse.equinox.ds,0.0.0=v20100419
-org.eclipse.equinox.launcher.win32.win32.x86_64,0.0.0=v20100322-1720
-org.eclipse.equinox.launcher.gtk.linux.x86,0.0.0=v20100322-1720
-org.eclipse.update.core.linux,0.0.0=v20081008
-org.eclipse.core.databinding.property,0.0.0=I20100310-1300
-org.eclipse.ui.examples.propertysheet,0.0.0=I20070319-0010
-org.eclipse.core.jobs,0.0.0=v20100412
-org.eclipse.swt.gtk.linux.ppc,0.0.0=v3642
-org.eclipse.swt.carbon.macosx,0.0.0=v3642
-org.eclipse.pde.runtime,0.0.0=v20100305
-org.eclipse.pde.build,0.0.0=v20100419
-org.eclipse.equinox.p2.reconciler.dropins,0.0.0=v20100419
-org.eclipse.equinox.device,0.0.0=v20100118
-org.eclipse.core.commands,0.0.0=I20100122-0800
-org.eclipse.equinox.p2.repository.tools,0.0.0=v20100413
+org.eclipse.swt.examples.browser,0.0.0=v3650b
+org.eclipse.core.filesystem.linux.x86_64,0.0.0=v20100505-1235
+org.eclipse.equinox.event,0.0.0=v20100503
+org.eclipse.ui.ide,0.0.0=I20100601-0800
+org.eclipse.ui.views.log,0.0.0=v20100423
+org.eclipse.equinox.p2.jarprocessor,0.0.0=v20100503a
+org.eclipse.ui.browser,0.0.0=v20100517
+org.eclipse.core.expressions,0.0.0=v20100505
+org.eclipse.core.databinding.beans,0.0.0=I20100601-0800
+org.eclipse.equinox.ds,0.0.0=v20100507
+org.eclipse.equinox.launcher.win32.win32.x86_64,0.0.0=v20100503
+org.eclipse.equinox.launcher.gtk.linux.x86,0.0.0=v20100503
+org.eclipse.update.core.linux,0.0.0=v20100512
+org.eclipse.core.databinding.property,0.0.0=I20100601-0800
+org.eclipse.ui.examples.propertysheet,0.0.0=I20100509-0800
+org.eclipse.core.jobs,0.0.0=v20100515
+org.eclipse.swt.gtk.linux.ppc,0.0.0=v3650b
+org.eclipse.swt.carbon.macosx,0.0.0=v3650b
+org.eclipse.pde.runtime,0.0.0=v20100601
+org.eclipse.pde.build,0.0.0=v20100603
+org.eclipse.equinox.p2.reconciler.dropins,0.0.0=v20100525
+org.eclipse.equinox.device,0.0.0=v20100503
+org.eclipse.core.commands,0.0.0=I20100512-1500
+org.eclipse.equinox.p2.repository.tools,0.0.0=v20100520
 org.eclipse.equinox.launcher.gtk.linux.s390x,0.0.0=v20100419
-org.eclipse.update.core,0.0.0=v20100416
-org.eclipse.team.core,0.0.0=I20100420-0520
-org.eclipse.debug.examples.ui,0.0.0=v20100213
-org.eclipse.pde.api.tools.ee.javase16,0.0.0=v20091028-1400
-org.eclipse.compare.win32,0.0.0=I20090430-0408
-org.eclipse.equinox.p2.installer,0.0.0=v20100405-2203
-org.eclipse.debug.examples.core,0.0.0=v20100213
-org.eclipse.rcp,0.0.0=v20090528
-org.eclipse.pde.ds.core,0.0.0=v20100310
-org.eclipse.equinox.registry,0.0.0=v20100301
-org.eclipse.ui.examples.readmetool,0.0.0=I20090526-2000
-org.eclipse.jdt.core.manipulation,0.0.0=v20100420-0800
-org.eclipse.equinox.http.servlet,0.0.0=v20100201
-org.eclipse.equinox.launcher.win32.win32.x86,0.0.0=v20100322-1720
-org.eclipse.jdt.junit.runtime,0.0.0=v20100420-0800
-org.eclipse.swt.examples.controls,0.0.0=v3642
-org.eclipse.core.filesystem.linux.ppc,0.0.0=v20080604-1400
-org.eclipse.osgi.jmx,0.0.0=v20080610-1530
-org.eclipse.ui.workbench.compatibility,0.0.0=I20090429-1800
-org.eclipse.core.filesystem.aix.ppc,0.0.0=v20100216-0700
-org.eclipse.swt.cocoa.macosx,0.0.0=v3642
-org.eclipse.ui,0.0.0=I20100419-1730
-org.eclipse.equinox.jmx.client.xmlrpc,0.0.0=v20070515
-org.eclipse.swt.win32.wce_ppc.arm,0.0.0=v3642
-org.eclipse.compare.examples.xml,0.0.0=I20090714-0800
-org.eclipse.equinox.jsp.jasper.registry,0.0.0=v20090520-1800
-org.eclipse.core.resources,0.0.0=v20100419
-org.eclipse.team.cvs.ssh2,0.0.0=I20100330-0755
-org.eclipse.equinox.wireadmin,0.0.0=v20100108
-org.eclipse.ant.ui,0.0.0=v20100325
-org.eclipse.swt.gtk.solaris.sparc,0.0.0=v3642
-org.eclipse.core.net.win32.x86_64,0.0.0=I20090306-1030
-org.eclipse.swt.examples.launcher,0.0.0=v3642
-org.eclipse.equinox.preferences.jmx,0.0.0=v20070510
-org.eclipse.equinox.p2.garbagecollector,0.0.0=v20100413
-org.eclipse.equinox.cm,0.0.0=v20100118
-org.eclipse.equinox.common,0.0.0=v20100315
-org.eclipse.equinox.p2.director,0.0.0=v20100419
-org.eclipse.equinox.p2.publisher,0.0.0=v20100419
-org.eclipse.jdt.doc.isv,0.0.0=v20100420-0800
-org.eclipse.ltk.core.refactoring,0.0.0=v20100420-0800
-org.eclipse.jdt.core,0.0.0=v_A45
-org.eclipse.equinox.p2.updatesite,0.0.0=v20100405-2203
-org.eclipse.update.configurator,0.0.0=v20100307
-org.eclipse.core.filesystem.win32.x86,0.0.0=v20100322
-org.eclipse.equinox.p2.core,0.0.0=v20100413
-org.eclipse.swt.examples,0.0.0=v3642
+org.eclipse.update.core,0.0.0=v20100512
+org.eclipse.team.core,0.0.0=I20100527-0800
+org.eclipse.debug.examples.ui,0.0.0=v20100526
+org.eclipse.pde.api.tools.ee.javase16,0.0.0=v20100506-0900
+org.eclipse.compare.win32,0.0.0=I20100505-1245
+org.eclipse.equinox.p2.installer,0.0.0=v20100503a
+org.eclipse.debug.examples.core,0.0.0=v20100505
+org.eclipse.rcp,0.0.0=v20100527-0800
+org.eclipse.pde.ds.core,0.0.0=v20100601
+org.eclipse.equinox.registry,0.0.0=v20100503
+org.eclipse.ui.examples.readmetool,0.0.0=I20100509-0800
+org.eclipse.jdt.core.manipulation,0.0.0=v20100520-0800
+org.eclipse.equinox.http.servlet,0.0.0=v20100503
+org.eclipse.equinox.launcher.win32.win32.x86,0.0.0=v20100503
+org.eclipse.jdt.junit.runtime,0.0.0=v20100526-0800
+org.eclipse.swt.examples.controls,0.0.0=v3650b
+org.eclipse.core.filesystem.linux.ppc,0.0.0=v20100505-1235
+org.eclipse.osgi.jmx,0.0.0=v20100503
+org.eclipse.ui.workbench.compatibility,0.0.0=I20100511-0800
+org.eclipse.core.filesystem.aix.ppc,0.0.0=v20100505-1235
+org.eclipse.swt.cocoa.macosx,0.0.0=v3650b
+org.eclipse.ui,0.0.0=I20100603-1100
+org.eclipse.equinox.jmx.client.xmlrpc,0.0.0=v20100503
+org.eclipse.swt.win32.wce_ppc.arm,0.0.0=v3650b
+org.eclipse.compare.examples.xml,0.0.0=I20100505-1245
+org.eclipse.equinox.jsp.jasper.registry,0.0.0=v20100503
+org.eclipse.core.resources,0.0.0=v20100526-0737
+org.eclipse.team.cvs.ssh2,0.0.0=I20100526-0800
+org.eclipse.equinox.wireadmin,0.0.0=v20100503
+org.eclipse.ant.ui,0.0.0=v20100427
+org.eclipse.swt.gtk.solaris.sparc,0.0.0=v3650b
+org.eclipse.core.net.win32.x86_64,0.0.0=I20100505-1245
+org.eclipse.swt.examples.launcher,0.0.0=v3650b
+org.eclipse.equinox.preferences.jmx,0.0.0=v20100503
+org.eclipse.equinox.p2.garbagecollector,0.0.0=v20100503
+org.eclipse.equinox.cm,0.0.0=v20100520
+org.eclipse.equinox.common,0.0.0=v20100503
+org.eclipse.equinox.p2.director,0.0.0=v20100525
+org.eclipse.equinox.p2.publisher,0.0.0=v20100513
+org.eclipse.jdt.doc.isv,0.0.0=v20100602-1600
+org.eclipse.ltk.core.refactoring,0.0.0=v20100526-0800
+org.eclipse.jdt.core,0.0.0=v_A58
+org.eclipse.equinox.p2.updatesite,0.0.0=v20100503
+org.eclipse.update.configurator,0.0.0=v20100512
+org.eclipse.core.filesystem.win32.x86,0.0.0=v20100505-1235
+org.eclipse.equinox.p2.core,0.0.0=v20100510
+org.eclipse.swt.examples,0.0.0=v3650b
 org.eclipse.cvs,0.0.0=v20100414
-org.eclipse.swt.gtk.linux.x86,0.0.0=v3642
-org.eclipse.equinox.log,0.0.0=v20100329
-org.eclipse.equinox.jmx.client,0.0.0=v20070515
-org.eclipse.ui.win32,0.0.0=v20090429-1800
-org.eclipse.ui.views.properties.tabbed,0.0.0=I20090429-1800
-org.eclipse.equinox.security.ui,0.0.0=v20090928
-org.eclipse.pde.api.tools.ee.j2se13,0.0.0=v20091028-1400
-org.eclipse.swt.motif.solaris.sparc,0.0.0=v3642
-org.eclipse.equinox.util,0.0.0=v20090520-1800
-org.eclipse.equinox.p2.extensionlocation,0.0.0=v20100405-2203
-org.eclipse.pde.api.tools.ee.osgiminimum12,0.0.0=v20091028-1400
-org.eclipse.equinox.concurrent,0.0.0=v20100215
-org.eclipse.platform.doc.user,0.0.0=v20100420-0800
-org.eclipse.equinox.security.macosx,0.0.0=v20100118
-org.eclipse.equinox.supplement,0.0.0=v20100405
+org.eclipse.swt.gtk.linux.x86,0.0.0=v3650b
+org.eclipse.equinox.log,0.0.0=v20100503
+org.eclipse.equinox.jmx.client,0.0.0=v20100503
+org.eclipse.ui.win32,0.0.0=I20100509-0800
+org.eclipse.ui.views.properties.tabbed,0.0.0=I20100509-0800
+org.eclipse.equinox.security.ui,0.0.0=v20100503
+org.eclipse.pde.api.tools.ee.j2se13,0.0.0=v20100506-0900
+org.eclipse.swt.motif.solaris.sparc,0.0.0=v3650b
+org.eclipse.equinox.util,0.0.0=v20100503
+org.eclipse.equinox.p2.extensionlocation,0.0.0=v20100518
+org.eclipse.pde.api.tools.ee.osgiminimum12,0.0.0=v20100506-0900
+org.eclipse.equinox.concurrent,0.0.0=v20100503
+org.eclipse.platform.doc.user,0.0.0=v20100603-1400
+org.eclipse.equinox.security.macosx,0.0.0=v20100503
+org.eclipse.equinox.supplement,0.0.0=v20100503
 org.eclipse.sdk,0.0.0=v20100216
-org.eclipse.equinox.launcher.gtk.linux.ppc64,0.0.0=v20100322-1720
-org.eclipse.jsch.ui,0.0.0=I20100310-0800
-org.eclipse.core.filesystem.win32.x86_64,0.0.0=v20090316-0910
-org.eclipse.equinox.security.win32.x86,0.0.0=v20090520-1800
-org.eclipse.core.variables,0.0.0=v20090911
-org.eclipse.pde.ui,0.0.0=v20100419
-org.eclipse.equinox.p2.artifact.repository,0.0.0=v20100419
-org.eclipse.core.runtime.compatibility.auth,0.0.0=v20090413
-org.eclipse.osgi,0.0.0=v20100419
-org.eclipse.ui.intro.universal,0.0.0=v20100405
-org.eclipse.swt.jmx,0.0.0=v20090331
-org.eclipse.equinox.launcher.cocoa.macosx,0.0.0=v20100322-1720
-org.eclipse.ui.examples.contributions,0.0.0=I20090526-2000
-org.eclipse.team.cvs.ui,0.0.0=I20100330-0755
-org.eclipse.ui.cheatsheets,0.0.0=v20100405
-org.eclipse.jdt.doc.user,0.0.0=v20100420-0800
-org.eclipse.equinox.useradmin,0.0.0=v20100118
-org.eclipse.jface.text,0.0.0=v20100420-0800
-org.eclipse.core.resources.jmx,0.0.0=v20070510
-org.eclipse.update.core.win32,0.0.0=v20080107
-org.eclipse.ui.externaltools,0.0.0=v20100201
-org.eclipse.jdt.junit4.runtime,0.0.0=v20100420-0800
-org.eclipse.pde.api.tools.ee.j2se12,0.0.0=v20091028-1400
-org.eclipse.pde.api.tools.ee.osgiminimum11,0.0.0=v20091028-1400
-org.eclipse.ui.navigator,0.0.0=I20100329-1712
-org.eclipse.equinox.http.jetty,1.1.100=v20090520-1800
-org.eclipse.team.cvs.core,0.0.0=I20100310-0800
-org.eclipse.pde.api.tools.ee.cdcfoundation10,0.0.0=v20091028-1400
+org.eclipse.equinox.launcher.gtk.linux.ppc64,0.0.0=v20100503
+org.eclipse.jsch.ui,0.0.0=I20100505-1245
+org.eclipse.core.filesystem.win32.x86_64,0.0.0=v20100505-1235
+org.eclipse.equinox.security.win32.x86,0.0.0=v20100503
+org.eclipse.core.variables,0.0.0=v20100505
+org.eclipse.pde.ui,0.0.0=v20100601
+org.eclipse.equinox.p2.artifact.repository,0.0.0=v20100513
+org.eclipse.core.runtime.compatibility.auth,0.0.0=v20100517
+org.eclipse.osgi,0.0.0=v20100517
+org.eclipse.ui.intro.universal,0.0.0=v20100517
+org.eclipse.swt.jmx,0.0.0=v20100503
+org.eclipse.equinox.launcher.cocoa.macosx,0.0.0=v20100503
+org.eclipse.ui.examples.contributions,0.0.0=I20100509-0800
+org.eclipse.team.cvs.ui,0.0.0=I20100526-0800
+org.eclipse.ui.cheatsheets,0.0.0=v20100427
+org.eclipse.jdt.doc.user,0.0.0=v20100603-1350
+org.eclipse.equinox.useradmin,0.0.0=v20100503
+org.eclipse.jface.text,0.0.0=v20100526-0800
+org.eclipse.core.resources.jmx,0.0.0=v20100503
+org.eclipse.update.core.win32,0.0.0=v20100512
+org.eclipse.ui.externaltools,0.0.0=v20100427
+org.eclipse.jdt.junit4.runtime,0.0.0=v20100526-0800
+org.eclipse.pde.api.tools.ee.j2se12,0.0.0=v20100506-0900
+org.eclipse.pde.api.tools.ee.osgiminimum11,0.0.0=v20100506-0900
+org.eclipse.ui.navigator,0.0.0=I20100601-0800
+org.eclipse.equinox.http.jetty,1.1.100=v20100519
+org.eclipse.team.cvs.core,0.0.0=I20100526-0800
+org.eclipse.pde.api.tools.ee.cdcfoundation10,0.0.0=v20100506-0900
 org.eclipse.equinox.launcher.wpf.win32.x86,0.0.0=v20100322-1720
-org.eclipse.equinox.preferences,0.0.0=v20100307
-org.eclipse.equinox.jmx.common,0.0.0=v20100215
-org.eclipse.equinox.p2.ui.sdk.scheduler,0.0.0=v20100419
-org.eclipse.equinox.jmx.vm,0.0.0=v20070515
-org.eclipse.ui.editors,0.0.0=v20100420-0800
-org.eclipse.equinox.servletbridge.extensionbundle,0.0.0=v20100322-1720
-org.eclipse.core.filebuffers,0.0.0=v20100420-0800
-org.eclipse.equinox.ip,0.0.0=v20100108
-org.eclipse.jdt,0.0.0=v20100420-0800
+org.eclipse.equinox.preferences,0.0.0=v20100503
+org.eclipse.equinox.jmx.common,0.0.0=v20100503
+org.eclipse.equinox.p2.ui.sdk.scheduler,0.0.0=v20100507-1815
+org.eclipse.equinox.jmx.vm,0.0.0=v20100503
+org.eclipse.ui.editors,0.0.0=v20100520-0800
+org.eclipse.equinox.servletbridge.extensionbundle,0.0.0=v20100503
+org.eclipse.core.filebuffers,0.0.0=v20100520-0800
+org.eclipse.equinox.ip,0.0.0=v20100503
+org.eclipse.jdt,0.0.0=v20100526-0800
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.RSA
deleted file mode 100644
index 571284c..0000000
Binary files a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.RSA and /dev/null differ
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.SF
deleted file mode 100644
index 87dcb4e..0000000
--- a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/ECLIPSEF.SF
+++ /dev/null
@@ -1,179 +0,0 @@
-Signature-Version: 1.0
-SHA1-Digest-Manifest: YCmKmT98ujn/vhdXMkq1RYF5k8E=
-Created-By: 1.6.0 (IBM Corporation)
-SHA1-Digest-Manifest-Main-Attributes: MrkSD3jxUThhRkvxibmezdKD9k8=
-
-Name: lib/ant-apache-bcel.jar
-SHA1-Digest: YVTO35AbsW3XNcZAXe4/c7kexrc=
-
-Name: etc/mmetrics-frames.xsl
-SHA1-Digest: APiAPtADgoYGSwEquxQdQx5NN0A=
-
-Name: bin/ant.bat
-SHA1-Digest: VRSA9YOPmicxeIZD8LdYkqdUmEA=
-
-Name: etc/tagdiff.xsl
-SHA1-Digest: oQK6F+rUwsdxfJl58vbKAmtTs3Y=
-
-Name: lib/ant.jar
-SHA1-Digest: YJJdRlgCrtLhhD5AVoqBgnsNMzk=
-
-Name: lib/ant-apache-oro.jar
-SHA1-Digest: gRbdW0NirlZajdCZ1IqL+Ndb51g=
-
-Name: lib/ant-jsch.jar
-SHA1-Digest: tV4TE8uzcygf6nx1KeoWpiy5n1E=
-
-Name: about_files/LICENSE.dom.html
-SHA1-Digest: xK0He1PkoQXdHC48ROEqZRNXTL4=
-
-Name: etc/coverage-frames.xsl
-SHA1-Digest: Lk7Vo06ABrH7brbJkP1hKRxLkMg=
-
-Name: lib/ant-jdepend.jar
-SHA1-Digest: nJl6AUGr7XYv/bnsv9ynHCC6YhM=
-
-Name: about_files/asl-v20.txt
-SHA1-Digest: pJO0L/tUizs1vz2W9gV2VmGJsDs=
-
-Name: lib/ant-nodeps.jar
-SHA1-Digest: xshD9zxUINAALbXspZuAUg01X2U=
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
-
-Name: lib/ant-apache-regexp.jar
-SHA1-Digest: QigTkBtIDXnsadYoMaWTez/aOFA=
-
-Name: bin/runant.pl
-SHA1-Digest: 4EKNYCEcyO/SMqxm79fnts8/Q1c=
-
-Name: lib/ant-weblogic.jar
-SHA1-Digest: /2TS5XIDoynUrckF7vvKpxzWoO0=
-
-Name: bin/envset.cmd
-SHA1-Digest: anGgepI9TTUvD6W73h+kGQrc2d0=
-
-Name: etc/checkstyle/checkstyle-text.xsl
-SHA1-Digest: Jzub6NSrWxS9hYda+Wy/SP49SeI=
-
-Name: lib/ant-junit.jar
-SHA1-Digest: /fyQBkXlnsUvj1IcWatRx42mX9I=
-
-Name: bin/ant.cmd
-SHA1-Digest: fKm5e7CiWr2UH61jbx6Yol3cQZo=
-
-Name: etc/log.xsl
-SHA1-Digest: 0HD61tw+M8q33hpPVPkjJJe4SDo=
-
-Name: bin/antRun
-SHA1-Digest: 3xz5zLVIT2QJnPskzZCOuX0LVnw=
-
-Name: bin/runant.py
-SHA1-Digest: uMviIJaN6y/k6xUbjXhmUd6TN8E=
-
-Name: lib/ant-commons-logging.jar
-SHA1-Digest: 0lKrNs4nNiVBoGpnxNQokzTfDAU=
-
-Name: lib/ant-swing.jar
-SHA1-Digest: 7drfKdXqBfv0pupdYARqCYuw8CM=
-
-Name: etc/jdepend-frames.xsl
-SHA1-Digest: OEsPHq3PIr185ocUtm81ULkmobs=
-
-Name: etc/checkstyle/checkstyle-xdoc.xsl
-SHA1-Digest: mfVMgdE+9JoC0hKc0Vc5f7pbe/c=
-
-Name: etc/changelog.xsl
-SHA1-Digest: 9ZFS8fHSvz42GLs2NDnqzLFo5G8=
-
-Name: lib/ant-launcher.jar
-SHA1-Digest: 85rD5oeRu7qEY00nFpC08oqalxI=
-
-Name: etc/jdepend.xsl
-SHA1-Digest: M6boZHWa9+JeDhCjXtq5Z9Y61dY=
-
-Name: bin/runrc.cmd
-SHA1-Digest: aq6+dBb+jdiXyrvDNmLIOzj21N8=
-
-Name: lib/ant-jmf.jar
-SHA1-Digest: Kw1Z0zucBJD+reeJ9GN6ew8LDgc=
-
-Name: lib/ant-starteam.jar
-SHA1-Digest: /4XoSfU7qzdIxwfjp1kw4OkcB74=
-
-Name: lib/ant-netrexx.jar
-SHA1-Digest: EQxPUXxhA+vWNOixXAaDe+FZ+J4=
-
-Name: plugin.properties
-SHA1-Digest: tNIh5OEXJJxtqSciwBvjmG5gUGg=
-
-Name: lib/ant-jai.jar
-SHA1-Digest: /T16UILBf/2+tiYuuGyS7fuAspc=
-
-Name: lib/ant-trax.jar
-SHA1-Digest: +EM7aybAfjqv0ycSKaoNylpcmjk=
-
-Name: bin/antRun.bat
-SHA1-Digest: KX8SW+sZ8gtQYr3boWRpl2DkWrE=
-
-Name: lib/ant-apache-bsf.jar
-SHA1-Digest: FXM0tW20SvXggOYcImZCPeJz6ZU=
-
-Name: about_files/LICENSE.sax.txt
-SHA1-Digest: CnKqzCUI0E0NUSlVIAfUd8gctxU=
-
-Name: lib/ant-stylebook.jar
-SHA1-Digest: 4IaUh1hj545odqLFwAeA7G1shv8=
-
-Name: lib/ant-apache-log4j.jar
-SHA1-Digest: czbZTQwUKOZHyjY0ByRonppCSF8=
-
-Name: bin/ant
-SHA1-Digest: bnS5vQF5wYnqXs8zr+3LORKIA0U=
-
-Name: etc/checkstyle/checkstyle-frames.xsl
-SHA1-Digest: cQKamOMX7Att9wW45aAohAWp3K0=
-
-Name: bin/complete-ant-cmd.pl
-SHA1-Digest: wXOPsOb8rPKKwt6rAb3XoXCwFgQ=
-
-Name: about_files/NOTICE
-SHA1-Digest: g5R8FDyNNir6o/tFVnDNSlcP+z0=
-
-Name: lib/ant-apache-resolver.jar
-SHA1-Digest: KMH8ZIAVQ5OOBSbncBxIEaTK8w0=
-
-Name: etc/junit-frames.xsl
-SHA1-Digest: 2hTCiaPp95X9ZjX8ZDwjvqwfT6U=
-
-Name: etc/junit-noframes.xsl
-SHA1-Digest: M4u7091ckN+zoCaRvjal1SDwJQE=
-
-Name: lib/ant-antlr.jar
-SHA1-Digest: waN/7iN6XzZr4TwlvWwy+Qz4N70=
-
-Name: about.html
-SHA1-Digest: tujWEJAt+/IKSC26IMuUh48ercA=
-
-Name: etc/maudit-frames.xsl
-SHA1-Digest: U8xxI3AoPSoVepSv0ZbfrARsTZY=
-
-Name: etc/junit-frames-xalan1.xsl
-SHA1-Digest: Bvmst1NiMllcc+sricG/3Eyszc0=
-
-Name: lib/ant-commons-net.jar
-SHA1-Digest: wwnZhPTi9LStZe9XuARU8nJTWJo=
-
-Name: lib/ant-javamail.jar
-SHA1-Digest: ixXO7yj4d0X9V/TpTHqiXB0+A7E=
-
-Name: bin/lcp.bat
-SHA1-Digest: EA5m2+HfGFLhb6ForQdjnlvl3cU=
-
-Name: bin/antenv.cmd
-SHA1-Digest: as5/uc6NFrw5Zqzjc5vZEWg6MsM=
-
-Name: bin/antRun.pl
-SHA1-Digest: Cw3hkFZ/7NbP7kPUGL/WM1n8EKk=
-
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/MANIFEST.MF b/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/MANIFEST.MF
deleted file mode 100644
index c1146a0..0000000
--- a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,234 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ClassPath: lib/ant.jar,lib/ant-antlr.jar,lib/ant-apache-bcel.ja
- r,lib/ant-apache-bsf.jar,lib/ant-apache-log4j.jar,lib/ant-apache-oro.
- jar,lib/ant-apache-regexp.jar,lib/ant-apache-resolver.jar,lib/ant-com
- mons-logging.jar,lib/ant-commons-net.jar,lib/ant-jai.jar,lib/ant-java
- mail.jar,lib/ant-jdepend.jar,lib/ant-jmf.jar,lib/ant-jsch.jar,lib/ant
- -junit.jar,lib/ant-launcher.jar,lib/ant-netrexx.jar,lib/ant-nodeps.ja
- r,lib/ant-starteam.jar,lib/ant-stylebook.jar,lib/ant-swing.jar,lib/an
- t-trax.jar,lib/ant-weblogic.jar
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.apache.ant
-Require-Bundle: org.eclipse.osgi
-Export-Package: images,org.apache.tools.ant,org.apache.tools.ant.dispa
- tch,org.apache.tools.ant.filters,org.apache.tools.ant.filters.util,or
- g.apache.tools.ant.helper,org.apache.tools.ant.input,org.apache.tools
- .ant.launch,org.apache.tools.ant.listener,org.apache.tools.ant.loader
- ,org.apache.tools.ant.taskdefs,org.apache.tools.ant.taskdefs.compiler
- s,org.apache.tools.ant.taskdefs.condition,org.apache.tools.ant.taskde
- fs.cvslib,org.apache.tools.ant.taskdefs.email,org.apache.tools.ant.ta
- skdefs.optional,org.apache.tools.ant.taskdefs.optional.ccm,org.apache
- .tools.ant.taskdefs.optional.clearcase,org.apache.tools.ant.taskdefs.
- optional.depend,org.apache.tools.ant.taskdefs.optional.depend.constan
- tpool,org.apache.tools.ant.taskdefs.optional.dotnet,org.apache.tools.
- ant.taskdefs.optional.ejb,org.apache.tools.ant.taskdefs.optional.exte
- nsion,org.apache.tools.ant.taskdefs.optional.extension.resolvers,org.
- apache.tools.ant.taskdefs.optional.i18n,org.apache.tools.ant.taskdefs
- .optional.image,org.apache.tools.ant.taskdefs.optional.j2ee,org.apach
- e.tools.ant.taskdefs.optional.javacc,org.apache.tools.ant.taskdefs.op
- tional.javah,org.apache.tools.ant.taskdefs.optional.jdepend,org.apach
- e.tools.ant.taskdefs.optional.jlink,org.apache.tools.ant.taskdefs.opt
- ional.jsp,org.apache.tools.ant.taskdefs.optional.jsp.compilers,org.ap
- ache.tools.ant.taskdefs.optional.junit,org.apache.tools.ant.taskdefs.
- optional.junit.xsl,org.apache.tools.ant.taskdefs.optional.native2asci
- i,org.apache.tools.ant.taskdefs.optional.net,org.apache.tools.ant.tas
- kdefs.optional.perforce,org.apache.tools.ant.taskdefs.optional.pvcs,o
- rg.apache.tools.ant.taskdefs.optional.scm,org.apache.tools.ant.taskde
- fs.optional.script,org.apache.tools.ant.taskdefs.optional.sos,org.apa
- che.tools.ant.taskdefs.optional.sound,org.apache.tools.ant.taskdefs.o
- ptional.splash,org.apache.tools.ant.taskdefs.optional.ssh,org.apache.
- tools.ant.taskdefs.optional.starteam,org.apache.tools.ant.taskdefs.op
- tional.unix,org.apache.tools.ant.taskdefs.optional.vss,org.apache.too
- ls.ant.taskdefs.optional.windows,org.apache.tools.ant.taskdefs.rmic,o
- rg.apache.tools.ant.types,org.apache.tools.ant.types.conditions,org.a
- pache.tools.ant.types.mappers,org.apache.tools.ant.types.optional,org
- .apache.tools.ant.types.optional.depend,org.apache.tools.ant.types.op
- tional.image,org.apache.tools.ant.types.resolver,org.apache.tools.ant
- .types.resources,org.apache.tools.ant.types.resources.comparators,org
- .apache.tools.ant.types.resources.selectors,org.apache.tools.ant.type
- s.selectors,org.apache.tools.ant.types.selectors.modifiedselector,org
- .apache.tools.ant.types.spi,org.apache.tools.ant.util,org.apache.tool
- s.ant.util.depend,org.apache.tools.ant.util.depend.bcel,org.apache.to
- ols.ant.util.facade,org.apache.tools.ant.util.java15,org.apache.tools
- .ant.util.optional,org.apache.tools.ant.util.regexp,org.apache.tools.
- bzip2,org.apache.tools.mail,org.apache.tools.tar,org.apache.tools.zip
-Bundle-Version: 1.7.1.v20090120-1145
-Bundle-ManifestVersion: 2
-
-Name: lib/ant-apache-bcel.jar
-SHA1-Digest: /SCEBqV/wy5ING/k03TnsRvX3tQ=
-
-Name: etc/mmetrics-frames.xsl
-SHA1-Digest: cQnziGYZC2FrO0zwFE92P1bP2v8=
-
-Name: bin/ant.bat
-SHA1-Digest: Rc2etgn1RATkrEL3NCa3Fs75Ov8=
-
-Name: etc/tagdiff.xsl
-SHA1-Digest: ddaegkBkww5CoIlRpSR8RDUI1bQ=
-
-Name: lib/ant.jar
-SHA1-Digest: V390Y0xvejfQyV5dlAxdL/aMZvc=
-
-Name: lib/ant-apache-oro.jar
-SHA1-Digest: X9mvHsmK/RpYUG7BLIX2DtKb5eQ=
-
-Name: lib/ant-jsch.jar
-SHA1-Digest: y+sQsyUWB4Kh9QNPNa5bQuMocE8=
-
-Name: about_files/LICENSE.dom.html
-SHA1-Digest: 9F8cZaCgriCte0T6Mt5hAFumadk=
-
-Name: etc/coverage-frames.xsl
-SHA1-Digest: 5SE/NhPWEbqzGDGL58dwEbkhwRs=
-
-Name: lib/ant-jdepend.jar
-SHA1-Digest: qh1NGTpRarYgh/vRFoXDDztHAzg=
-
-Name: about_files/asl-v20.txt
-SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=
-
-Name: lib/ant-nodeps.jar
-SHA1-Digest: wZpHn7j39uyCkLDTfVOYSL8GLf0=
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
-
-Name: lib/ant-apache-regexp.jar
-SHA1-Digest: U26oxaFxVy0iAoLx2/tSbiz8mrk=
-
-Name: bin/runant.pl
-SHA1-Digest: tynYaGh8+BtWDsZ6PljZdoi+egU=
-
-Name: lib/ant-weblogic.jar
-SHA1-Digest: c+qNtIeCxsefch+aLgfOLlg5iMM=
-
-Name: etc/checkstyle/checkstyle-text.xsl
-SHA1-Digest: CqSzAXEeeV20DtFpeujwjL9FEW8=
-
-Name: bin/envset.cmd
-SHA1-Digest: EJ+ljL5sbUQ8mWVn8V49XPBuAz0=
-
-Name: bin/ant.cmd
-SHA1-Digest: 4jPJI7nJO+v3oPpbi5GbrT7x9qk=
-
-Name: lib/ant-junit.jar
-SHA1-Digest: poSyghiy4/KtUePszRz7FtPpCM0=
-
-Name: bin/antRun
-SHA1-Digest: S63QT5F5EI1BCpIj59nosT3lVTw=
-
-Name: etc/log.xsl
-SHA1-Digest: juv2H0VplMm4ri1rzgdOW0yCroc=
-
-Name: bin/runant.py
-SHA1-Digest: Kg3iFzRnZW6PVIFmbj7Eyuo72cM=
-
-Name: lib/ant-commons-logging.jar
-SHA1-Digest: bokRbQmRIx1LsxZbtzjHmohfxzM=
-
-Name: lib/ant-swing.jar
-SHA1-Digest: q1lKal5z5bW+OLeOb2//ts7fi9A=
-
-Name: etc/jdepend-frames.xsl
-SHA1-Digest: U2Bb6aMxgbEYqXkCm2sujeLP7Zo=
-
-Name: etc/checkstyle/checkstyle-xdoc.xsl
-SHA1-Digest: yL3TqCA4pc0daZXtXwAiCN6xHxI=
-
-Name: etc/changelog.xsl
-SHA1-Digest: 2EZZ+jSTt1TTlBYPN4vGUAX7cTQ=
-
-Name: lib/ant-launcher.jar
-SHA1-Digest: XIdea+D0UeUGO+5rJ1DCuzJV2Vc=
-
-Name: etc/jdepend.xsl
-SHA1-Digest: 0rf14aLzhLsun24uUsXVVvkHM6I=
-
-Name: bin/runrc.cmd
-SHA1-Digest: eNo+cuYQicndcc56FVkRScD5w30=
-
-Name: lib/ant-jmf.jar
-SHA1-Digest: KB3QIS1c5SrFcLh5rL5UkHkFKRU=
-
-Name: lib/ant-starteam.jar
-SHA1-Digest: rY0nht7v94TGxJ9ZU/9WT1cI1uQ=
-
-Name: lib/ant-netrexx.jar
-SHA1-Digest: foK7vwzn0JB8TMKL7Ot5V1pvwps=
-
-Name: plugin.properties
-SHA1-Digest: oZ8G+d0YZCeLv5mafw0x2OwbwOY=
-
-Name: lib/ant-jai.jar
-SHA1-Digest: YDONQea6ZEgmWYatBDjaUFgLk1w=
-
-Name: lib/ant-trax.jar
-SHA1-Digest: 5Zn5FoJuDiIezyNJesgOSfEmY1I=
-
-Name: bin/antRun.bat
-SHA1-Digest: zB9JbFFhlXTVgwaJlw61wNELj6k=
-
-Name: lib/ant-apache-bsf.jar
-SHA1-Digest: YwlyR4fZBnLIUlDTB6AIZvGDNNs=
-
-Name: about_files/LICENSE.sax.txt
-SHA1-Digest: uLnQn2qwT77aJ6MThuLeWz1I5ek=
-
-Name: lib/ant-stylebook.jar
-SHA1-Digest: 1E+pXx1qJToSoKQ5J1chdH181qg=
-
-Name: lib/ant-apache-log4j.jar
-SHA1-Digest: pz1lNS5q4FYTbGIaOwiYojvzy3Q=
-
-Name: bin/ant
-SHA1-Digest: jK7w10Hy+BIiSimUAhjgizdaBuY=
-
-Name: etc/checkstyle/checkstyle-frames.xsl
-SHA1-Digest: 5KYg/jQq+iuWKS5gF1qX37F+UX0=
-
-Name: bin/complete-ant-cmd.pl
-SHA1-Digest: F1mrSua1xk98goAA1YvtOoJNiuw=
-
-Name: about_files/NOTICE
-SHA1-Digest: v3XrGNGv2sQGqBe+ObJZnq9915g=
-
-Name: lib/ant-apache-resolver.jar
-SHA1-Digest: OJ1436AESvJhz37ZskDuva91jj4=
-
-Name: etc/junit-frames.xsl
-SHA1-Digest: XIcHcYoM8I5hzTkhdiy5iskupIM=
-
-Name: etc/junit-noframes.xsl
-SHA1-Digest: zmgmTYDnXS0QZvMd3wUarjPR7aE=
-
-Name: lib/ant-antlr.jar
-SHA1-Digest: 4l2C/Hp15oniN1GduY5kTIt97PI=
-
-Name: about.html
-SHA1-Digest: cPPs9diR9VPNDzWrCs1FLNOdJEo=
-
-Name: etc/maudit-frames.xsl
-SHA1-Digest: 1oML7OYqWjV+hPKu/ItdzrAFGcA=
-
-Name: etc/junit-frames-xalan1.xsl
-SHA1-Digest: ME/2vW22HRXG87EwVJ9LFfkfyEI=
-
-Name: lib/ant-commons-net.jar
-SHA1-Digest: R++QGX00MVkQkjd9cCjDjVajeOc=
-
-Name: lib/ant-javamail.jar
-SHA1-Digest: qeCAGpZKgYtmPh2rNbICuJYvzeU=
-
-Name: bin/lcp.bat
-SHA1-Digest: eX7ICcBsanATsaEDkn5+oTA4QaQ=
-
-Name: bin/antenv.cmd
-SHA1-Digest: s2zvcJEs2E2x6ckfXZoGxx1OF1Y=
-
-Name: bin/antRun.pl
-SHA1-Digest: mynp1agPByxojQUKZqlVZkXZSHY=
-
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/plugin.properties b/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/plugin.properties
deleted file mode 100644
index 488e922..0000000
--- a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.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 = Apache Ant
-providerName = Eclipse.org
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.RSA
new file mode 100644
index 0000000..47fe778
Binary files /dev/null and b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.RSA differ
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.SF
new file mode 100644
index 0000000..3422047
--- /dev/null
+++ b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/ECLIPSEF.SF
@@ -0,0 +1,179 @@
+Signature-Version: 1.0
+SHA1-Digest-Manifest: DnymqoTvSz4gbC12HMrSKUQk34w=
+Created-By: 1.6.0 (IBM Corporation)
+SHA1-Digest-Manifest-Main-Attributes: T473SZ5WWmQktg3oaHggnJO/FTM=
+
+Name: lib/ant-apache-bcel.jar
+SHA1-Digest: LOl+pgdc9a4HwZywWL7CEqCEvZs=
+
+Name: etc/mmetrics-frames.xsl
+SHA1-Digest: APiAPtADgoYGSwEquxQdQx5NN0A=
+
+Name: bin/ant.bat
+SHA1-Digest: VRSA9YOPmicxeIZD8LdYkqdUmEA=
+
+Name: etc/tagdiff.xsl
+SHA1-Digest: oQK6F+rUwsdxfJl58vbKAmtTs3Y=
+
+Name: lib/ant.jar
+SHA1-Digest: lQ3OziQI4mYf42vhZl5qK05euHQ=
+
+Name: lib/ant-apache-oro.jar
+SHA1-Digest: 08O0J8DpA2CUYHKRuRY8E6d2FS0=
+
+Name: lib/ant-jsch.jar
+SHA1-Digest: 9REV6G1dh3UOS8ueh6rJVnXaBBE=
+
+Name: about_files/LICENSE.dom.html
+SHA1-Digest: xK0He1PkoQXdHC48ROEqZRNXTL4=
+
+Name: etc/coverage-frames.xsl
+SHA1-Digest: Lk7Vo06ABrH7brbJkP1hKRxLkMg=
+
+Name: lib/ant-jdepend.jar
+SHA1-Digest: 0jLeaOQiRnL1dq7dYpmBw3NIEPk=
+
+Name: about_files/asl-v20.txt
+SHA1-Digest: pJO0L/tUizs1vz2W9gV2VmGJsDs=
+
+Name: lib/ant-nodeps.jar
+SHA1-Digest: b3zl9yIdDVX5up8caMNncYIhOZk=
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
+
+Name: lib/ant-apache-regexp.jar
+SHA1-Digest: bCJf89W6L5gZfecnoaC3GY5i9j0=
+
+Name: bin/runant.pl
+SHA1-Digest: 4EKNYCEcyO/SMqxm79fnts8/Q1c=
+
+Name: lib/ant-weblogic.jar
+SHA1-Digest: 1zEByTGSxJzTfSdx+joviPFLPgI=
+
+Name: bin/envset.cmd
+SHA1-Digest: anGgepI9TTUvD6W73h+kGQrc2d0=
+
+Name: etc/checkstyle/checkstyle-text.xsl
+SHA1-Digest: Jzub6NSrWxS9hYda+Wy/SP49SeI=
+
+Name: lib/ant-junit.jar
+SHA1-Digest: Asegl5TsYIaKAuGWD3RQGmYG9iw=
+
+Name: bin/ant.cmd
+SHA1-Digest: fKm5e7CiWr2UH61jbx6Yol3cQZo=
+
+Name: etc/log.xsl
+SHA1-Digest: 0HD61tw+M8q33hpPVPkjJJe4SDo=
+
+Name: bin/antRun
+SHA1-Digest: 3xz5zLVIT2QJnPskzZCOuX0LVnw=
+
+Name: bin/runant.py
+SHA1-Digest: uMviIJaN6y/k6xUbjXhmUd6TN8E=
+
+Name: lib/ant-commons-logging.jar
+SHA1-Digest: gPBkcASbXXb7sM6WCSbP3OnU0qw=
+
+Name: lib/ant-swing.jar
+SHA1-Digest: KeZdzozW8mPvLnnzlpJbnLFHC/k=
+
+Name: etc/jdepend-frames.xsl
+SHA1-Digest: OEsPHq3PIr185ocUtm81ULkmobs=
+
+Name: etc/checkstyle/checkstyle-xdoc.xsl
+SHA1-Digest: mfVMgdE+9JoC0hKc0Vc5f7pbe/c=
+
+Name: etc/changelog.xsl
+SHA1-Digest: 9ZFS8fHSvz42GLs2NDnqzLFo5G8=
+
+Name: lib/ant-launcher.jar
+SHA1-Digest: T5al3RPPs+cl2svqvzwRQyPua1M=
+
+Name: etc/jdepend.xsl
+SHA1-Digest: M6boZHWa9+JeDhCjXtq5Z9Y61dY=
+
+Name: bin/runrc.cmd
+SHA1-Digest: aq6+dBb+jdiXyrvDNmLIOzj21N8=
+
+Name: lib/ant-jmf.jar
+SHA1-Digest: rEt5vCSeiJhrDXhToAlqBYJUlpY=
+
+Name: lib/ant-starteam.jar
+SHA1-Digest: CC7k+9amtUmgE+nMSJswFn0gmdc=
+
+Name: lib/ant-netrexx.jar
+SHA1-Digest: 4MHr/zw5Cad5RNbITo3KEhTVU/g=
+
+Name: plugin.properties
+SHA1-Digest: g7K94ZyjaSU4QSVkjoTpYtl1vqE=
+
+Name: lib/ant-jai.jar
+SHA1-Digest: Hgz5UmlpuD4hOHTE+BQc7wzmHz0=
+
+Name: lib/ant-trax.jar
+SHA1-Digest: w6uurfjcZy7fOSYUPT2jG8svYVo=
+
+Name: bin/antRun.bat
+SHA1-Digest: KX8SW+sZ8gtQYr3boWRpl2DkWrE=
+
+Name: lib/ant-apache-bsf.jar
+SHA1-Digest: usSlJG0vxeeqtxI/5lH/UPeH2fg=
+
+Name: about_files/LICENSE.sax.txt
+SHA1-Digest: CnKqzCUI0E0NUSlVIAfUd8gctxU=
+
+Name: lib/ant-stylebook.jar
+SHA1-Digest: FwmSqxPzrBPJXJ0X4oKHndncTnY=
+
+Name: lib/ant-apache-log4j.jar
+SHA1-Digest: zcg372So4PVCkltPKzEiAFN3rA4=
+
+Name: bin/ant
+SHA1-Digest: bnS5vQF5wYnqXs8zr+3LORKIA0U=
+
+Name: etc/checkstyle/checkstyle-frames.xsl
+SHA1-Digest: cQKamOMX7Att9wW45aAohAWp3K0=
+
+Name: bin/complete-ant-cmd.pl
+SHA1-Digest: wXOPsOb8rPKKwt6rAb3XoXCwFgQ=
+
+Name: about_files/NOTICE
+SHA1-Digest: g5R8FDyNNir6o/tFVnDNSlcP+z0=
+
+Name: lib/ant-apache-resolver.jar
+SHA1-Digest: NNj7gb1Enc2M8v/lMP9D4XO+8W0=
+
+Name: etc/junit-frames.xsl
+SHA1-Digest: 2hTCiaPp95X9ZjX8ZDwjvqwfT6U=
+
+Name: etc/junit-noframes.xsl
+SHA1-Digest: M4u7091ckN+zoCaRvjal1SDwJQE=
+
+Name: lib/ant-antlr.jar
+SHA1-Digest: pYDgw2hfdxjUG5938M9pyip9zoA=
+
+Name: about.html
+SHA1-Digest: tujWEJAt+/IKSC26IMuUh48ercA=
+
+Name: etc/maudit-frames.xsl
+SHA1-Digest: U8xxI3AoPSoVepSv0ZbfrARsTZY=
+
+Name: etc/junit-frames-xalan1.xsl
+SHA1-Digest: Bvmst1NiMllcc+sricG/3Eyszc0=
+
+Name: lib/ant-commons-net.jar
+SHA1-Digest: 054oC0sq2Zt1GCWm8zv3DATb8nQ=
+
+Name: lib/ant-javamail.jar
+SHA1-Digest: eJJcJGmsmr4JB5KfiZJRZcv6xLs=
+
+Name: bin/lcp.bat
+SHA1-Digest: EA5m2+HfGFLhb6ForQdjnlvl3cU=
+
+Name: bin/antenv.cmd
+SHA1-Digest: as5/uc6NFrw5Zqzjc5vZEWg6MsM=
+
+Name: bin/antRun.pl
+SHA1-Digest: Cw3hkFZ/7NbP7kPUGL/WM1n8EKk=
+
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/MANIFEST.MF b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..56d762b
--- /dev/null
+++ b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/MANIFEST.MF
@@ -0,0 +1,234 @@
+Manifest-Version: 1.0
+Bundle-ClassPath: lib/ant.jar,lib/ant-antlr.jar,lib/ant-apache-bcel.ja
+ r,lib/ant-apache-bsf.jar,lib/ant-apache-log4j.jar,lib/ant-apache-oro.
+ jar,lib/ant-apache-regexp.jar,lib/ant-apache-resolver.jar,lib/ant-com
+ mons-logging.jar,lib/ant-commons-net.jar,lib/ant-jai.jar,lib/ant-java
+ mail.jar,lib/ant-jdepend.jar,lib/ant-jmf.jar,lib/ant-jsch.jar,lib/ant
+ -junit.jar,lib/ant-launcher.jar,lib/ant-netrexx.jar,lib/ant-nodeps.ja
+ r,lib/ant-starteam.jar,lib/ant-stylebook.jar,lib/ant-swing.jar,lib/an
+ t-trax.jar,lib/ant-weblogic.jar
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.apache.ant
+Require-Bundle: org.eclipse.osgi
+Export-Package: images,org.apache.tools.ant,org.apache.tools.ant.dispa
+ tch,org.apache.tools.ant.filters,org.apache.tools.ant.filters.util,or
+ g.apache.tools.ant.helper,org.apache.tools.ant.input,org.apache.tools
+ .ant.launch,org.apache.tools.ant.listener,org.apache.tools.ant.loader
+ ,org.apache.tools.ant.taskdefs,org.apache.tools.ant.taskdefs.compiler
+ s,org.apache.tools.ant.taskdefs.condition,org.apache.tools.ant.taskde
+ fs.cvslib,org.apache.tools.ant.taskdefs.email,org.apache.tools.ant.ta
+ skdefs.optional,org.apache.tools.ant.taskdefs.optional.ccm,org.apache
+ .tools.ant.taskdefs.optional.clearcase,org.apache.tools.ant.taskdefs.
+ optional.depend,org.apache.tools.ant.taskdefs.optional.depend.constan
+ tpool,org.apache.tools.ant.taskdefs.optional.dotnet,org.apache.tools.
+ ant.taskdefs.optional.ejb,org.apache.tools.ant.taskdefs.optional.exte
+ nsion,org.apache.tools.ant.taskdefs.optional.extension.resolvers,org.
+ apache.tools.ant.taskdefs.optional.i18n,org.apache.tools.ant.taskdefs
+ .optional.image,org.apache.tools.ant.taskdefs.optional.j2ee,org.apach
+ e.tools.ant.taskdefs.optional.javacc,org.apache.tools.ant.taskdefs.op
+ tional.javah,org.apache.tools.ant.taskdefs.optional.jdepend,org.apach
+ e.tools.ant.taskdefs.optional.jlink,org.apache.tools.ant.taskdefs.opt
+ ional.jsp,org.apache.tools.ant.taskdefs.optional.jsp.compilers,org.ap
+ ache.tools.ant.taskdefs.optional.junit,org.apache.tools.ant.taskdefs.
+ optional.junit.xsl,org.apache.tools.ant.taskdefs.optional.native2asci
+ i,org.apache.tools.ant.taskdefs.optional.net,org.apache.tools.ant.tas
+ kdefs.optional.perforce,org.apache.tools.ant.taskdefs.optional.pvcs,o
+ rg.apache.tools.ant.taskdefs.optional.scm,org.apache.tools.ant.taskde
+ fs.optional.script,org.apache.tools.ant.taskdefs.optional.sos,org.apa
+ che.tools.ant.taskdefs.optional.sound,org.apache.tools.ant.taskdefs.o
+ ptional.splash,org.apache.tools.ant.taskdefs.optional.ssh,org.apache.
+ tools.ant.taskdefs.optional.starteam,org.apache.tools.ant.taskdefs.op
+ tional.unix,org.apache.tools.ant.taskdefs.optional.vss,org.apache.too
+ ls.ant.taskdefs.optional.windows,org.apache.tools.ant.taskdefs.rmic,o
+ rg.apache.tools.ant.types,org.apache.tools.ant.types.conditions,org.a
+ pache.tools.ant.types.mappers,org.apache.tools.ant.types.optional,org
+ .apache.tools.ant.types.optional.depend,org.apache.tools.ant.types.op
+ tional.image,org.apache.tools.ant.types.resolver,org.apache.tools.ant
+ .types.resources,org.apache.tools.ant.types.resources.comparators,org
+ .apache.tools.ant.types.resources.selectors,org.apache.tools.ant.type
+ s.selectors,org.apache.tools.ant.types.selectors.modifiedselector,org
+ .apache.tools.ant.types.spi,org.apache.tools.ant.util,org.apache.tool
+ s.ant.util.depend,org.apache.tools.ant.util.depend.bcel,org.apache.to
+ ols.ant.util.facade,org.apache.tools.ant.util.java15,org.apache.tools
+ .ant.util.optional,org.apache.tools.ant.util.regexp,org.apache.tools.
+ bzip2,org.apache.tools.mail,org.apache.tools.tar,org.apache.tools.zip
+Bundle-Version: 1.7.1.v20100518-1145
+Bundle-ManifestVersion: 2
+
+Name: lib/ant-apache-bcel.jar
+SHA1-Digest: mL7ypH+XtKGLayV/7EGF6kwoYwI=
+
+Name: etc/mmetrics-frames.xsl
+SHA1-Digest: cQnziGYZC2FrO0zwFE92P1bP2v8=
+
+Name: bin/ant.bat
+SHA1-Digest: Rc2etgn1RATkrEL3NCa3Fs75Ov8=
+
+Name: etc/tagdiff.xsl
+SHA1-Digest: ddaegkBkww5CoIlRpSR8RDUI1bQ=
+
+Name: lib/ant.jar
+SHA1-Digest: QmGGhQi4COYG3u+KHGHVjvZA9hM=
+
+Name: lib/ant-apache-oro.jar
+SHA1-Digest: 3mVzpEG3xmdgVi2+lwuMPKHKZfM=
+
+Name: lib/ant-jsch.jar
+SHA1-Digest: FmNWUeOpmyXmyH5K7WvBCfyprsE=
+
+Name: about_files/LICENSE.dom.html
+SHA1-Digest: 9F8cZaCgriCte0T6Mt5hAFumadk=
+
+Name: etc/coverage-frames.xsl
+SHA1-Digest: 5SE/NhPWEbqzGDGL58dwEbkhwRs=
+
+Name: lib/ant-jdepend.jar
+SHA1-Digest: juZ5ScBk7RdbT9kx1nq/TB1qix8=
+
+Name: about_files/asl-v20.txt
+SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=
+
+Name: lib/ant-nodeps.jar
+SHA1-Digest: stuzByOvnFqXXfMR1DOHMbURR4Y=
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
+
+Name: lib/ant-apache-regexp.jar
+SHA1-Digest: bCOUGaWl76Yhuy0KPpq3Cl/w55g=
+
+Name: bin/runant.pl
+SHA1-Digest: tynYaGh8+BtWDsZ6PljZdoi+egU=
+
+Name: lib/ant-weblogic.jar
+SHA1-Digest: q/YjU1rB8u/dxjXcENxmEQ3pgXQ=
+
+Name: etc/checkstyle/checkstyle-text.xsl
+SHA1-Digest: CqSzAXEeeV20DtFpeujwjL9FEW8=
+
+Name: bin/envset.cmd
+SHA1-Digest: EJ+ljL5sbUQ8mWVn8V49XPBuAz0=
+
+Name: bin/ant.cmd
+SHA1-Digest: 4jPJI7nJO+v3oPpbi5GbrT7x9qk=
+
+Name: lib/ant-junit.jar
+SHA1-Digest: VPSxi0uuALZXXpJF4QFhkpUOpUI=
+
+Name: bin/antRun
+SHA1-Digest: S63QT5F5EI1BCpIj59nosT3lVTw=
+
+Name: etc/log.xsl
+SHA1-Digest: juv2H0VplMm4ri1rzgdOW0yCroc=
+
+Name: bin/runant.py
+SHA1-Digest: Kg3iFzRnZW6PVIFmbj7Eyuo72cM=
+
+Name: lib/ant-commons-logging.jar
+SHA1-Digest: NjlZah2crXobTrvv4OGCIMjO+8A=
+
+Name: lib/ant-swing.jar
+SHA1-Digest: XynrDWbhmRUIf9PM4gVJqgCaA5s=
+
+Name: etc/jdepend-frames.xsl
+SHA1-Digest: U2Bb6aMxgbEYqXkCm2sujeLP7Zo=
+
+Name: etc/checkstyle/checkstyle-xdoc.xsl
+SHA1-Digest: yL3TqCA4pc0daZXtXwAiCN6xHxI=
+
+Name: etc/changelog.xsl
+SHA1-Digest: 2EZZ+jSTt1TTlBYPN4vGUAX7cTQ=
+
+Name: lib/ant-launcher.jar
+SHA1-Digest: GHtlGif/wHyc2Emb1oDygUu5sOU=
+
+Name: etc/jdepend.xsl
+SHA1-Digest: 0rf14aLzhLsun24uUsXVVvkHM6I=
+
+Name: bin/runrc.cmd
+SHA1-Digest: eNo+cuYQicndcc56FVkRScD5w30=
+
+Name: lib/ant-jmf.jar
+SHA1-Digest: LkMJEvWekiNff2+40hzqUtHWv5Y=
+
+Name: lib/ant-starteam.jar
+SHA1-Digest: phxps48pSlCZmpwiyZY2cbk6yaw=
+
+Name: lib/ant-netrexx.jar
+SHA1-Digest: QWTo/YKGFWwaSuanXxbeyc3U2yQ=
+
+Name: plugin.properties
+SHA1-Digest: EM3JUl9D3jv9MhxxbdTWTUt6kbI=
+
+Name: lib/ant-jai.jar
+SHA1-Digest: EJ+iUjul2mZKti+TEgmuQ3kIh/o=
+
+Name: lib/ant-trax.jar
+SHA1-Digest: HZ8Fu0t4n4XH3pf7VeSW1i3ymAw=
+
+Name: bin/antRun.bat
+SHA1-Digest: zB9JbFFhlXTVgwaJlw61wNELj6k=
+
+Name: lib/ant-apache-bsf.jar
+SHA1-Digest: 3m9VogNJMXiCF1ZkaeMRPdtM9OA=
+
+Name: about_files/LICENSE.sax.txt
+SHA1-Digest: uLnQn2qwT77aJ6MThuLeWz1I5ek=
+
+Name: lib/ant-stylebook.jar
+SHA1-Digest: E+Uxq8GjVBkGmc4TZ3JQh4MZeRw=
+
+Name: lib/ant-apache-log4j.jar
+SHA1-Digest: 35KkJkHQuFhTpd0mbJemrVVJCQI=
+
+Name: bin/ant
+SHA1-Digest: jK7w10Hy+BIiSimUAhjgizdaBuY=
+
+Name: etc/checkstyle/checkstyle-frames.xsl
+SHA1-Digest: 5KYg/jQq+iuWKS5gF1qX37F+UX0=
+
+Name: bin/complete-ant-cmd.pl
+SHA1-Digest: F1mrSua1xk98goAA1YvtOoJNiuw=
+
+Name: about_files/NOTICE
+SHA1-Digest: v3XrGNGv2sQGqBe+ObJZnq9915g=
+
+Name: lib/ant-apache-resolver.jar
+SHA1-Digest: fzM5Jwsbw+H2XUPO5uxQGgO9mRA=
+
+Name: etc/junit-frames.xsl
+SHA1-Digest: XIcHcYoM8I5hzTkhdiy5iskupIM=
+
+Name: etc/junit-noframes.xsl
+SHA1-Digest: zmgmTYDnXS0QZvMd3wUarjPR7aE=
+
+Name: lib/ant-antlr.jar
+SHA1-Digest: Kagxm9lkBtXTXWMRKDWn52KZeTE=
+
+Name: about.html
+SHA1-Digest: cPPs9diR9VPNDzWrCs1FLNOdJEo=
+
+Name: etc/maudit-frames.xsl
+SHA1-Digest: 1oML7OYqWjV+hPKu/ItdzrAFGcA=
+
+Name: etc/junit-frames-xalan1.xsl
+SHA1-Digest: ME/2vW22HRXG87EwVJ9LFfkfyEI=
+
+Name: lib/ant-commons-net.jar
+SHA1-Digest: Rg+mKr8hSVibDLdQwjnhGg+oMuA=
+
+Name: lib/ant-javamail.jar
+SHA1-Digest: 2b0KzqoBPtuNEHHwW3KXqLGLby8=
+
+Name: bin/lcp.bat
+SHA1-Digest: eX7ICcBsanATsaEDkn5+oTA4QaQ=
+
+Name: bin/antenv.cmd
+SHA1-Digest: s2zvcJEs2E2x6ckfXZoGxx1OF1Y=
+
+Name: bin/antRun.pl
+SHA1-Digest: mynp1agPByxojQUKZqlVZkXZSHY=
+
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/eclipse.inf b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/eclipse.inf
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/META-INF/eclipse.inf
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/META-INF/eclipse.inf
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about.html b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about.html
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about.html
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about.html
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/LICENSE.dom.html b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/LICENSE.dom.html
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/LICENSE.dom.html
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/LICENSE.dom.html
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/LICENSE.sax.txt b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/LICENSE.sax.txt
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/LICENSE.sax.txt
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/LICENSE.sax.txt
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/NOTICE b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/NOTICE
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/NOTICE
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/NOTICE
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/asl-v20.txt b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/asl-v20.txt
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/about_files/asl-v20.txt
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/about_files/asl-v20.txt
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant.bat b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant.bat
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant.bat
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant.bat
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant.cmd b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant.cmd
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/ant.cmd
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/ant.cmd
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun.bat b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun.bat
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun.bat
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun.bat
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun.pl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun.pl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antRun.pl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antRun.pl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antenv.cmd b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antenv.cmd
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/antenv.cmd
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/antenv.cmd
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/complete-ant-cmd.pl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/complete-ant-cmd.pl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/complete-ant-cmd.pl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/complete-ant-cmd.pl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/envset.cmd b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/envset.cmd
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/envset.cmd
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/envset.cmd
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/lcp.bat b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/lcp.bat
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/lcp.bat
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/lcp.bat
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runant.pl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runant.pl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runant.pl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runant.pl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runant.py b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runant.py
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runant.py
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runant.py
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runrc.cmd b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runrc.cmd
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/bin/runrc.cmd
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runrc.cmd
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/changelog.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/changelog.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/changelog.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/changelog.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-text.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-text.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-text.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-text.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-xdoc.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-xdoc.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/checkstyle/checkstyle-xdoc.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/checkstyle/checkstyle-xdoc.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/coverage-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/coverage-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/coverage-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/coverage-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/jdepend-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/jdepend-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/jdepend-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/jdepend-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/jdepend.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/jdepend.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/jdepend.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/jdepend.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-frames-xalan1.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-frames-xalan1.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-frames-xalan1.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-frames-xalan1.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-noframes.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-noframes.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/junit-noframes.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/junit-noframes.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/log.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/log.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/log.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/log.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/maudit-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/maudit-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/maudit-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/maudit-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/mmetrics-frames.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/mmetrics-frames.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/mmetrics-frames.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/mmetrics-frames.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/tagdiff.xsl b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/tagdiff.xsl
similarity index 100%
rename from eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/etc/tagdiff.xsl
rename to eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/etc/tagdiff.xsl
diff --git a/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/plugin.properties b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/plugin.properties
new file mode 100644
index 0000000..658714d
--- /dev/null
+++ b/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Eclipse Public License v1.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 = Apache Ant
+providerName = Eclipse Orbit
diff --git a/eclipse/plugins/org.eclipse.ant.core/plugin.xml b/eclipse/plugins/org.eclipse.ant.core/plugin.xml
index 30f75af..227a737 100644
--- a/eclipse/plugins/org.eclipse.ant.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ant.core/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ant.launching/plugin.xml b/eclipse/plugins/org.eclipse.ant.launching/plugin.xml
index 9b85112..05e314f 100644
--- a/eclipse/plugins/org.eclipse.ant.launching/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ant.launching/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
<!--
-    Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.4"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/AntLaunchingUtil.java b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/AntLaunchingUtil.java
index a549774..3acfd09 100644
--- a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/AntLaunchingUtil.java
+++ b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/AntLaunchingUtil.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -521,4 +521,21 @@ public final class AntLaunchingUtil {
 			}
 		}
 	}
+	
+	/**
+	 * Returns whether the given configuration should be launched in the background.
+	 * When unspecified, the default value for an Ant launch configuration is <code>true</code>.
+	 * 
+	 * @param configuration the configuration
+	 * @return whether the configuration is configured to launch in the background
+	 */
+	public static boolean isLaunchInBackground(ILaunchConfiguration configuration) {
+		boolean launchInBackground= true;
+		try {
+			launchInBackground= configuration.getAttribute(IExternalToolConstants.ATTR_LAUNCH_IN_BACKGROUND, true);
+		} catch (CoreException ce) {
+			AntLaunching.log(ce);
+		}
+		return launchInBackground;
+	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntLaunchDelegate.java b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntLaunchDelegate.java
index 2c3bbef..15088ae 100644
--- a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntLaunchDelegate.java
+++ b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntLaunchDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -141,7 +141,7 @@ public class AntLaunchDelegate extends LaunchConfigurationDelegate {
 		boolean isSeparateJRE = AntLaunchingUtil
 				.isSeparateJREAntBuild(configuration);
 
-		if (ExternalToolsCoreUtil.isAsynchronousBuild(configuration)) {
+		if (AntLaunchingUtil.isLaunchInBackground(configuration)) {
 			monitor.beginTask(MessageFormat.format(
 				AntLaunchConfigurationMessages.AntLaunchDelegate_Launching__0__1,
 						new String[] { configuration.getName() }), 10);
@@ -290,7 +290,7 @@ public class AntLaunchDelegate extends LaunchConfigurationDelegate {
 				launch, attributes);
 		setProcessAttributes(process, idStamp, commandLine);
 		boolean debug = fMode.equals(ILaunchManager.DEBUG_MODE);
-		if (debug || ExternalToolsCoreUtil.isAsynchronousBuild(configuration)) {
+		if (debug || AntLaunchingUtil.isLaunchInBackground(configuration)) {
 			final AntRunner finalRunner = runner;
 			Runnable r = new Runnable() {
 				public void run() {
@@ -317,6 +317,7 @@ public class AntLaunchDelegate extends LaunchConfigurationDelegate {
 		} else {
 			// execute the build
 			try {
+				process.setProgressMonitor(monitor);
 				runner.run(monitor);
 			} catch (CoreException e) {
 				process.terminated();
@@ -654,7 +655,7 @@ public class AntLaunchDelegate extends LaunchConfigurationDelegate {
 			setProcessAttributes(processes[i], idStamp, null);
 		}
 
-		if (ExternalToolsCoreUtil.isAsynchronousBuild(copy)) {
+		if (AntLaunchingUtil.isLaunchInBackground(copy)) {
 			// refresh resources after process finishes
 			if (configuration.getAttribute(RefreshUtil.ATTR_REFRESH_SCOPE, (String)null) != null) {
 				BackgroundResourceRefresher refresher = new BackgroundResourceRefresher(
diff --git a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntProcess.java b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntProcess.java
index ac50a8b..d10255a 100644
--- a/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntProcess.java
+++ b/eclipse/plugins/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/launchConfigurations/AntProcess.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,6 +30,8 @@ public class AntProcess extends PlatformObject implements IProcess, IProgressMon
 	private Map fAttributes = null;
 	private boolean fTerminated = false;
 	private boolean fCancelled = false;
+	// progress monitor to delegate or null if none
+	private IProgressMonitor fMonitor;
 	
 	public AntProcess(String label, ILaunch launch, Map attributes) {
 		fLabel = label;
@@ -124,18 +126,27 @@ public class AntProcess extends PlatformObject implements IProcess, IProgressMon
 	 * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String, int)
 	 */
 	public void beginTask(String name, int totalWork) {
+		if (fMonitor != null) {
+			fMonitor.beginTask(name, totalWork);
+		}
 	}
 
 	/**
 	 * @see org.eclipse.core.runtime.IProgressMonitor#done()
 	 */
 	public void done() {
+		if (fMonitor != null) {
+			fMonitor.done();
+		}
 	}
 
 	/**
 	 * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
 	 */
 	public void internalWorked(double work) {
+		if (fMonitor != null) {
+			fMonitor.internalWorked(work);
+		}
 	}
 
 	/**
@@ -150,23 +161,44 @@ public class AntProcess extends PlatformObject implements IProcess, IProgressMon
 	 */
 	public void setCanceled(boolean value) {
 		fCancelled = value;
+		if (fMonitor != null) {
+			fMonitor.setCanceled(value);
+		}
 	}
 
 	/**
 	 * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
 	 */
 	public void setTaskName(String name) {
+		if (fMonitor != null) {
+			fMonitor.setTaskName(name);
+		}
 	}
 
 	/**
 	 * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
 	 */
 	public void subTask(String name) {
+		if (fMonitor != null) {
+			fMonitor.subTask(name);
+		}
 	}
 
 	/**
 	 * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
 	 */
 	public void worked(int work) {
+		if (fMonitor != null) {
+			fMonitor.worked(work);
+		}
+	}
+	
+	/**
+	 * Sets a progress monitor to delegate to or <code>null</code> if none.
+	 * 
+	 * @param monitor delegate monitor or <code>null</code>
+	 */
+	public void setProgressMonitor(IProgressMonitor monitor) {
+		fMonitor = monitor;
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntJRETab.java b/eclipse/plugins/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntJRETab.java
index 7569861..19ac949 100644
--- a/eclipse/plugins/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntJRETab.java	
+++ b/eclipse/plugins/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntJRETab.java	
@@ -18,6 +18,7 @@ import org.eclipse.ant.internal.ui.IAntUIHelpContextIds;
 import org.eclipse.ant.launching.IAntLaunchConstants;
 import org.eclipse.core.externaltools.internal.IExternalToolConstants;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.variables.IStringVariableManager;
 import org.eclipse.core.variables.VariablesPlugin;
 import org.eclipse.debug.core.DebugPlugin;
@@ -106,7 +107,9 @@ public class AntJRETab extends JavaJRETab {
 		} else {
 			super.performApply(configuration);
 			IVMInstall vm = fJREBlock.getJRE();
-			configuration.setAttribute(IAntLaunchConstants.ATTR_DEFAULT_VM_INSTALL, (vm == null ? false : vm.equals(getDefaultVMInstall(configuration))));
+			IPath path = fJREBlock.getPath();
+			String id = JavaRuntime.getExecutionEnvironmentId(path);
+			configuration.setAttribute(IAntLaunchConstants.ATTR_DEFAULT_VM_INSTALL, ((vm == null || id != null) ? false : vm.equals(getDefaultVMInstall(configuration))));
 			applySeparateVMAttributes(configuration);
 			fVMArgumentsBlock.performApply(configuration);
 			fWorkingDirectoryBlock.performApply(configuration);
@@ -215,8 +218,8 @@ public class AntJRETab extends JavaJRETab {
 		config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_SOURCE_PATH_PROVIDER, "org.eclipse.ant.ui.AntClasspathProvider"); //$NON-NLS-1$
 		IVMInstall defaultVMInstall= getDefaultVMInstall(config);
 		if (defaultVMInstall != null) {
-			config.setAttribute(IAntLaunchConstants.ATTR_DEFAULT_VM_INSTALL, true);
-			//setDefaultVMInstallAttributes(defaultVMInstall, config);
+			config.setAttribute(IAntLaunchConstants.ATTR_DEFAULT_VM_INSTALL, false);
+			setDefaultVMInstallAttributes(defaultVMInstall, config);
 			applySeparateVMAttributes(config);
 		}
 		
@@ -244,6 +247,13 @@ public class AntJRETab extends JavaJRETab {
 		}
 	}
 
+	private void setDefaultVMInstallAttributes(IVMInstall defaultVMInstall, ILaunchConfigurationWorkingCopy config) {
+		String vmName = defaultVMInstall.getName();
+		String vmTypeID = defaultVMInstall.getVMInstallType().getId();
+		config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_NAME, vmName);
+		config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_TYPE, vmTypeID);
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#deactivated(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
 	 */
diff --git a/eclipse/plugins/org.eclipse.ant.ui/plugin.xml b/eclipse/plugins/org.eclipse.ant.ui/plugin.xml
index 6cecbbd..bc7bb06 100644
--- a/eclipse/plugins/org.eclipse.ant.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ant.ui/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/DiffProject.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/DiffProject.java
index 9b2de11..630256d 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/DiffProject.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/DiffProject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FileDiffResult.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FileDiffResult.java
index 534a7dc..3410270 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FileDiffResult.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FileDiffResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -102,7 +102,7 @@ public class FileDiffResult implements IFilePatchResult {
 			IHunk[] hunks = this.fDiff.getHunks();
 			for (int i = 0; i < hunks.length; i++) {
 				Hunk hunk = (Hunk) hunks[i];
-				hunk.setCharset(this.charset);
+				hunk.setCharset(getCharset());
 				HunkResult result = getHunkResult(hunk);
 				result.setMatches(false);
 			}
@@ -161,7 +161,7 @@ public class FileDiffResult implements IFilePatchResult {
 		IHunk[] hunks = this.fDiff.getHunks();
 		for (int i = 0; i < hunks.length; i++) {
 			Hunk hunk = (Hunk) hunks[i];
-			hunk.setCharset(this.charset);
+			hunk.setCharset(getCharset());
 			HunkResult result = getHunkResult(hunk);
 			result.setShift(shift);
 			if (result.patch(lines)) {
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FilePatch2.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FilePatch2.java
index 219e8e0..c1b569d 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FilePatch2.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/FilePatch2.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/Hunk.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/Hunk.java
index 1e90a42..88ab17b 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/Hunk.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/Hunk.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/HunkResult.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/HunkResult.java
index 5e41aaf..186a49b 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/HunkResult.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/HunkResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/LineReader.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/LineReader.java
index 32d729d..fc83e49 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/LineReader.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/LineReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
index 2e86770..adf5deb 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchBuilder.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchBuilder.java
index c85bd39..40d7177 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchBuilder.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchConfiguration.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchConfiguration.java
index 7fd5449..2266965 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchConfiguration.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/patch/PatchConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/DifferencesIterator.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
index 2edc579..d42c4bd 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/RangeDifferencer.java b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
index 53be109..af9a5cb 100644
--- a/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
+++ b/eclipse/plugins/org.eclipse.compare.core/src/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -186,10 +186,30 @@ public final class RangeDifferencer {
 				else if (yourIter.fDifference == null)
 					startThread= myIter;
 				else { // not at end of both scripts take the lowest range
-					if (myIter.fDifference.leftStart <= yourIter.fDifference.leftStart) // 2 -> common (Ancestor) change range
+					if (myIter.fDifference.leftStart < yourIter.fDifference.leftStart) { // 2 -> common (Ancestor) change range
 						startThread= myIter;
-					else
+					} else if (myIter.fDifference.leftStart > yourIter.fDifference.leftStart) {
 						startThread= yourIter;
+					} else {
+						if (myIter.fDifference.leftLength == 0 && yourIter.fDifference.leftLength == 0) {
+							//insertion into the same position is conflict. 
+							changeRangeStart= myIter.fDifference.leftStart;
+							changeRangeEnd= myIter.fDifference.leftEnd();
+							myIter.next();
+							yourIter.next();
+							diff3.add(createRangeDifference3(factory, myIter, yourIter, diff3, right, left, changeRangeStart, changeRangeEnd));
+							continue;
+						} else 	if (myIter.fDifference.leftLength == 0) {
+							//insertion into a position, and modification to the next line, is not conflict.
+							startThread= myIter;
+						} else if (yourIter.fDifference.leftLength == 0) {
+							startThread = yourIter;
+						} else {
+							//modifications to overlapping lines is conflict.
+							startThread= myIter;
+						}
+					}
+						
 				}
 				changeRangeStart= startThread.fDifference.leftStart;
 				changeRangeEnd= startThread.fDifference.leftEnd();
@@ -201,11 +221,11 @@ public final class RangeDifferencer {
 				// merge overlapping changes with this range
 				//
 				DifferencesIterator other= startThread.other(myIter, yourIter);
-				while (other.fDifference != null && other.fDifference.leftStart <= changeRangeEnd) {
+				while (other.fDifference != null && other.fDifference.leftStart < changeRangeEnd) {
 					int newMax= other.fDifference.leftEnd();
 					other.next();
 					monitor.worked(1);
-					if (newMax >= changeRangeEnd) {
+					if (newMax > changeRangeEnd) {
 						changeRangeEnd= newMax;
 						other= other.other(myIter, yourIter);
 					}
diff --git a/eclipse/plugins/org.eclipse.compare.win32/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.compare.win32/META-INF/MANIFEST.MF
index 7cb04a2..49f71c2 100644
--- a/eclipse/plugins/org.eclipse.compare.win32/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.compare.win32/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.compare.win32;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Vendor: %providerName
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Eclipse-PlatformFilter: (osgi.os=win32)
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
index 03ed345..031a042 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1109,7 +1109,7 @@ public abstract class ContentMergeViewer extends ContentViewer
 				fLeftLabel.setImage(leftImage);
 			String leftLabel = content.getLeftLabel(input);
 			if (leftLabel != null)
-				fLeftLabel.setText(TextProcessor.process(leftLabel));
+				fLeftLabel.setText(leftLabel);
 		}
 		if (fRightLabel != null) {
 			Image rightImage = content.getRightImage(input);
@@ -1117,7 +1117,7 @@ public abstract class ContentMergeViewer extends ContentViewer
 				fRightLabel.setImage(rightImage);
 			String rightLabel = content.getRightLabel(input);
 			if (rightLabel != null)
-				fRightLabel.setText(TextProcessor.process(rightLabel));
+				fRightLabel.setText(rightLabel);
 		}
 	}
 		
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AdapterFactory.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AdapterFactory.java
index e5049a3..e101563 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AdapterFactory.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AdapterFactory.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.compare.internal;
 
 import org.eclipse.compare.CompareEditorInput;
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java
index c96d3f2..d92ad78 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java
@@ -48,7 +48,7 @@ import org.eclipse.ui.PlatformUI;
 public class CompareContentViewerSwitchingPane extends
 		CompareViewerSwitchingPane {
 
-	private static final String OPTIMIZED_WARNING_IMAGE_NAME = "obj16/warning_st_obj.gif"; //$NON-NLS-1$
+	private static final String OPTIMIZED_INFO_IMAGE_NAME = "obj16/message_info.gif"; //$NON-NLS-1$
 	public static final String OPTIMIZED_ALGORITHM_USED = "OPTIMIZED_ALGORITHM_USED"; //$NON-NLS-1$
 
 	private CompareEditorInput fCompareEditorInput;
@@ -135,7 +135,7 @@ public class CompareContentViewerSwitchingPane extends
 		clOptimized
 				.setToolTipText(CompareMessages.CompareContentViewerSwitchingPane_optimizedTooltip);
 		clOptimized.setImage(CompareUIPlugin.getImageDescriptor(
-				OPTIMIZED_WARNING_IMAGE_NAME).createImage());
+				OPTIMIZED_INFO_IMAGE_NAME).createImage());
 		clOptimized.setVisible(false); // hide by default
 		clOptimized.addDisposeListener(new DisposeListener() {
 			public void widgetDisposed(DisposeEvent e) {
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorSelectionProvider.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorSelectionProvider.java
index b7125fc..771688b 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorSelectionProvider.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorSelectionProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,19 +10,25 @@
  *******************************************************************************/
 package org.eclipse.compare.internal;
 
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.widgets.Widget;
+
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.text.TextViewer;
+
 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.swt.custom.StyledText;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Widget;
+
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.TextSelection;
+import org.eclipse.jface.text.TextViewer;
+
 
 /**
  * A selection provider for view parts with more that one viewer. Tracks the
@@ -199,7 +205,41 @@ public class CompareEditorSelectionProvider implements IPostSelectionProvider {
 
 	public void setSelection(ISelection selection, boolean reveal) {
 		if (fViewerInFocus != null) {
+			if (reveal && !isSelectionInsideVisibleRegion(fViewerInFocus, selection))
+				resetVisibleRegion();
 			fViewerInFocus.setSelection(selection, reveal);
 		}
 	}
+
+	/**
+	 * Resets the visible region for all text viewers of this selection provider.
+	 * 
+	 * @since 3.6
+	 */
+	private void resetVisibleRegion() {
+		if (fViewers == null)
+			return;
+
+		for (int i= 0; i < fViewers.length; i++)
+			fViewers[i].setVisibleRegion(0, fViewers[i].getDocument().getLength());
+	}
+
+	/**
+	 * Tells whether the given selection is inside the text viewer's visible region.
+	 * 
+	 * @param textViewer the text viewer
+	 * @param selection the selection
+	 * @return <code>true</code> if the selection is inside the text viewer's visible region
+	 * @since 3.6
+	 */
+	private static boolean isSelectionInsideVisibleRegion(TextViewer textViewer, ISelection selection) {
+		if (!(selection instanceof ITextSelection))
+			return false;
+
+		ITextSelection textSelection= (ITextSelection)selection;
+		IRegion visibleRegion= textViewer.getVisibleRegion();
+
+		return textSelection.getOffset() >= visibleRegion.getOffset() && textSelection.getOffset() + textSelection.getLength() <= visibleRegion.getOffset() + visibleRegion.getLength();
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
index a64c014..16f3c6a 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
@@ -134,8 +134,8 @@ CompareWithOtherResourceDialog_workspaceRadioButton=&Workspace
 CompareContentViewerSwitchingPane_defaultViewer=Default Compare
 CompareContentViewerSwitchingPane_switchButtonTooltip=Switch Compare Viewer
 CompareContentViewerSwitchingPane_discoveredLabel={0} Compare
-CompareContentViewerSwitchingPane_optimized=Matching might not be optimal
-CompareContentViewerSwitchingPane_optimizedTooltip=To avoid long computation time a faster comparison algorithm has been used. As a result, the matching might not be optimal.
+CompareContentViewerSwitchingPane_optimized=Differences shown might not be optimal
+CompareContentViewerSwitchingPane_optimizedTooltip=To avoid long computation time a faster comparison algorithm has been used. As a result, the differences highlighted in the viewer may be larger than necessary.
 CompareStructureViewerSwitchingPane_defaultViewer=Default Structure Compare
 CompareStructureViewerSwitchingPane_switchButtonTooltip=Switch Structure Compare Viewer
 CompareStructureViewerSwitchingPane_discoveredLabel={0} Structure Compare
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
index 78b199c..f460911 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java
index ea4ba2d..351af89 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileTypedElement.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileTypedElement.java
index 51876e3..86c5fff 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileTypedElement.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileTypedElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -89,8 +89,7 @@ public class PatchFileTypedElement implements ITypedElement,
 	}
 
 	public String getCharset() throws CoreException {
-		// TODO Auto-generated method stub
-		return null;
+		return result.getCharset();
 	}
 
 	public InputStream getContents() throws CoreException {
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java
index dd2285d..1aa09b3 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchTargetPage.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchTargetPage.java
index 8fd95d7..7bbaa32 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchTargetPage.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchTargetPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
index 9b97735..ede6e06 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/WorkspaceFileDiffResult.java b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/WorkspaceFileDiffResult.java
index 81711f1..494dda4 100644
--- a/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/WorkspaceFileDiffResult.java
+++ b/eclipse/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/WorkspaceFileDiffResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,12 +12,14 @@ package org.eclipse.compare.internal.patch;
 
 import java.util.List;
 
-import org.eclipse.compare.internal.core.patch.FilePatch2;
 import org.eclipse.compare.internal.core.patch.FileDiffResult;
+import org.eclipse.compare.internal.core.patch.FilePatch2;
 import org.eclipse.compare.patch.PatchConfiguration;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 
 public class WorkspaceFileDiffResult extends FileDiffResult {
 
@@ -53,4 +55,14 @@ public class WorkspaceFileDiffResult extends FileDiffResult {
 	public void refresh() {
 		refresh(Utilities.getReaderCreator(getTargetFile()), null);
 	}
+
+	public String getCharset() {
+		IFile file = getTargetFile();
+		try {
+			if (file != null)
+				return file.getCharset();
+		} catch (CoreException e) {
+		}
+		return ResourcesPlugin.getEncoding();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/icons/obj16/message_info.gif b/eclipse/plugins/org.eclipse.compare/icons/full/obj16/message_info.gif
similarity index 100%
copy from eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/icons/obj16/message_info.gif
copy to eclipse/plugins/org.eclipse.compare/icons/full/obj16/message_info.gif
diff --git a/eclipse/plugins/org.eclipse.compare/icons/full/obj16/warning_st_obj.gif b/eclipse/plugins/org.eclipse.compare/icons/full/obj16/warning_st_obj.gif
deleted file mode 100644
index 2b2e50f..0000000
Binary files a/eclipse/plugins/org.eclipse.compare/icons/full/obj16/warning_st_obj.gif and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.compare/plugin.properties b/eclipse/plugins/org.eclipse.compare/plugin.properties
index 135b040..c8e2865 100644
--- a/eclipse/plugins/org.eclipse.compare/plugin.properties
+++ b/eclipse/plugins/org.eclipse.compare/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.compare/schema/structureCreators.exsd b/eclipse/plugins/org.eclipse.compare/schema/structureCreators.exsd
index 50f2fe0..318673e 100644
--- a/eclipse/plugins/org.eclipse.compare/schema/structureCreators.exsd
+++ b/eclipse/plugins/org.eclipse.compare/schema/structureCreators.exsd
@@ -2,9 +2,9 @@
 <!-- Schema file written by PDE -->
 <schema targetNamespace="org.eclipse.compare" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
-      <appinfo>
+      <appInfo>
          <meta.schema plugin="org.eclipse.compare" id="structureCreators" name="Structure Creators"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          This extension point allows a plug-in to register a structure creator 
 for specific content types. The structure creator is expected to create
@@ -16,9 +16,9 @@ The extension point must implement the interface &lt;samp&gt;org.eclipse.compare
 
    <element name="extension">
       <annotation>
-         <appinfo>
+         <appInfo>
             <meta.element />
-         </appinfo>
+         </appInfo>
       </annotation>
       <complexType>
          <sequence>
@@ -44,9 +44,9 @@ The extension point must implement the interface &lt;samp&gt;org.eclipse.compare
                <documentation>
                   an optional name of the extension instance
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute translatable="true"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
       </complexType>
@@ -66,9 +66,9 @@ The extension point must implement the interface &lt;samp&gt;org.eclipse.compare
                <documentation>
                   a fully qualified name of a class that implements &lt;samp&gt;org.eclipse.compare.structuremergeviewer.IStructureCreator&lt;/samp&gt;
                </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.compare.structuremergeviewer.IStructureComparator"/>
-               </appinfo>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.compare.structuremergeviewer.IStructureCreator"/>
+               </appInfo>
             </annotation>
          </attribute>
          <attribute name="extensions" type="string">
@@ -93,9 +93,9 @@ The extension point must implement the interface &lt;samp&gt;org.eclipse.compare
                <documentation>
                   The id of a content type defined using the &lt;code&gt;org.eclipse.core.contenttype.contentTypes&lt;/code&gt; extension point.
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
          <attribute name="structureCreatorId" type="string" use="required">
@@ -103,18 +103,18 @@ The extension point must implement the interface &lt;samp&gt;org.eclipse.compare
                <documentation>
                   The id of a structure creator defined using the &lt;code&gt;structureCreator&lt;/code&gt; element of this extension point (i.e. &lt;code&gt;org.eclipse.compare.structureCreators&lt;/code&gt;)
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute kind="identifier" basedOn="org.eclipse.compare.structureCreators/structureCreator/@id"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
       </complexType>
    </element>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="examples"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          The following is an example of a structure creator for 
 java files (extension &quot;java&quot;): 
@@ -133,9 +133,9 @@ java files (extension &quot;java&quot;):
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="apiInfo"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          The contributed class must implement &lt;code&gt;org.eclipse.compare.structuremergeviewer.IStructureCreator&lt;/code&gt;
       </documentation>
@@ -143,20 +143,20 @@ java files (extension &quot;java&quot;):
 
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="implementation"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          The Compare UI plugin defines a structure creator for zip archives.
       </documentation>
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="copyright"/>
-      </appinfo>
+      </appInfo>
       <documentation>
-         Copyright (c) 2000, 2008 IBM Corporation and others.&lt;br&gt;
+         Copyright (c) 2000, 2010 IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
       </documentation>
    </annotation>
diff --git a/eclipse/plugins/org.eclipse.core.boot/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.boot/META-INF/MANIFEST.MF
index 8f4f6df..16bb856 100644
--- a/eclipse/plugins/org.eclipse.core.boot/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.boot/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.core.boot
-Bundle-Version: 3.1.100.qualifier
+Bundle-Version: 3.1.200.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Eclipse-AutoStart: true
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListProperty.java
index e655edd..281891f 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListPropertyDecorator.java
index 0c950a1..8328dc5 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanListPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapProperty.java
index ac5cc0e..99c247a 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapPropertyDecorator.java
index baccd1a..b1ba7a0 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanMapPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetProperty.java
index 39941f1..50714cb 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetPropertyDecorator.java
index 5a3cb3e..c384f6a 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanSetPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanValuePropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanValuePropertyDecorator.java
index 477dccb..5469453 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanValuePropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/BeanValuePropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListProperty.java
index 84b0b3e..44634d4 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListPropertyDecorator.java
index 66c84ad..ae3e33c 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoListPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapProperty.java
index 37efe36..5c81d48 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapPropertyDecorator.java
index 840f1c2..8efcd2f 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoMapPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetProperty.java
index 7ed9254..d0f2fa6 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetPropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetPropertyDecorator.java
index 2b5904f..c0e6b3c 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetPropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoSetPropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoValuePropertyDecorator.java b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoValuePropertyDecorator.java
index fdec1a5..d7acb6f 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoValuePropertyDecorator.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.beans/src/org/eclipse/core/internal/databinding/beans/PojoValuePropertyDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Diffs.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Diffs.java
index 5dde001..5f8792a 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Diffs.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Diffs.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/IDisposeListener.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/IDisposeListener.java
index f1ab2ad..35bf0af 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/IDisposeListener.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/IDisposeListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 Matthew Hall and others.
+ * Copyright (c) 2008, 2009 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/ListDiff.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/ListDiff.java
index 6b0ab41..5d631cb 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/ListDiff.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/ListDiff.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/ComputedObservableMap.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/ComputedObservableMap.java
index fcedf20..60aaadd 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/ComputedObservableMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/ComputedObservableMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/MapDiff.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/MapDiff.java
index f742746..d710c13 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/MapDiff.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/map/MapDiff.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/SetDiff.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/SetDiff.java
index 41a4581..9b93970 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/SetDiff.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/set/SetDiff.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityMap.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityMap.java
index 48f055a..334dc2f 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentitySet.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentitySet.java
index 04e61a1..4bf6388 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentitySet.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentitySet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityWrapper.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityWrapper.java
index 508ccec..9e140c5 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityWrapper.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/identity/IdentityWrapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/DelegatingListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/DelegatingListProperty.java
index 400e141..103ab46 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/DelegatingListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/DelegatingListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/IListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/IListProperty.java
index 42dea3a..7dc79b5 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/IListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/IListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/ListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/ListProperty.java
index acd15d8..139a093 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/ListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/ListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/MultiListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/MultiListProperty.java
index 4024600..2a488d9 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/MultiListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/MultiListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/SimpleListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/SimpleListProperty.java
index 9b3b88b..7cbece0 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/SimpleListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/list/SimpleListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,10 +8,12 @@
  * Contributors:
  *     Matthew Hall - initial API and implementation (bug 194734)
  *     Matthew Hall - bugs 195222, 247997, 265561
+ *     Ovidio Mallo - bug 301774
  ******************************************************************************/
 
 package org.eclipse.core.databinding.property.list;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.databinding.observable.Diffs;
@@ -87,7 +89,8 @@ public abstract class SimpleListProperty extends ListProperty {
 	}
 
 	protected void doUpdateList(Object source, ListDiff diff) {
-		List list = diff.simulateOn(doGetList(source));
+		List list = new ArrayList(doGetList(source));
+		diff.applyTo(list);
 		doSetList(source, list, diff);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/DelegatingMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/DelegatingMapProperty.java
index 394d6f8..dc338f6 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/DelegatingMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/DelegatingMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/IMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/IMapProperty.java
index 8c473f3..018cbac 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/IMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/IMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/MapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/MapProperty.java
index 51c81d9..70fcd95 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/MapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/MapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/SimpleMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/SimpleMapProperty.java
index 021ee91..d0ab799 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/SimpleMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/map/SimpleMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,10 +8,12 @@
  * Contributors:
  *     Matthew Hall - initial API and implementation
  *     Matthew Hall - bugs 195222, 247997, 265561
+ *     Ovidio Mallo - bug 301774
  ******************************************************************************/
 
 package org.eclipse.core.databinding.property.map;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.eclipse.core.databinding.observable.Diffs;
@@ -87,7 +89,8 @@ public abstract class SimpleMapProperty extends MapProperty {
 	}
 
 	protected void doUpdateMap(Object source, MapDiff diff) {
-		Map map = diff.simulateOn(doGetMap(source));
+		Map map = new HashMap(doGetMap(source));
+		diff.applyTo(map);
 		doSetMap(source, map, diff);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/DelegatingSetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/DelegatingSetProperty.java
index 339e5ce..d65d5bb 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/DelegatingSetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/DelegatingSetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/ISetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/ISetProperty.java
index 54103aa..fc593f2 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/ISetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/ISetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SetProperty.java
index 681b31f..8b213ec 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SimpleSetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SimpleSetProperty.java
index 087a317..85273c7 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SimpleSetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/SimpleSetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,10 +8,12 @@
  * Contributors:
  *     Matthew Hall - initial API and implementation
  *     Matthew Hall - bugs 195222, 247997, 265561
+ *     Ovidio Mallo - bug 301774
  ******************************************************************************/
 
 package org.eclipse.core.databinding.property.set;
 
+import java.util.HashSet;
 import java.util.Set;
 
 import org.eclipse.core.databinding.observable.Diffs;
@@ -86,7 +88,8 @@ public abstract class SimpleSetProperty extends SetProperty {
 	}
 
 	protected void doUpdateSet(Object source, SetDiff diff) {
-		Set set = diff.simulateOn(doGetSet(source));
+		Set set = new HashSet(doGetSet(source));
+		diff.applyTo(set);
 		doSetSet(source, set, diff);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/UnionSetProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/UnionSetProperty.java
index b3e4aa0..3c384cc 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/UnionSetProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/set/UnionSetProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/DelegatingValueProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/DelegatingValueProperty.java
index a328962..3dac917 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/DelegatingValueProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/DelegatingValueProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/IValueProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/IValueProperty.java
index ee5f140..162ccb7 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/IValueProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/IValueProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/SimpleValueProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/SimpleValueProperty.java
index a020fc2..9293c85 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/SimpleValueProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/SimpleValueProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/ValueProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/ValueProperty.java
index f043f81..d726668 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/ValueProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/databinding/property/value/ValueProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ListPropertyDetailValuesList.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ListPropertyDetailValuesList.java
index d55660d..15928f3 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ListPropertyDetailValuesList.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ListPropertyDetailValuesList.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/MapPropertyDetailValuesMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/MapPropertyDetailValuesMap.java
index c76435c..1d69985 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/MapPropertyDetailValuesMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/MapPropertyDetailValuesMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/SetPropertyDetailValuesMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/SetPropertyDetailValuesMap.java
index 9a11ff7..98308c4 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/SetPropertyDetailValuesMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/SetPropertyDetailValuesMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailList.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailList.java
index 6816cb2..095edf4 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailList.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailList.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailMap.java
index d221f9c..1abdcec 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailSet.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailSet.java
index a12746b..6e363fa 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailSet.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailSet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailValue.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailValue.java
index fd03228..27cf02c 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailValue.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/ValuePropertyDetailValue.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SelfListProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SelfListProperty.java
index c275efa..63a7137 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SelfListProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SelfListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SimplePropertyObservableList.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SimplePropertyObservableList.java
index 700ca03..609ab05 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SimplePropertyObservableList.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/list/SimplePropertyObservableList.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SelfMapProperty.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SelfMapProperty.java
index 8a83ece..c693607 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SelfMapProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SelfMapProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SimplePropertyObservableMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SimplePropertyObservableMap.java
index 941217c..ee1e56e 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SimplePropertyObservableMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/map/SimplePropertyObservableMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/set/SimplePropertyObservableSet.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/set/SimplePropertyObservableSet.java
index 7cfd513..4e851ab 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/set/SimplePropertyObservableSet.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/set/SimplePropertyObservableSet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/ListSimpleValueObservableList.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/ListSimpleValueObservableList.java
index b7e6a93..54a0821 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/ListSimpleValueObservableList.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/ListSimpleValueObservableList.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/MapSimpleValueObservableMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/MapSimpleValueObservableMap.java
index a9a9394..d6e24f2 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/MapSimpleValueObservableMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/MapSimpleValueObservableMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/SetSimpleValueObservableMap.java b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/SetSimpleValueObservableMap.java
index 79b6c48..26a5765 100644
--- a/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/SetSimpleValueObservableMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding.property/src/org/eclipse/core/internal/databinding/property/value/SetSimpleValueObservableMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextBindingsProperty.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextBindingsProperty.java
index 3e5df2c..39dbb0d 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextBindingsProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextBindingsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextValidationStatusProvidersProperty.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextValidationStatusProvidersProperty.java
index 188c8a0..239b79b 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextValidationStatusProvidersProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/DataBindingContextValidationStatusProvidersProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityMap.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityMap.java
index b8a1510..4f14675 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityMap.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityMap.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentitySet.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentitySet.java
index 4fc3704..03790cf 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentitySet.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentitySet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityWrapper.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityWrapper.java
index 7122a91..c3f43de 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityWrapper.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/IdentityWrapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderModelsProperty.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderModelsProperty.java
index ac60979..845b94c 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderModelsProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderModelsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderTargetsProperty.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderTargetsProperty.java
index 2e9b2ea..10a0971 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderTargetsProperty.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/ValidationStatusProviderTargetsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToNumberParser.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToNumberParser.java
index bccdec1..effd816 100644
--- a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToNumberParser.java
+++ b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToNumberParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java b/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
index 2322748..18a047d 100644
--- a/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
+++ b/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties b/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
index 1c14091..aa9915c 100644
--- a/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
+++ b/eclipse/plugins/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.externaltools/plugin.xml b/eclipse/plugins/org.eclipse.core.externaltools/plugin.xml
index 655c8a2..08d116e 100644
--- a/eclipse/plugins/org.eclipse.core.externaltools/plugin.xml
+++ b/eclipse/plugins/org.eclipse.core.externaltools/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
<!--
-    Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.4"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.hpux.ia64_32/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.filesystem.hpux.ia64_32/META-INF/MANIFEST.MF
index 25001e0..4df5b6b 100644
--- a/eclipse/plugins/org.eclipse.core.filesystem.hpux.ia64_32/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.filesystem.hpux.ia64_32/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.core.filesystem.hpux.ia64_32; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)"
 Bundle-Localization: fragment
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.linux.ppc/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.filesystem.linux.ppc/META-INF/MANIFEST.MF
index be232b6..a148bcf 100644
--- a/eclipse/plugins/org.eclipse.core.filesystem.linux.ppc/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.filesystem.linux.ppc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.core.filesystem.linux.ppc;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.core.filesystem;bundle-version="[1.1.0,2.0.0)"
 Bundle-Localization: fragment
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.macosx/BUILD_INFO.txt b/eclipse/plugins/org.eclipse.core.filesystem.macosx/BUILD_INFO.txt
index 5435422..9f56ba7 100644
--- a/eclipse/plugins/org.eclipse.core.filesystem.macosx/BUILD_INFO.txt
+++ b/eclipse/plugins/org.eclipse.core.filesystem.macosx/BUILD_INFO.txt
@@ -1,10 +1,10 @@
 Native Build Info:
 ------------------
 
-platform:         iMac
-built by:         pawel.pogorzelski at pl.ibm.com
-build date:       21-Jan-2010
+Platform:         iMac
+Built by:         pawel.pogorzelski at pl.ibm.com
+Build date:       21-Jan-2010
 OS Name:          Mac OS X
 OS Version:       10.5.7
 Compiler version: gcc version 4.0.1
-Java version:     Standard Edition (build 1.5.0_19-137)
+Java version:     Standard Edition (build 1.5.0_19-137)
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/.project b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/.project
deleted file mode 100644
index b0d8acd..0000000
--- a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.filesystem.qnx.x86</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/META-INF/MANIFEST.MF
deleted file mode 100644
index 917a53d..0000000
--- a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %fragmentName
-Bundle-SymbolicName: org.eclipse.core.filesystem.qnx.x86; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)"
-Bundle-Localization: fragment
-Eclipse-PlatformFilter: (& (osgi.os=qnx) (osgi.arch=x86))
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/about.html b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/about.html
deleted file mode 100644
index 4602330..0000000
--- a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/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/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/build.properties b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/build.properties
deleted file mode 100644
index a77b881..0000000
--- a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/build.properties
+++ /dev/null
@@ -1,17 +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
-###############################################################################
-bin.includes = os/,\
-               fragment.properties,\
-               .,\
-               META-INF/,\
-               about.html
-src.includes = about.html
-generateSourceBundle=false
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/fragment.properties b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/fragment.properties
deleted file mode 100644
index bbc3b3e..0000000
--- a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/fragment.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
-###############################################################################
-fragmentName = Core File System for QNX
-providerName = Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/os/macosx/ppc/LibraryGoesHere.txt b/eclipse/plugins/org.eclipse.core.filesystem.qnx.x86/os/macosx/ppc/LibraryGoesHere.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/eclipse/plugins/org.eclipse.core.filesystem.win32.x86_64/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.filesystem.win32.x86_64/META-INF/MANIFEST.MF
index 00e3d78..123a711 100644
--- a/eclipse/plugins/org.eclipse.core.filesystem.win32.x86_64/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.filesystem.win32.x86_64/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.core.filesystem.win32.x86_64; singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.200.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.core.filesystem;bundle-version="[1.1.0,2.0.0)"
 Bundle-Localization: fragment
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak
index 3c87978..c7c640e 100755
--- a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak
+++ b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak
@@ -1,5 +1,5 @@
 #**********************************************************************
-# Copyright (c) 2000, 2004 Hewlett-Packard Development Company and others.
+# Copyright (c) 2000, 2007 Hewlett-Packard Development Company and others.
 # All rights reserved. This program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak
index 683c4f9..015ab88 100755
--- a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak
+++ b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak
@@ -1,5 +1,5 @@
 #**********************************************************************
-# Copyright (c) 2000, 2004 Hewlett-Packard Development Company and others.
+# Copyright (c) 2000, 2007 Hewlett-Packard Development Company and others.
 # All rights reserved. This program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileTree.java b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileTree.java
index 7de136c..4bbad62 100644
--- a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileTree.java
+++ b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileTree.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
index 563d63e..f7c66f5 100644
--- a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
+++ b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
@@ -100,10 +100,6 @@ class ImplicitJobs {
 				if (suspend)
 					suspendedRules.add(rule);
 			}
-			if (threadJob.isBlocked) {
-				threadJob.isBlocked = false;
-				manager.reportUnblocked(monitor);
-			}
 		}
 	}
 
@@ -277,14 +273,6 @@ class ImplicitJobs {
 		notifyWaitingThreadJobs(source);
 	}
 
-	synchronized InternalJob findBlockedJob(InternalJob job) {
-		ThreadJob threadJob = (ThreadJob) threadJobs.get(job.getThread());
-		if (threadJob == null) {
-			return manager.findBlockedJob(job, this.manager.waitingThreadJobs.iterator());
-		}
-		return manager.findBlockedJob(threadJob, this.manager.waitingThreadJobs.iterator());
-	}
-
 	synchronized void removeWaiting(ThreadJob threadJob) {
 		synchronized (((InternalJob) threadJob).jobStateLock) {
 			threadJob.isWaiting = false;
@@ -307,8 +295,4 @@ class ImplicitJobs {
 		return (ThreadJob) threadJobs.get(thread);
 	}
 
-	synchronized void resumeJob(ThreadJob job) {
-		final Thread currentThread = Thread.currentThread();
-		threadJobs.put(currentThread, job);
-	}
 }
diff --git a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
index 3da2fa1..a0cfdc6 100644
--- a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
+++ b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
@@ -404,10 +404,9 @@ public class JobManager implements IJobManager {
 						break;
 					case Job.RUNNING :
 					case InternalJob.ABOUT_TO_RUN :
-						if (oldState != InternalJob.YIELDING) {
-							job.setStartTime(InternalJob.T_NONE);
-							job.setWaitQueueStamp(InternalJob.T_NONE);
-						}
+						// These flags must be reset in all cases, including resuming from yield
+						job.setStartTime(InternalJob.T_NONE);
+						job.setWaitQueueStamp(InternalJob.T_NONE);
 						running.add(job);
 						break;
 					case InternalJob.YIELDING :
@@ -1293,20 +1292,38 @@ public class JobManager implements IJobManager {
 		ThreadJob likeThreadJob;
 		synchronized (implicitJobs) {
 			synchronized (lock) {
+				// The nested implicit job, if any
+				likeThreadJob = implicitJobs.getThreadJob(currentThread);
+
 				unblocked = job.previous();
+
 				// if unblocked is not null, it was a blocked job. It is guaranteed
 				// that it will be the next job run by the worker threads once this 
 				// lock is released. 
 				if (unblocked == null) {
-					// look for any implicit (or yielding) jobs we may be blocking. 
-					unblocked = implicitJobs.findBlockedJob(job);
+
+					if (likeThreadJob != null) {
+
+						// look for any explicit jobs we may be blocking
+						unblocked = ((InternalJob) likeThreadJob).previous();
+
+						if (unblocked == null) {
+
+							// look for any implicit (or yielding) jobs we may be blocking. 
+							unblocked = findBlockedJob(likeThreadJob, waitingThreadJobs.iterator());
+						}
+
+					} else {
+
+						// look for any implicit (or yielding) jobs we may be blocking. 
+						unblocked = findBlockedJob(job, waitingThreadJobs.iterator());
+					}
 				}
+
 				// optimization: do nothing if we don't unblock any job
 				if (unblocked == null)
 					return null;
 
-				likeThreadJob = implicitJobs.getThreadJob(currentThread);
-
 				// "release" our rule by exiting RUNNING state
 				changeState(job, InternalJob.YIELDING);
 				if (DEBUG_YIELDING)
diff --git a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
index 4917f7d..bdc15a6 100644
--- a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
+++ b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
@@ -7,6 +7,7 @@
  * 
  * Contributors:
  *     IBM - Initial API and implementation
+ *     James Blackburn (Broadcom Corp.) - Bug 311863 Ordered Lock lost after interrupt
  *******************************************************************************/
 package org.eclipse.core.internal.jobs;
 
@@ -179,14 +180,7 @@ public class OrderedLock implements ILock, ISchedulingRule {
 			//remember the interrupt to throw it later
 			currentThread.interrupt();
 		}
-		if (success) {
-			depth++;
-			updateCurrentOperation();
-		} else {
-			removeFromQueue(semaphore);
-			manager.removeLockWaitThread(currentThread, this);
-		}
-		return success;
+		return updateOperationQueue(semaphore, success);
 	}
 
 	/**
@@ -301,4 +295,27 @@ public class OrderedLock implements ILock, ISchedulingRule {
 		operations.dequeue();
 		setCurrentOperationThread(Thread.currentThread());
 	}
+
+	/**
+	 * We have finished waiting on the given semaphore. Update the operation queue according
+	 * to whether we succeeded in obtaining the lock.
+	 * 
+	 * @param semaphore The semaphore that we waited on
+	 * @param acquired <code>true</code> if we successfully acquired the semaphore, and <code>false</code> otherwise
+	 * @return whether the lock was successfully obtained
+	 */
+	private synchronized boolean updateOperationQueue(Semaphore semaphore, boolean acquired) {
+		// Bug 311863 - Semaphore may have been released concurrently, so check again before discarding it
+		if (!acquired)
+			acquired = semaphore.attempt();
+		if (acquired) {
+			depth++;
+			updateCurrentOperation();
+		} else {
+			removeFromQueue(semaphore);
+			manager.removeLockWaitThread(Thread.currentThread(), this);
+		}
+		return acquired;
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
index 80d5fe3..cd40896 100644
--- a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
+++ b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     James Blackburn (Broadcom Corp.) - Bug 311863 Ordered Lock lost after interrupt
  *******************************************************************************/
 package org.eclipse.core.internal.jobs;
 
@@ -40,6 +41,18 @@ public class Semaphore {
 		}
 	}
 
+	/**
+	 * Attempt to acquire the semaphore without waiting.
+	 * Returns true if successfully acquired, false otherwise.
+	 */
+	public synchronized boolean attempt() {
+		if (notifications > 0) {
+			notifications--;
+			return true;
+		}
+		return false;
+	}
+
 	public boolean equals(Object obj) {
 		return (runnable == ((Semaphore) obj).runnable);
 	}
diff --git a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
index 3a413cf..146559e 100644
--- a/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
+++ b/eclipse/plugins/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
@@ -282,8 +282,9 @@ class ThreadJob extends Job {
 		} finally {
 			if (interrupted)
 				Thread.currentThread().interrupt();
+			//only update the lock state if we ended up using the thread job that was given to us
+			waitEnd(threadJob, threadJob == result, monitor);
 			if (threadJob == result) {
-				waitEnd(threadJob, monitor);
 				if (waiting)
 					manager.implicitJobs.removeWaiting(threadJob);
 			}
@@ -399,16 +400,22 @@ class ThreadJob extends Job {
 	 * to proceed.
 	 * @param monitor The monitor to report unblocking to.
 	 */
-	static private void waitEnd(ThreadJob threadJob, IProgressMonitor monitor) {
-		final LockManager lockManager = manager.getLockManager();
-		final Thread currentThread = Thread.currentThread();
-		if (threadJob.isRunning()) {
-			lockManager.addLockThread(currentThread, threadJob.getRule());
-			//need to re-acquire any locks that were suspended while this thread was blocked on the rule
-			lockManager.resumeSuspendedLocks(currentThread);
-		} else {
-			//tell lock manager that this thread gave up waiting
-			lockManager.removeLockWaitThread(currentThread, threadJob.getRule());
+	static private void waitEnd(ThreadJob threadJob, boolean updateLockManager, IProgressMonitor monitor) {
+		if (updateLockManager) {
+			final LockManager lockManager = manager.getLockManager();
+			final Thread currentThread = Thread.currentThread();
+			if (threadJob.isRunning()) {
+				lockManager.addLockThread(currentThread, threadJob.getRule());
+				//need to re-acquire any locks that were suspended while this thread was blocked on the rule
+				lockManager.resumeSuspendedLocks(currentThread);
+			} else {
+				//tell lock manager that this thread gave up waiting
+				lockManager.removeLockWaitThread(currentThread, threadJob.getRule());
+			}
+		}
+		if (threadJob.isBlocked) {
+			threadJob.isBlocked = false;
+			manager.reportUnblocked(monitor);
 		}
 	}
 
@@ -423,4 +430,11 @@ class ThreadJob extends Job {
 		threadJob.isBlocked = true;
 		manager.reportBlocked(monitor, blockingJob);
 	}
+
+	/**
+	 * ThreadJobs are one-shot jobs, and they must ignore all attempts to schedule them. 
+	 */
+	public boolean shouldSchedule() {
+		return false;
+	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
index e23ee56..3c92687 100644
--- a/eclipse/plugins/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %fragmentName
 Bundle-Vendor: %providerName
 Bundle-Localization: fragment
 Bundle-SymbolicName: org.eclipse.core.net.win32.x86;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0"
 Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86))
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
index d29b637..ff103d7 100644
--- a/eclipse/plugins/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %fragmentName
 Bundle-Vendor: %providerName
 Bundle-Localization: fragment
 Bundle-SymbolicName: org.eclipse.core.net.win32.x86_64;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0"
 Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86_64))
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86/META-INF/MANIFEST.MF
index 1c45f13..9c99a62 100644
--- a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %fragmentName
 Bundle-Vendor: %providerName
 Bundle-Localization: fragment
 Bundle-SymbolicName: org.eclipse.core.net.linux.x86;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.100.qualifier
 Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0"
 Eclipse-PlatformFilter: (& (osgi.os=linux) (osgi.arch=x86))
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
index e23ee56..3c92687 100644
--- a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %fragmentName
 Bundle-Vendor: %providerName
 Bundle-Localization: fragment
 Bundle-SymbolicName: org.eclipse.core.net.win32.x86;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0"
 Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86))
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
index d29b637..ff103d7 100644
--- a/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %fragmentName
 Bundle-Vendor: %providerName
 Bundle-Localization: fragment
 Bundle-SymbolicName: org.eclipse.core.net.win32.x86_64;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0"
 Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86_64))
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.core.resources.win32.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.resources.win32.x86/META-INF/MANIFEST.MF
index ede9a26..403277a 100644
--- a/eclipse/plugins/org.eclipse.core.resources.win32.x86/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.resources.win32.x86/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %win32FragmentName
 Bundle-SymbolicName: org.eclipse.core.resources.win32.x86;singleton:=true
-Bundle-Version: 3.5.0.qualifier
+Bundle-Version: 3.5.100.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)"
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.core.resources/natives/ref.c b/eclipse/plugins/org.eclipse.core.resources/natives/ref.c
index 0c3a48b..5c9907d 100644
--- a/eclipse/plugins/org.eclipse.core.resources/natives/ref.c
+++ b/eclipse/plugins/org.eclipse.core.resources/natives/ref.c
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
 #include <windows.h>
 #include "ref.h"
 
diff --git a/eclipse/plugins/org.eclipse.core.resources/natives/ref.h b/eclipse/plugins/org.eclipse.core.resources/natives/ref.h
index 4bbe648..15c5ba9 100644
--- a/eclipse/plugins/org.eclipse.core.resources/natives/ref.h
+++ b/eclipse/plugins/org.eclipse.core.resources/natives/ref.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * 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
diff --git a/eclipse/plugins/org.eclipse.core.resources/plugin.properties b/eclipse/plugins/org.eclipse.core.resources/plugin.properties
index d82740f..c361062 100644
--- a/eclipse/plugins/org.eclipse.core.resources/plugin.properties
+++ b/eclipse/plugins/org.eclipse.core.resources/plugin.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
-# 
+#
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
@@ -34,5 +34,5 @@ win32FragmentName = Core Resource Management Win32 Fragment
 compatibilityFragmentName = Core Resource Management Compatibility Fragment
 win32MonitorFactoryName = Windows Auto-refresh monitor
 
-regexFilterProvider.description = Matches objects based on a regular expression
+regexFilterProvider.description = Matches file and folder names with a regular expression
 regexFilterProvider.name = Regular Expression
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java
index 88ebfd4..84945db 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -86,7 +86,11 @@ class AutoBuildJob extends Job implements Preferences.IPropertyChangeListener {
 				wakeUp(delay);
 				break;
 			case NONE :
-				setSystem(!isAutoBuilding);
+				try {
+					setSystem(!isAutoBuilding);
+				} catch (IllegalStateException e) {
+					//ignore - the job has been scheduled since we last checked its state
+				}
 				schedule(delay);
 				break;
 		}
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java
index 443acf9..cc9319c 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     Isaac Pacht (isaacp3 at gmail.com) - fix for bug 206540
  * Anton Leherbauer (Wind River) - [305858] Allow Builder to return null rule
+ * James Blackburn (Broadcom) - [306822] Provide Context for Builder getRule()
  *******************************************************************************/
 package org.eclipse.core.internal.events;
 
@@ -991,14 +992,17 @@ public class BuildManager implements ICoreConstants, IManager, ILifecycleListene
 			if (project.isAccessible()) {
 				Set rules = new HashSet();
 				commands = ((Project) project).internalGetDescription().getBuildSpec(false);
+				boolean hasNullBuildRule = false;
 				for (int i = 0; i < commands.length; i++) {
 					BuildCommand command = (BuildCommand) commands[i];
 					try {
 						IncrementalProjectBuilder builder = getBuilder(project, command, i, status);
 						if (builder != null) {
-							ISchedulingRule builderRule = builder.getRule();
+							ISchedulingRule builderRule = builder.getRule(trigger, args);
 							if (builderRule != null)
 								rules.add(builderRule);
+							else 
+								hasNullBuildRule = true;
 						}
 					} catch (CoreException e) {
 						status.add(e.getStatus());
@@ -1006,7 +1010,10 @@ public class BuildManager implements ICoreConstants, IManager, ILifecycleListene
 				}
 				if (rules.isEmpty())
 					return null;
-				return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()]));
+				// Bug 306824 - Builders returning a null rule can't work safely if other builders require a non-null rule
+				// Be pessimistic and fall back to the default build rule (workspace root) in this case.
+				if (!hasNullBuildRule)
+					return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()]));
 			}
 		} else {
 			// Returns the derived resources for the specified builderName
@@ -1014,7 +1021,7 @@ public class BuildManager implements ICoreConstants, IManager, ILifecycleListene
 			try {
 				IncrementalProjectBuilder builder = getBuilder(project, command, -1, status);
 				if (builder != null)
-					return builder.getRule();
+					return builder.getRule(trigger, args);
 
 			} catch (CoreException e) {
 				status.add(e.getStatus());
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/UnifiedTree.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/UnifiedTree.java
index 52dc2a3..64075af 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/UnifiedTree.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/UnifiedTree.java
@@ -339,7 +339,7 @@ public class UnifiedTree {
 		try {
 			final IFileStore store = node.getStore();
 			IFileInfo[] list = fileTree != null ? fileTree.getChildInfos(store) : store.childInfos(EFS.NONE, null);
-			if (list == null)
+			if (list == null || list.length == 0)
 				return NO_CHILDREN;
 			list = ((Resource) node.getResource()).filterChildren(list, false);
 			int size = list.length;
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/File.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/File.java
index acac16d..f67c66f 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/File.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/File.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -402,7 +402,11 @@ public class File extends Resource implements IFile {
 		String name = path.segment(1);
 		// is this a project description file?
 		if (count == 2 && name.equals(IProjectDescription.DESCRIPTION_FILE_NAME)) {
-			((Project) getProject()).updateDescription();
+			Project project = (Project) getProject();
+			project.updateDescription();
+			// Discard stale project natures on ProjectInfo
+			ProjectInfo projectInfo = (ProjectInfo) project.getResourceInfo(false, true);
+			projectInfo.discardNatures();
 			return;
 		}
 		// check to see if we are in the .settings directory
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Filter.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Filter.java
index 602079d..589f74a 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Filter.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Filter.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     Serge Beauchamp (Freescale Semiconductor) - initial API and implementation
  *     IBM Corporation - ongoing implementation
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/IModelObjectConstants.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/IModelObjectConstants.java
index a0f85b6..4a258e9 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/IModelObjectConstants.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/IModelObjectConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     Serge Beauchamp (Freescale Semiconductor) - [252996] add resource filtering
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Project Path Variable Support
+ * Markus Schorn (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
@@ -53,4 +54,5 @@ public interface IModelObjectConstants {
 	public static final String MATCHER = "matcher"; //$NON-NLS-1$
 	public static final String VARIABLE = "variable"; //$NON-NLS-1$
 	public static final String VARIABLE_LIST = "variableList"; //$NON-NLS-1$
+	public static final String SNAPSHOT_LOCATION = "snapshotLocation"; //$NON-NLS-1$
 }
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
index c382ad2..75c8675 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java
index b375572..1628cb7 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     Serge Beauchamp (Freescale Semiconductor) - [252996] add resource filtering
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Group and Project Path Variable Support
+ * Markus Schorn (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
@@ -209,6 +210,10 @@ public class ModelObjectWriter implements IModelObjectConstants {
 			writer.printSimpleTag(NAME, description.getName());
 			String comment = description.getComment();
 			writer.printSimpleTag(COMMENT, comment == null ? "" : comment); //$NON-NLS-1$
+			URI snapshotLocation= description.getSnapshotLocationURI();
+			if (snapshotLocation != null) {
+				writer.printSimpleTag(SNAPSHOT_LOCATION, snapshotLocation.toString());
+			}
 			write(PROJECTS, PROJECT, getReferencedProjects(description), writer);
 			write(BUILD_SPEC, Arrays.asList(description.getBuildSpec(false)), writer);
 			write(NATURES, NATURE, description.getNatureIds(false), writer);
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/OS.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/OS.java
index 9c06d36..49a2c78 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/OS.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/OS.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,7 +21,8 @@ public abstract class OS {
 	private static final String INSTALLED_PLATFORM;
 
 	public static final char[] INVALID_RESOURCE_CHARACTERS;
-	public static final String[] INVALID_RESOURCE_NAMES;
+	private static final String[] INVALID_RESOURCE_BASENAMES;
+	private static final String[] INVALID_RESOURCE_FULLNAMES;
 
 	static {
 		//find out the OS being used
@@ -30,15 +31,18 @@ public abstract class OS {
 		if (INSTALLED_PLATFORM.equals(Platform.OS_WIN32)) {
 			//valid names and characters taken from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/naming_a_file.asp
 			INVALID_RESOURCE_CHARACTERS = new char[] {'\\', '/', ':', '*', '?', '"', '<', '>', '|'};
-			INVALID_RESOURCE_NAMES = new String[] {"aux", "clock$", "com1", "com2", "com3", "com4", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ 
+			INVALID_RESOURCE_BASENAMES = new String[] {"aux", "com1", "com2", "com3", "com4", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ 
 					"com5", "com6", "com7", "com8", "com9", "con", "lpt1", "lpt2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
 					"lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9", "nul", "prn"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$
-			Arrays.sort(INVALID_RESOURCE_NAMES);
+			Arrays.sort(INVALID_RESOURCE_BASENAMES);
+			//CLOCK$ may be used if an extension is provided
+			INVALID_RESOURCE_FULLNAMES = new String[] {"clock$"}; //$NON-NLS-1$
 		} else {
 			//only front slash and null char are invalid on UNIXes
 			//taken from http://www.faqs.org/faqs/unix-faq/faq/part2/section-2.html
 			INVALID_RESOURCE_CHARACTERS = new char[] {'/', '\0',};
-			INVALID_RESOURCE_NAMES = new String[] {}; 
+			INVALID_RESOURCE_BASENAMES = null;
+			INVALID_RESOURCE_FULLNAMES = null;
 		}
 	}
 
@@ -64,8 +68,11 @@ public abstract class OS {
 				return false;
 			int dot = name.indexOf('.');
 			//on windows, filename suffixes are not relevant to name validity
-			name = dot == -1 ? name : name.substring(0, dot);
+			String basename = dot == -1 ? name : name.substring(0, dot);
+			if (Arrays.binarySearch(INVALID_RESOURCE_BASENAMES, basename.toLowerCase()) >= 0)
+				return false;
+			return Arrays.binarySearch(INVALID_RESOURCE_FULLNAMES, name.toLowerCase()) < 0;
 		}
-		return Arrays.binarySearch(INVALID_RESOURCE_NAMES, name.toLowerCase()) < 0;
+		return true;
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
index 47e7819..d6392b1 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
@@ -8,13 +8,12 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Project Path Variable Support
- * Anton Leherbauer (Wind River) - [198591] Allow Builder to specify scheduling rule
- * Francis Lynch (Wind River) - [301563] Save and load tree snapshots
+ *     Anton Leherbauer (Wind River) - [198591] Allow Builder to specify scheduling rule
+ *     Francis Lynch (Wind River) - [301563] Save and load tree snapshots
+ *     Markus Schorn (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
-import org.eclipse.core.runtime.IPath;
-
 import java.net.URI;
 import java.util.*;
 import org.eclipse.core.filesystem.*;
@@ -29,6 +28,21 @@ import org.eclipse.osgi.util.NLS;
 
 public class Project extends Container implements IProject {
 
+	/**
+	 * Option constant (value 2) indicating that the snapshot location shall be
+	 * persisted with the project for autoloading the snapshot when the project
+	 * is imported in another workspace.
+	 * <p>
+	 * <strong>EXPERIMENTAL</strong>. This constant has been added as
+	 * part of a work in progress. There is no guarantee that this API will
+	 * work or that it will remain the same. Please do not use this API without
+	 * consulting with the Platform Core team.
+	 * </p>
+	 * @see #saveSnapshot(int, URI, IProgressMonitor)
+	 * @since 3.6
+	 */
+	public static final int SNAPSHOT_SET_AUTOLOAD = 2;
+	
 	protected Project(IPath path, Workspace container) {
 		super(path, container);
 	}
@@ -63,6 +77,8 @@ public class Project extends Container implements IProject {
 		MultiStatus result = new MultiStatus(ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_WRITE_METADATA, message, null);
 		ProjectDescription current = internalGetDescription();
 		current.setComment(description.getComment());
+		current.setSnapshotLocationURI(description.getSnapshotLocationURI());
+		
 		// set the build order before setting the references or the natures
 		current.setBuildSpec(description.getBuildSpec(true));
 
@@ -201,6 +217,7 @@ public class Project extends Container implements IProject {
 			IProjectDescription desc = getDescription();
 			desc.setName(projectName);
 			desc.setLocation(null);
+			((ProjectDescription)desc).setSnapshotLocationURI(null);
 			internalCopy(desc, updateFlags, monitor);
 		} else {
 			// will fail since we're trying to copy a project to a non-project
@@ -827,14 +844,30 @@ public class Project extends Container implements IProject {
 	/* (non-Javadoc)
 	 * @see IProject#loadSnapshot(int, URI, IProgressMonitor)
 	 */
-	public void loadSnapshot(int options, URI snapshotLocation,
-			IProgressMonitor monitor) throws CoreException {
+	public void loadSnapshot(int options, URI snapshotLocation, IProgressMonitor monitor) throws CoreException {
+		// load a snapshot of refresh information when project is not opened
+		if (isOpen()) {
+			String message = Messages.resources_projectMustNotBeOpen;
+			MultiStatus status = new MultiStatus(ResourcesPlugin.PI_RESOURCES, IStatus.ERROR, message, null);
+			throw new CoreException(status);
+		}
+		internalLoadSnapshot(options, snapshotLocation, monitor);
+	}
+	
+	/**
+	 * Loads a snapshot of project meta-data from the given location URI.
+	 * Like {@link IProject#loadSnapshot(int, URI, IProgressMonitor)} but can be
+	 * called when the project is open.
+	 * 
+	 * @see IProject#saveSnapshot(int, URI, IProgressMonitor) 
+	 */
+	private void internalLoadSnapshot(int options, URI snapshotLocation, IProgressMonitor monitor) throws CoreException {
 		if ((options & SNAPSHOT_TREE) != 0) {
-			// load a snapshot of refresh information when project is opened
-			if (isOpen()) {
-				String message = Messages.resources_projectMustNotBeOpen;
-				MultiStatus status = new MultiStatus(ResourcesPlugin.PI_RESOURCES, IStatus.ERROR, message, null);
-				throw new CoreException(status);
+			// ensure that path variables are resolved: only ws accessible while project is closed
+			snapshotLocation = workspace.getPathVariableManager().resolveURI(snapshotLocation);
+			if (!snapshotLocation.isAbsolute()) {
+				String message = NLS.bind(Messages.projRead_badSnapshotLocation, snapshotLocation.toString());
+				throw new CoreException(new Status(IStatus.WARNING, ResourcesPlugin.PI_RESOURCES, message, null));
 			}
 			// copy the snapshot from the URI into the project metadata
 			IPath snapshotPath = workspace.getMetaArea().getRefreshLocationFor(this);
@@ -842,6 +875,7 @@ public class Project extends Container implements IProject {
 			EFS.getStore(snapshotLocation).copy(snapshotFileStore, EFS.OVERWRITE, monitor);
 		}
 	}
+
 	/* (non-Javadoc)
 	 * @see IProject#move(IProjectDescription, boolean, IProgressMonitor)
 	 */
@@ -930,6 +964,28 @@ public class Project extends Container implements IProject {
 				// the M_USED flag is used to indicate the difference between opening a project
 				// for the first time and opening it from a previous close (restoring it from disk)
 				boolean used = info.isSet(M_USED);
+				boolean snapshotLoaded = false;
+				if (!used && !workspace.getMetaArea().getRefreshLocationFor(this).toFile().exists()) {
+					//auto-load a refresh snapshot if it is set
+					final boolean hasSavedDescription = getLocalManager().hasSavedDescription(this);
+					if (hasSavedDescription) {
+						ProjectDescription updatedDesc = info.getDescription();
+						if (updatedDesc != null) {
+							URI autoloadURI = updatedDesc.getSnapshotLocationURI();
+							if (autoloadURI != null) {
+								try {
+									autoloadURI = getPathVariableManager().resolveURI(autoloadURI);
+									internalLoadSnapshot(SNAPSHOT_TREE, autoloadURI, Policy.subMonitorFor(monitor, Policy.opWork * 5 / 100));
+									snapshotLoaded = true;
+								} catch (CoreException ce) {
+									//Log non-existing autoload snapshot as warning only
+									String msgerr = NLS.bind(Messages.projRead_cannotReadSnapshot, getName(), ce.getLocalizedMessage());
+									Policy.log(new Status(IStatus.WARNING, ResourcesPlugin.PI_RESOURCES, msgerr));
+								}
+							}
+						}
+					}
+				}
 				boolean minorIssuesDuringRestore = false;
 				if (used) {
 					minorIssuesDuringRestore = workspace.getSaveManager().restore(this, Policy.subMonitorFor(monitor, Policy.opWork * 20 / 100));
@@ -940,7 +996,7 @@ public class Project extends Container implements IProject {
 					if (!result.isOK())
 						throw new CoreException(result);
 					workspace.updateModificationStamp(info);
-					monitor.worked(Policy.opWork * 20 / 100);
+					monitor.worked(Policy.opWork * (snapshotLoaded ? 15 : 20) / 100);
 				}
 				startup();
 				//request a refresh if the project is new and has unknown members on disk
@@ -1071,26 +1127,40 @@ public class Project extends Container implements IProject {
 	/* (non-Javadoc)
 	 * @see IProject#saveSnapshot(int, URI, IProgressMonitor)
 	 */
-	public void saveSnapshot(int options, URI snapshotLocation,
-			IProgressMonitor monitor) throws CoreException {
-		if ((options & SNAPSHOT_TREE) != 0) {
-			// write a snapshot of refresh information
-			monitor = Policy.monitorFor(monitor);
-			try {
-				String msg = NLS.bind(Messages.resources_copying, getName());
-				monitor.beginTask(msg, Policy.totalWork);
+	public void saveSnapshot(int options, URI snapshotLocation, IProgressMonitor monitor) throws CoreException {
+		monitor = Policy.monitorFor(monitor);
+		try {
+			monitor.beginTask("", Policy.totalWork); //$NON-NLS-1$
+			//Project must be open such that variables can be resolved
+			checkAccessible(getFlags(getResourceInfo(false, false)));
+			//URI must not be null and must not refer to undefined path variables
+			URI resolvedSnapshotLocation = getPathVariableManager().resolveURI(snapshotLocation);
+			if (resolvedSnapshotLocation == null || !resolvedSnapshotLocation.isAbsolute()) {
+				String message = NLS.bind(Messages.projRead_badSnapshotLocation, resolvedSnapshotLocation);
+				throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, message, null));
+			}
+			if ((options & SNAPSHOT_TREE) != 0) {
+				// write a snapshot of refresh information
 				try {
-					IProgressMonitor sub = Policy.subMonitorFor(monitor, Policy.opWork / 2, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL);
-					workspace.getSaveManager().saveRefreshSnapshot(
-							this, snapshotLocation, sub);
-					monitor.worked(Policy.opWork / 2);
+					IProgressMonitor sub = Policy.subMonitorFor(monitor, Policy.opWork / 2);
+					workspace.getSaveManager().saveRefreshSnapshot(this, resolvedSnapshotLocation, sub);
 				} catch (OperationCanceledException e) {
 					//workspace.getWorkManager().operationCanceled();
 					throw e;
 				}
-			} finally {
-				monitor.done();
 			}
+			if ((options & SNAPSHOT_SET_AUTOLOAD) != 0) {
+				IProgressMonitor sub = Policy.subMonitorFor(monitor, Policy.opWork / 2);
+				//Make absolute URI inside the project relative
+				if (snapshotLocation != null && snapshotLocation.isAbsolute()) {
+					snapshotLocation = getPathVariableManager().convertToRelative(snapshotLocation, false, "PROJECT_LOC"); //$NON-NLS-1$
+				}
+				IProjectDescription desc = getDescription();
+				((ProjectDescription) desc).setSnapshotLocationURI(snapshotLocation);
+				setDescription(desc, IResource.KEEP_HISTORY | IResource.AVOID_NATURE_CONFIG, sub);
+			}
+		} finally {
+			monitor.done();
 		}
 	}
 	
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescription.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescription.java
index 0b56c14..5f4a423 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescription.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescription.java
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     Martin Oberhuber (Wind River) - [245937] setLinkLocation() detects non-change
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Project Path Variable Support
+ * Markus Schorn (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
@@ -18,8 +19,7 @@ import org.eclipse.core.filesystem.URIUtil;
 import org.eclipse.core.internal.events.BuildCommand;
 import org.eclipse.core.internal.utils.FileUtil;
 import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.*;
 
 public class ProjectDescription extends ModelObject implements IProjectDescription {
 	private static final ICommand[] EMPTY_COMMAND_ARRAY = new ICommand[0];
@@ -63,6 +63,7 @@ public class ProjectDescription extends ModelObject implements IProjectDescripti
 	protected URI location = null;
 	protected String[] natures = EMPTY_STRING_ARRAY;
 	protected IProject[] staticRefs = EMPTY_PROJECT_ARRAY;
+	protected URI snapshotLocation= null;
 
 	public ProjectDescription() {
 		super();
@@ -257,6 +258,25 @@ public class ProjectDescription extends ModelObject implements IProjectDescripti
 		return makeCopy ? (IProject[]) staticRefs.clone() : staticRefs;
 	}
 
+	/** 
+	 * Returns the URI to load a resource snapshot from.
+	 * May return <code>null</code> if no snapshot is set.
+	 * <p>
+	 * <strong>EXPERIMENTAL</strong>. This constant has been added as
+	 * part of a work in progress. There is no guarantee that this API will
+	 * work or that it will remain the same. Please do not use this API without
+	 * consulting with the Platform Core team.
+	 * </p>
+	 * @return the snapshot location URI,
+	 *   or <code>null</code>.
+	 * @see IProject#loadSnapshot(int, URI, IProgressMonitor)
+	 * @see #setSnapshotLocationURI(URI)
+	 * @since 3.6
+	 */
+	public URI getSnapshotLocationURI() {
+		return snapshotLocation;
+	}
+
 	/* (non-Javadoc)
 	 * @see IProjectDescription#hasNature(String)
 	 */
@@ -312,10 +332,18 @@ public class ProjectDescription extends ModelObject implements IProjectDescripti
 		if ((variableDescriptions != null) && !variableDescriptions.equals(otherVariables))
 			return true;
 
-		HashMap otherLinks = description.getLinks();
-		if (linkDescriptions == null)
-			return otherLinks != null;
-		return !linkDescriptions.equals(otherLinks);
+		final HashMap otherLinks = description.getLinks();
+		if (linkDescriptions != otherLinks) { 
+			if (linkDescriptions == null || !linkDescriptions.equals(otherLinks))
+				return true;
+		}
+		
+		final URI otherSnapshotLoc= description.getSnapshotLocationURI();
+		if (snapshotLocation != otherSnapshotLoc) {
+			if (snapshotLocation == null || !snapshotLocation.equals(otherSnapshotLoc))
+				return true;
+		}
+		return false;
 	}
 
 	/* (non-Javadoc)
@@ -567,6 +595,25 @@ public class ProjectDescription extends ModelObject implements IProjectDescripti
 		cachedRefs = null;
 	}
 
+	/**
+	 * Sets the location URI for a project snapshot that may be
+	 * loaded automatically when the project is created in a workspace.
+	 * <p>
+	 * <strong>EXPERIMENTAL</strong>. This method has been added as
+	 * part of a work in progress. There is no guarantee that this API will
+	 * work or that it will remain the same. Please do not use this API without
+	 * consulting with the Platform Core team.
+	 * </p>
+	 * @param snapshotLocation the location URI or
+	 *    <code>null</code> to clear the setting 
+	 * @see IProject#loadSnapshot(int, URI, IProgressMonitor)
+	 * @see #getSnapshotLocationURI()
+	 * @since 3.6 
+	 */
+	public void setSnapshotLocationURI(URI snapshotLocation) {
+		this.snapshotLocation = snapshotLocation;
+	}
+
 	public URI getGroupLocationURI(IPath projectRelativePath) {
 		return LinkDescription.VIRTUAL_LOCATION;
 	}
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java
index 9c51c89..93264b2 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java
@@ -8,6 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Project Path Variable Support
+ * Markus Schorn (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
@@ -68,6 +69,8 @@ public class ProjectDescriptionReader extends DefaultHandler implements IModelOb
 	protected static final int S_VARIABLE_NAME = 33;
 	protected static final int S_VARIABLE_VALUE = 34;
 
+	protected static final int S_SNAPSHOT_LOCATION = 35;
+	
 	/**
 	 * Singleton sax parser factory
 	 */
@@ -406,6 +409,9 @@ public class ProjectDescriptionReader extends DefaultHandler implements IModelOb
 			case S_VARIABLE_VALUE :
 				endVariableValue(elementName);
 				break;
+			case S_SNAPSHOT_LOCATION :
+				endSnapshotLocation(elementName);
+				break;
 		}
 		charBuffer.setLength(0);
 	}
@@ -803,6 +809,20 @@ public class ProjectDescriptionReader extends DefaultHandler implements IModelOb
 		projectDescription.setReferencedProjects(projects);
 	}
 
+	private void endSnapshotLocation(String elementName) {
+		if (elementName.equals(SNAPSHOT_LOCATION)) {
+			String location = charBuffer.toString().trim();
+			try {
+				projectDescription.setSnapshotLocationURI(new URI(location));
+			} catch (URISyntaxException e) {
+				String msg = NLS.bind(Messages.projRead_badSnapshotLocation, location);
+				problems.add(new Status(IStatus.WARNING, ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_READ_METADATA, msg, e));
+			}
+			state = S_PROJECT_DESC;
+		}
+	}
+
+	
 	/**
 	 * @see ErrorHandler#error(SAXParseException)
 	 */
@@ -885,6 +905,10 @@ public class ProjectDescriptionReader extends DefaultHandler implements IModelOb
 			state = S_VARIABLE_LIST;
 			return;
 		}
+		if (elementName.equals(SNAPSHOT_LOCATION)) {
+			state = S_SNAPSHOT_LOCATION;
+			return;
+		}	
 	}
 
 	public ProjectDescription read(InputSource input) {
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectInfo.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectInfo.java
index e67d5ba..af16c9f 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectInfo.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,6 +31,14 @@ public class ProjectInfo extends ResourceInfo {
 	protected IContentTypeMatcher matcher = null;
 
 	/**
+	 * Discards stale natures on this project after project description
+	 * has changed.
+	 */
+	public synchronized void discardNatures() {
+		natures = null;
+	}
+
+	/**
 	 * Discards any stale state on this project after it has been moved.  Builder
 	 * instances must be cleared because they reference the old project handle.
 	 */
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java
index 89f80d2..10276e1 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java
@@ -2074,19 +2074,27 @@ public abstract class Resource extends PlatformObject implements IResource, ICor
 		return false;
 	}
 	
-	public IFileInfo[] filterChildren(IFileInfo[] list, boolean throwExeception) throws CoreException {
-		IPath relativePath = getProjectRelativePath();
+	public IFileInfo[] filterChildren(IFileInfo[] list, boolean throwException) throws CoreException {
 		Project project = (Project) getProject();
-		if ((project != null) && (relativePath != null)) {
-			LinkedList/*<Filter>*/currentIncludeFilters = new LinkedList/*<FilterDescription>*/();
-			LinkedList/*<Filter>*/currentExcludeFilters = new LinkedList/*<FilterDescription>*/();
-			LinkedList/*<FilterDescription>*/filters = null;
-			if (project.internalGetDescription() != null) {
-				filters = project.internalGetDescription().getFilter(relativePath);
-				if (filters != null) {
-					Iterator/*FilterDescription*/it = filters.iterator();
-					while (it.hasNext()) {
-						FilterDescription desc = (FilterDescription) it.next();
+		if (project == null)
+			return list;
+		final ProjectDescription description = project.internalGetDescription();
+		if (description == null)
+			return list;
+		IPath relativePath = getProjectRelativePath();
+		LinkedList/*<Filter>*/currentIncludeFilters = new LinkedList/*<FilterDescription>*/();
+		LinkedList/*<Filter>*/currentExcludeFilters = new LinkedList/*<FilterDescription>*/();
+		LinkedList/*<FilterDescription>*/filters = null;
+		
+		boolean firstSegment = true;
+		do {
+			if (!firstSegment)
+				relativePath = relativePath.removeLastSegments(1);
+			filters = description.getFilter(relativePath);
+			if (filters != null) {
+				for (Iterator it = filters.iterator(); it.hasNext();) {
+					FilterDescription desc = (FilterDescription) it.next();
+					if (firstSegment || desc.isInheritable()) {
 						Filter filter = new Filter(project, desc);
 						if (filter.isIncludeOnly()) {
 							if (filter.isFirst())
@@ -2101,39 +2109,16 @@ public abstract class Resource extends PlatformObject implements IResource, ICor
 						}
 					}
 				}
-				// verify inherited filters
-				while (relativePath.segmentCount() > 0) {
-					relativePath = relativePath.removeLastSegments(1);
-					filters = project.internalGetDescription().getFilter(relativePath);
-					if (filters != null) {
-						Iterator/*FilterDescription*/it = filters.iterator();
-						while (it.hasNext()) {
-							FilterDescription desc = (FilterDescription) it.next();
-							if (desc.isInheritable()) {
-								Filter filter = new Filter(project, desc);
-								if (filter.isIncludeOnly()) {
-									if (filter.isFirst())
-										currentIncludeFilters.addFirst(filter);
-									else
-										currentIncludeFilters.addLast(filter);
-								} else {
-									if (filter.isFirst())
-										currentExcludeFilters.addFirst(filter);
-									else
-										currentExcludeFilters.addLast(filter);
-								}
-							}
-						}
-					}
-				}
 			}
-			if ((currentIncludeFilters.size() > 0) || (currentExcludeFilters.size() > 0)) {
-				try {
-					list = Filter.filter(project, currentIncludeFilters, currentExcludeFilters, (IContainer) this, list);
-				} catch (CoreException e) {
-					if (throwExeception)
-						throw e;
-				}
+			firstSegment = false;
+		} while (relativePath.segmentCount() > 0);
+		
+		if ((currentIncludeFilters.size() > 0) || (currentExcludeFilters.size() > 0)) {
+			try {
+				list = Filter.filter(project, currentIncludeFilters, currentExcludeFilters, (IContainer) this, list);
+			} catch (CoreException e) {
+				if (throwException)
+					throw e;
 			}
 		}
 		return list;
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/VariableDescription.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/VariableDescription.java
index 3104327..1b5090e 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/VariableDescription.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/VariableDescription.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     Serge Beauchamp (Freescale Semiconductor) - initial API and implementation
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Messages.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Messages.java
index fc85708..f3200d3 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Messages.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Messages.java
@@ -10,6 +10,7 @@
  *     Serge Beauchamp (Freescale Semiconductor) - [252996] add resource filtering
  *     Serge Beauchamp (Freescale Semiconductor) - [229633] Group and Project Path Variable Support
  * Francis Lynch (Wind River) - [301563] Save and load tree snapshots
+ * Martin Oberhuber (Wind River) - [306575] Save snapshot location with project
  *******************************************************************************/
 package org.eclipse.core.internal.utils;
 
@@ -130,6 +131,8 @@ public class Messages extends NLS {
 	public static String projRead_badLinkType;
 	public static String projRead_badLinkType2;
 	public static String projRead_badLocation;
+	public static String projRead_badSnapshotLocation;
+	public static String projRead_cannotReadSnapshot;
 	public static String projRead_emptyFilterName;
 	public static String projRead_emptyLinkName;
 	public static String projRead_emptyVariableName;
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties
index c63b018..734015d 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties
@@ -10,6 +10,7 @@
 #     Serge Beauchamp (Freescale Semiconductor) - [252996] add resource filtering
 #     Serge Beauchamp (Freescale Semiconductor) - [229633] Group and Project Path Variable Support
 # Francis Lynch (Wind River) - [301563] Save and load tree snapshots
+# Martin Oberhuber (Wind River) - [306575] Save snapshot location with project
 ###############################################################################
 ### Resources plugin messages.
 
@@ -125,6 +126,8 @@ projRead_badLinkLocation = Empty location detected for linked resource with name
 projRead_whichKey = Two values detected for an argument name in a build command:  ''{0}'' and ''{1}''.  Using ''{0}''.
 projRead_whichValue = Two values detected for an argument value in a build command:  ''{0}'' and ''{1}''.  Using ''{0}''.
 projRead_notProjectDescription = Encountered element name ''{0}'' instead of \"project\" when trying to read a project description file.
+projRead_badSnapshotLocation = Invalid resource snapshot location URI ''{0}'' is not absolute.
+projRead_cannotReadSnapshot = Failed to read resource snapshot for project ''{0}'': {1}
 projRead_failureReadingProjectDesc = Failure occurred reading .project file.
 
 projRead_emptyVariableName = Empty variable name detected in project "{0}\".
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
index 484a7ab..06c3f9e 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
@@ -2475,7 +2475,7 @@ public interface IResource extends IAdaptable, ISchedulingRule {
 	 * @exception CoreException if this method fails. Reasons include:
 	 * <ul>
 	 * <li> Resource changes are disallowed during certain types of resource change 
-	 *       event notification. See <code>IResourceChangeEvent</code> for more details.</li>
+	 *       event notification. See {@link IResourceChangeEvent} for more details.</li>
 	 * </ul>
 	 * @exception OperationCanceledException if the operation is canceled. 
 	 * Cancelation can occur even if no progress monitor is provided.
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IWorkspace.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IWorkspace.java
index 2ee6ac7..208cf9f 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IWorkspace.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IWorkspace.java
@@ -1285,7 +1285,8 @@ public interface IWorkspace extends IAdaptable {
 	 * 
 	 * @deprecated it is no longer possible to override the workspace lock
 	 * behavior. This functionality is now provided in the platform API by
-	 * subclassing the {@link LockListener} class.
+	 * subclassing the {@link LockListener} class. This API will be deleted
+	 * in a future release. See bug 311240 for details.
 	 */
 	public void setWorkspaceLock(WorkspaceLock lock);
 
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IncrementalProjectBuilder.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IncrementalProjectBuilder.java
index 8983360..35f7ec2 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IncrementalProjectBuilder.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/IncrementalProjectBuilder.java
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  * Anton Leherbauer (Wind River) - [198591] Allow Builder to specify scheduling rule
  * Anton Leherbauer (Wind River) - [305858] Allow Builder to return null rule
+ * James Blackburn (Broadcom) - [306822] Provide Context for Builder getRule()
  *******************************************************************************/
 package org.eclipse.core.resources;
 
@@ -231,7 +232,7 @@ public abstract class IncrementalProjectBuilder extends InternalBuilder implemen
 	 * </p>
 	 * <p>
 	 * The delta does not include changes made while this builder is running.
-	 * If {@link #getRule()} is overridden to return a scheduling rule other than 
+	 * If {@link #getRule(int, Map)} is overridden to return a scheduling rule other than 
 	 * the workspace root, changes performed in other threads during the build
 	 * will not appear in the resource delta.
 	 * </p>
@@ -355,6 +356,21 @@ public abstract class IncrementalProjectBuilder extends InternalBuilder implemen
 	 * the project for which this builder is defined. The default 
 	 * is the workspace root rule.
 	 * 
+	 * @return a scheduling rule which is contained in the workspace root rule or <code>null</code>
+	 * @since 3.5
+	 * @see #getRule(int, Map)
+	 * @deprecated clients should call and override {@link #getRule(int, Map)} instead.
+	 */
+	public ISchedulingRule getRule() {
+		return ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	/**
+	 * Returns the scheduling rule that is required for building 
+	 * the project for which this builder is defined. The default 
+	 * is {@link #getRule()}, which returns the workspace root 
+	 * rule unless overridden.
+	 * <p>
 	 * The scheduling rule determines which resources in the workspace are 
 	 * protected from being modified by other threads while the builder is running. Up until
 	 * Eclipse 3.5, the entire workspace was always locked during a build;
@@ -376,16 +392,33 @@ public abstract class IncrementalProjectBuilder extends InternalBuilder implemen
 	 * If this method returns any rule other than the workspace root,
 	 * resources outside of the rule scope can be modified concurrently with the build. 
 	 * The delta returned by {@link #getDelta(IProject)} for any project
-	 * outside the scope of the builder's rule will not contain changes that occurred 
+	 * outside the scope of the builder's rule may not contain changes that occurred 
 	 * concurrently with the build.
 	 * </ul>
 	 * </p>
+	 * <p>
+	 * Subclasses may override this method.
+	 * </p>
+	 * @noreference This method is not intended to be referenced by clients.
 	 * 
-	 * @return a scheduling rule which is contained in the workspace root rule or <code>null</code>
+	 * @param kind the kind of build being requested. Valid values include:
+	 * <ul>
+	 * <li>{@link #FULL_BUILD} - indicates a full build.</li>
+	 * <li>{@link #INCREMENTAL_BUILD} - indicates an incremental build.</li>
+	 * <li>{@link #AUTO_BUILD} - indicates an automatically triggered
+	 * incremental build (autobuilding on).</li>
+	 * <li>{@link #CLEAN_BUILD} - indicates a clean request.</li>
+	 * </ul>
+	 * @param args a table of builder-specific arguments keyed by argument name
+	 * (key type: <code>String</code>, value type: <code>String</code>);
+	 * <code>null</code> is equivalent to an empty map.
+	 * @return a scheduling rule which is contained in the workspace root rule 
+	 *   or <code>null</code> to indicate that no protection against resource
+	 *   modification during the build is needed.
 	 * 
-	 * @since 3.5
+	 * @since 3.6
 	 */
-	public ISchedulingRule getRule() {
-		return ResourcesPlugin.getWorkspace().getRoot();
+	public ISchedulingRule getRule(int kind, Map args) {
+		return getRule();
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/ResourceAttributes.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/ResourceAttributes.java
index cc76055..3c97408 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/ResourceAttributes.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/ResourceAttributes.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 Red Hat Incorporated and others
+ * Copyright (c) 2004, 2010 Red Hat Incorporated and others
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/WorkspaceLock.java b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/WorkspaceLock.java
index 3cf04ab..fd1c7e8 100644
--- a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/WorkspaceLock.java
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/WorkspaceLock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,7 +19,8 @@ import org.eclipse.core.runtime.CoreException;
  * @see IWorkspace#setWorkspaceLock(WorkspaceLock)
  * @deprecated it is no longer possible to override the workspace lock behavior.
  * This functionality is now provided in the platform API by implementing the
- * org.eclipse.core.runtime.jobs.ILockListener interface.
+ * org.eclipse.core.runtime.jobs.ILockListener interface. This API will be deleted
+ * in a future release. See bug 311240 for details.
  */
 public class WorkspaceLock {
 
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/filtermatchers/package.html b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/filtermatchers/package.html
new file mode 100644
index 0000000..7f43f8e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/filtermatchers/package.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="IBM">
+   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
+   <title>Package-level Javadoc</title>
+</head>
+<body>
+Provides APIs intended to be implemented by the resource filter matchers.
+
+<h2>Package Specification</h2>
+<p>
+This package specifies the APIs in the Resources plug-in that are intended 
+to be implemented and used by plug-ins using the <tt>filterMatchers</tt> extension point.
+<p>
+ at since 3.6
+<p>
+
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/variableresolvers/package.html b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/variableresolvers/package.html
new file mode 100644
index 0000000..6a477ad
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.core.resources/src/org/eclipse/core/resources/variableresolvers/package.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="IBM">
+   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
+   <title>Package-level Javadoc</title>
+</head>
+<body>
+Provides APIs intended to be implemented by the path variable providers.
+
+<h2>Package Specification</h2>
+<p>
+This package specifies the APIs in the Resources plug-in that are intended 
+to be implemented and used by plug-ins using the <tt>variableResolvers</tt> extension point.
+<p>
+ at since 3.6
+<p>
+
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/META-INF/MANIFEST.MF
index 6ebbc5c..321e2f8 100644
--- a/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.core.runtime.compatibility.auth
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Import-Package: org.eclipse.osgi.framework.log,
diff --git a/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/src/org/eclipse/core/internal/runtime/auth/AuthorizationDatabase.java b/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/src/org/eclipse/core/internal/runtime/auth/AuthorizationDatabase.java
index 8e201b4..e96eb81 100644
--- a/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/src/org/eclipse/core/internal/runtime/auth/AuthorizationDatabase.java
+++ b/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth/src/org/eclipse/core/internal/runtime/auth/AuthorizationDatabase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -91,7 +91,7 @@ public class AuthorizationDatabase {
 		Assert.isNotNull(filename);
 		Assert.isNotNull(password);
 		this.password = password;
-		file = new File(filename);
+		file = new File(filename).getAbsoluteFile();
 		load();
 	}
 
diff --git a/eclipse/plugins/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
index 04b35e8..a1426ac 100644
--- a/eclipse/plugins/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.100.qualifier
 Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true
 Bundle-Vendor: %providerName
 Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator
diff --git a/eclipse/plugins/org.eclipse.core.variables/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.core.variables/META-INF/MANIFEST.MF
index b4215c6..906536f 100644
--- a/eclipse/plugins/org.eclipse.core.variables/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.core.variables/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.core.variables; singleton:=true
-Bundle-Version: 3.2.300.qualifier
+Bundle-Version: 3.2.400.qualifier
 Bundle-Activator: org.eclipse.core.variables.VariablesPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.core.variables/plugin.xml b/eclipse/plugins/org.eclipse.core.variables/plugin.xml
index 38ae466..4e14563 100644
--- a/eclipse/plugins/org.eclipse.core.variables/plugin.xml
+++ b/eclipse/plugins/org.eclipse.core.variables/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2006 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java
index 5dbbf4e..811a89f 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java
@@ -1,599 +1,599 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * A launch configuration describes how to launch an application.
- * Each launch configuration is an instance of a type of launch
- * configuration as described by a launch configuration type 
- * extension. Each launch configuration has a launch configuration
- * delegate which performs the actual launching of a
- * configuration.
- * <p>
- * A launch configuration may be shared in a repository via
- * standard VCM mechanisms, or may be stored locally, essentially
- * making the launch configuration private for a single user.
- * Thus, a launch configuration may stored as a file in the
- * workspace (shared), or as a file in the debug plug-in's state
- * location.
- * </p>
- * A launch configuration is a handle to its underlying storage.
- * Methods annotated as "handle-only" do not require a configuration
- * to exist. Methods that require an underlying configuration to exist
- * throw a <code>CoreException</code> when an underlying configuration
- * is missing.
- * </p>
- * <p>
- * A launch configuration is modified by obtaining a working copy
- * of a launch configuration, modifying the working copy, and then
- * saving the working copy.
- * </p>
- * <p>
- * Clients that define a launch configuration delegate extension implement the
- * <code>ILaunchConfigurationDelegate</code> interface.
- * </p>
- * @see ILaunchConfigurationType
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate
- * @see ILaunchConfigurationWorkingCopy
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchConfiguration extends IAdaptable {
-	
-	/**
-	 * The file extension for launch configuration files
-	 * (value <code>"launch"</code>).
-	 */
-	public static final String LAUNCH_CONFIGURATION_FILE_EXTENSION = "launch"; //$NON-NLS-1$
-	
-	/**
-	 * Launch configuration attribute storing an identifier of
-	 * a persistable source locator extension. When this attribute is
-	 * specified, a new source locator will be created automatically and
-	 * associated with the launch for this configuration.
-	 * 
-	 * @see org.eclipse.debug.core.model.IPersistableSourceLocator
-	 */
-	public static final String ATTR_SOURCE_LOCATOR_ID = DebugPlugin.getUniqueIdentifier() + ".source_locator_id"; //$NON-NLS-1$
-	
-	/**
-	 * Launch configuration attribute storing a memento of a 
-	 * source locator. When this attribute is specified in
-	 * conjunction with a source locator id, the source locator
-	 * created for a launch will be initialized with this memento.
-	 * When not specified, but a source locator id is specified,
-	 * the source locator will be initialized to default values.
-	 * 
-	 * @see org.eclipse.debug.core.model.IPersistableSourceLocator
-	 */
-	public static final String ATTR_SOURCE_LOCATOR_MEMENTO = DebugPlugin.getUniqueIdentifier() + ".source_locator_memento"; //$NON-NLS-1$
-	
-	/**
-	 * Returns whether the contents of this launch configuration are 
-	 * equal to the contents of the given launch configuration.
-	 * 
-	 * @param configuration launch configuration
-	 * @return whether the contents of this launch configuration are equal to the contents
-	 * of the specified launch configuration.
-	 */
-	public boolean contentsEqual(ILaunchConfiguration configuration);
-	
-	/**
-	 * Returns a copy of this launch configuration, as a
-	 * working copy, with the specified name. The new
-	 * working copy does not refer back to this configuration
-	 * as its original launch configuration (the working copy
-	 * will return <code>null</code> for <code>getOriginal()</code>).
-	 * When the working copy is saved it will not effect this
-	 * launch configuration.
-	 * 
-	 * @param name the name of the copy
-	 * @return a copy of this launch configuration
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while initializing the contents of the
-	 * working copy from this configuration's underlying storage.</li>
-	 * </ul>
-	 * @see ILaunchConfigurationWorkingCopy#getOriginal()
-	 */
-	public ILaunchConfigurationWorkingCopy copy(String name) throws CoreException;
-	
-	/**
-	 * Deletes this launch configuration. This configuration's underlying
-	 * storage is deleted. Has no effect if this configuration
-	 * does not exist.
-	 * 
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while deleting this configuration's
-	 *  underlying storage.</li>
-	 * </ul>
-	 */
-	public void delete() throws CoreException;
-	
-	/**
-	 * Returns whether this launch configuration's underlying
-	 * storage exists. This is a handle-only method.
-	 * 
-	 * @return whether this launch configuration's underlying
-	 *  storage exists
-	 */
-	public boolean exists();
-	
-	/**
-	 * Returns the boolean-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have a boolean value</li>
-	 * </ul>
-	 */
-	public boolean getAttribute(String attributeName, boolean defaultValue) throws CoreException;
-		
-	/**
-	 * Returns the integer-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have an integer value</li>
-	 * </ul>
-	 */
-	public int getAttribute(String attributeName, int defaultValue) throws CoreException;
-	
-	/**
-	 * Returns the <code>java.util.List</code>-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have a List value</li>
-	 * </ul>
-	 */
-	public List getAttribute(String attributeName, List defaultValue) throws CoreException;
-	
-	/**
-	 * Returns the <code>java.util.Set</code>-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have a List value</li>
-	 * </ul>
-	 * 
-	 * @since 3.3
-	 */
-	public Set getAttribute(String attributeName, Set defaultValue) throws CoreException;
-	
-	/**
-	 * Returns the <code>java.util.Map</code>-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have a Map value</li>
-	 * </ul>
-	 */
-	public Map getAttribute(String attributeName, Map defaultValue) throws CoreException;
-	
-	/**
-	 * Returns the string-valued attribute with the given name.  
-	 * Returns the given default value if the attribute is undefined.
-	 *
-	 * @param attributeName the name of the attribute
-	 * @param defaultValue the value to use if no value is found
-	 * @return the value or the default value if no value was found.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while retrieving the attribute from
-	 *  underlying storage.</li>
-	 * <li>An attribute with the given name exists, but does not
-	 *  have a String value</li>
-	 * </ul>
-	 */
-	public String getAttribute(String attributeName, String defaultValue) throws CoreException;
-	
-	/**
-	 * Returns a map containing the attributes in this launch configuration.
-	 * Returns an empty map if this configuration has no attributes.
-	 * <p>
-	 * Modifying the map does not affect this launch configuration's attributes.
-	 * A launch configuration is modified by obtaining a working copy of that
-	 * launch configuration, modifying the working copy, and then saving the working
-	 * copy.
-	 * </p>
-	 * @return a map of attribute keys and values
-	 * @exception CoreException unable to generate/retrieve an attribute map
-	 * @since 2.1
-	 */
-	public Map getAttributes() throws CoreException;
-	
-	/**
-	 * Returns this launch configuration's type's category, or <code>null</code>
-	 * if unspecified. This is a handle-only method.
-	 * 
-	 * @return this launch configuration's type's category, or <code>null</code>
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
-	 * </ul>
-	 * @since 2.1
-	 */
-	public String getCategory() throws CoreException;
-	
-	/**
-	 * Returns the file this launch configuration is stored
-	 * in, or <code>null</code> if this configuration is stored
-	 * locally with the workspace. This is a handle-only method.
-	 * 
-	 * @return the file this launch configuration is stored
-	 *  in, or <code>null</code> if this configuration is stored
-	 *  locally with the workspace
-	 */
-	public IFile getFile();
-		
-	/**
-	 * Returns the location of this launch configuration as a
-	 * path in the local file system or <code>null</code> if it cannot
-	 * be mapped to a location in the local file system. This is a handle-only method.
-	 * <p>
-	 * Since 3.5, this method can return <code>null</code>. For example, when a
-	 * launch configuration is stored in the workspace as an {@link IFile} in
-	 * an external file system ({@link EFS}).
-	 * </p>
-	 * 
-	 * @return the location of this launch configuration as a
-	 *  path file system or <code>null</code> if it cannot be mapped
-	 *  to a location in the local file system. Since 3.5, this method
-	 *  can return <code>null</code>.
-	 * @deprecated Since a launch configuration does not need to be stored in the local
-	 *  file system, this attribute should no longer be used to identify a launch configuration.
-	 */
-	public IPath getLocation();
-	
-	/**
-	 * Returns the resources this launch configuration is associated with or <code>null</code>
-	 * if none. Clients contributing launch configuration types are responsible for maintaining
-	 * resource mappings as appropriate.
-	 * 
-	 * @return the resources this launch configuration is associated with or <code>null</code>
-	 * @throws CoreException unable to get the mapped resource
-	 * @since 3.2
-	 */
-	public IResource[] getMappedResources() throws CoreException;
-		
-	/**
-	 * Returns a memento for this launch configuration, or <code>null</code>
-	 * if unable to generate a memento for this configuration. A memento
-	 * can be used to re-create a launch configuration, via the
-	 * launch manager.
-	 * 
-	 * @return a memento for this configuration
-	 * @see ILaunchManager#getLaunchConfiguration(String)
-	 * @exception CoreException if an exception occurs generating this
-	 *  launch configuration's memento 
-	 */
-	public String getMemento() throws CoreException;
-	
-	/**
-	 * Returns the name of this launch configuration. This is
-	 * a handle-only method.
-	 * 
-	 * @return the name of this launch configuration
-	 */
-	public String getName();		
-	
-	/**
-	 * Returns the launch modes that have been set on this configuration.
-	 * An empty set is returned if no specific launch modes have been set
-	 * on a launch configuration. 
-	 * <p>
-	 * Setting launch modes on a configuration allows a launch to be
-	 * performed in mixed mode - for example, debug and profile at the
-	 * same time.
-	 * </p>
-	 * @return this configuration's launch modes, possibly an empty set
-	 * @exception CoreException if an exception occurs retrieving modes
-	 * @since 3.3
-	 */
-	public Set getModes() throws CoreException;
-	
-	/**
-	 * Returns the preferred launch delegate that has been set on this
-	 * configuration or <code>null</code> if one is not specified.
-	 * 
-	 * @param modes mode set for which a preferred delegate has been requested
-	 * @return this configuration's preferred launch delegate for the specified mode set, or  
-	 * 	<code>null</code> if one is not specified
-	 * @exception CoreException if an exception occurs retrieving preferred delegate
-	 * @since 3.3
-	 */
-	public ILaunchDelegate getPreferredDelegate(Set modes) throws CoreException;
-	
-	/**
-	 * Returns the type of this launch configuration. This is a
-	 * handle-only method.
-	 * 
-	 * @return the type of this launch configuration
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
-	 * </ul>
-	 * @see ILaunchConfigurationType
-	 */
-	public ILaunchConfigurationType getType() throws CoreException;	
-	
-	/**
-	 * Returns a working copy of this launch configuration.
-	 * Since 3.3, if this method is called on a working copy, a nested working 
-	 * copy is created (a working copy of a working copy).
-	 * Changes to the working copy will be applied to this
-	 * launch configuration when saved, or to the parent working copy. 
-	 * The working copy will refer to this launch configuration as its original
-	 * launch configuration, or the working copy it was created from.
-	 * <p>
-	 * When a working copy (B) is created from a working copy (A), the newly
-	 * created working copy (B) is initialized with the attributes from
-	 * the first working copy (A). Whenever a working copy is saved, it is written
-	 * back to the working copy from which it was created: in this example working 
-	 * copy B will write back to working copy A, and A will write back to the 
-	 * original launch configuration.
-	 * </p>
-	 * @return a working copy of this launch configuration, or a nested working copy if called
-	 * on an instance of <code>ILaunchConfigurationWorkingCopy</code>
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>An exception occurs while initializing the contents of the
-	 * working copy from this configuration's underlying storage.</li>
-	 * </ul>
-	 * @see ILaunchConfigurationWorkingCopy#getOriginal()
-	 */
-	public ILaunchConfigurationWorkingCopy getWorkingCopy() throws CoreException;
-	
-	/**
-	 * Returns whether this configuration contains an attribute with the given name.
-	 * 
-	 * @param attributeName the name of the attribute
-	 * @return true if this configuration has the specified attribute false otherwise
-	 * @throws CoreException if unable to retrieve attributes
-	 * 
-	 * @since 3.4
-	 */
-	public boolean hasAttribute(String attributeName) throws CoreException;
-	
-	/**
-	 * Returns whether this launch configuration is stored
-	 * locally within the workspace. This is a handle-only method.
-	 * 
-	 * @return whether this launch configuration is stored
-	 *  locally with the workspace
-	 */
-	public boolean isLocal();
-	
-	/**
-	 * Returns whether this launch configuration is a candidate for migration.
-	 * 
-	 * @return whether this launch configuration is a candidate for migration
-	 * @throws CoreException
-	 * @see ILaunchConfigurationMigrationDelegate
-	 * @since 3.2
-	 */
-	public boolean isMigrationCandidate() throws CoreException ;
-	
-	/**
-	 * Returns whether this launch configuration is a working
-	 * copy. Launch configurations which return <code>true</code>
-	 * to this method can be safely cast to 
-	 * <code>org.eclipse.debug.core.ILaunchConfigurationWorkingCopy</code>.
-	 * This is a handle-only method.
-	 * 
-	 * @return whether this launch configuration is a working
-	 *  copy
-	 */
-	public boolean isWorkingCopy();
-	
-	/**
-	 * Launches this configuration in the specified mode by delegating to
-	 * this configuration's launch configuration delegate, and returns the
-	 * resulting launch.
-	 * <p>
-	 * Equivalent to calling <code>launch(String, IProgressMontitor, boolean)</code>
-	 * with a <code>build</code> flag of <code>false</code>.
-	 * </p>
-	 * @param mode the mode in which to launch, one of the mode constants
-	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
-	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
-	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
-	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
-	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
-	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
-	 * @return the resulting launch
-	 * @exception CoreException if this method fails. Reasons include:<ul>
-	 * <li>unable to instantiate the underlying launch configuration delegate</li>
-	 * <li>the launch fails (in the delegate)</code>
-	 * </ul>
-	 */
-	public ILaunch launch(String mode, IProgressMonitor monitor) throws CoreException;
-	
-	/**
-	 * Launches this configuration in the specified mode by delegating to
-	 * this configuration's launch configuration delegate, and returns the
-	 * resulting launch.
-	 * <p>
-	 * If this configuration's launch delegate implements
-	 * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
-	 * be consulted to provide a launch object for the launch,
-	 * perform pre-launch checks, and build before the launch.
-	 * If <code>build</code> is <code>true</code> and the associated launch
-	 * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
-	 * an incremental workspace build will be performed before the launch
-	 * by the debug platform.
-	 * </p>
-	 * <p>
-	 * The resulting launch object is registered with the launch manager
-	 * before passing it to this configuration's delegate launch method, for
-	 * contributions (debug targets and processes).
-	 * </p>
-	 * <p>
-	 * If the delegate contributes a source locator to the launch, that
-	 * source locator is used. Otherwise an appropriate source locator is
-	 * contributed to the launch  based on the values of
-	 * <code>ATTR_SOURCE_LOCATOR_ID</code> and
-	 * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
-	 * the given progress monitor), the launch is removed from the launch
-	 * manager. The launch is returned whether canceled or not. Invoking this
-	 * method causes the underlying launch configuration delegate to be
-	 * instantiated (if not already).
-	 * </p>
-	 * @param mode the mode in which to launch, one of the mode constants
-	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
-	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
-	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
-	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
-	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
-	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
-	 * @param build whether the workspace should be built before the launch
-	 * @return resulting launch
-	 * @throws CoreException if an exception occurs during the launch sequence
-	 * @since 3.0
-	 */
-	public ILaunch launch(String mode, IProgressMonitor monitor, boolean build) throws CoreException;	
-	
-	/**
-	 * Launches this configuration in the specified mode by delegating to
-	 * this configuration's launch configuration delegate, and returns the
-	 * resulting launch.
-	 * <p>
-	 * If this configuration's launch delegate implements
-	 * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
-	 * be consulted to provide a launch object for the launch,
-	 * perform pre-launch checks, and build before the launch.
-	 * If <code>build</code> is <code>true</code> and the associated launch
-	 * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
-	 * an incremental workspace build will be performed before the launch
-	 * by the debug platform.
-	 * </p>
-	 * <p>
-	 * When <code>register</code> is <code>true</code>, the resulting launch object
-	 * is registered with the launch manager before passing it to this configuration's delegate
-	 * launch method, for contributions (debug targets and processes). When
-	 * <code>register</code> is <code>false</code>, the launch is not registered with
-	 * the launch manager. Clients that launch configurations without registering
-	 * a launch should register appropriate debug event filters to intercept events
-	 * from unregistered launches.
-	 * </p>
-	 * <p>
-	 * If the delegate contributes a source locator to the launch, that
-	 * source locator is used. Otherwise an appropriate source locator is
-	 * contributed to the launch  based on the values of
-	 * <code>ATTR_SOURCE_LOCATOR_ID</code> and
-	 * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
-	 * the given progress monitor), the launch is removed from the launch
-	 * manager. The launch is returned whether canceled or not. Invoking this
-	 * method causes the underlying launch configuration delegate to be
-	 * instantiated (if not already).
-	 * </p>
-	 * @param mode the mode in which to launch, one of the mode constants
-	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
-	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
-	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
-	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
-	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
-	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
-	 * @param build whether the workspace should be built before the launch
-	 * @param register whether to register the resulting launch with the launch manager
-	 * @return resulting launch
-	 * @throws CoreException if an exception occurs during the launch sequence
-	 * @since 3.1
-	 */
-	public ILaunch launch(String mode, IProgressMonitor monitor, boolean build, boolean register) throws CoreException;
-	
-	/**
-	 * Migrates this launch configuration to be compatible with current tooling.
-	 * Has no effect if this configuration is not a candidate for migration.
-	 * Migration is performed by a launch configuration migration delegate.
-	 * @throws CoreException if migration fails
-	 * @since 3.2
-	 * @see ILaunchConfigurationMigrationDelegate
-	 */
-	public void migrate() throws CoreException;
-	
-	/**
-	 * Returns whether this launch configuration supports the
-	 * specified mode. This is a handle-only method.
-	 * 
-	 * @param mode a mode in which a configuration can be launched, one of
-	 *  the mode constants defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or
-	 *  <code>DEBUG_MODE</code>.
-	 * @return whether this launch configuration supports the
-	 *  specified mode
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li>Unable to retrieve this launch configuration's type.</li>
-	 * </ul>
-	 */
-	public boolean supportsMode(String mode) throws CoreException;
-	
-	/**
-	 * Returns whether this launch configuration is read-only.
-	 * A read-only configuration cannot be modified.
-	 * 
-	 * @return whether this configuration is read-only
-	 * 
-	 * @since 3.3
-	 */
-	public boolean isReadOnly();	
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.core;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+/**
+ * A launch configuration describes how to launch an application.
+ * Each launch configuration is an instance of a type of launch
+ * configuration as described by a launch configuration type 
+ * extension. Each launch configuration has a launch configuration
+ * delegate which performs the actual launching of a
+ * configuration.
+ * <p>
+ * A launch configuration may be shared in a repository via
+ * standard VCM mechanisms, or may be stored locally, essentially
+ * making the launch configuration private for a single user.
+ * Thus, a launch configuration may stored as a file in the
+ * workspace (shared), or as a file in the debug plug-in's state
+ * location.
+ * </p>
+ * A launch configuration is a handle to its underlying storage.
+ * Methods annotated as "handle-only" do not require a configuration
+ * to exist. Methods that require an underlying configuration to exist
+ * throw a <code>CoreException</code> when an underlying configuration
+ * is missing.
+ * </p>
+ * <p>
+ * A launch configuration is modified by obtaining a working copy
+ * of a launch configuration, modifying the working copy, and then
+ * saving the working copy.
+ * </p>
+ * <p>
+ * Clients that define a launch configuration delegate extension implement the
+ * <code>ILaunchConfigurationDelegate</code> interface.
+ * </p>
+ * @see ILaunchConfigurationType
+ * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate
+ * @see ILaunchConfigurationWorkingCopy
+ * @since 2.0
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ILaunchConfiguration extends IAdaptable {
+	
+	/**
+	 * The file extension for launch configuration files
+	 * (value <code>"launch"</code>).
+	 */
+	public static final String LAUNCH_CONFIGURATION_FILE_EXTENSION = "launch"; //$NON-NLS-1$
+	
+	/**
+	 * Launch configuration attribute storing an identifier of
+	 * a persistable source locator extension. When this attribute is
+	 * specified, a new source locator will be created automatically and
+	 * associated with the launch for this configuration.
+	 * 
+	 * @see org.eclipse.debug.core.model.IPersistableSourceLocator
+	 */
+	public static final String ATTR_SOURCE_LOCATOR_ID = DebugPlugin.getUniqueIdentifier() + ".source_locator_id"; //$NON-NLS-1$
+	
+	/**
+	 * Launch configuration attribute storing a memento of a 
+	 * source locator. When this attribute is specified in
+	 * conjunction with a source locator id, the source locator
+	 * created for a launch will be initialized with this memento.
+	 * When not specified, but a source locator id is specified,
+	 * the source locator will be initialized to default values.
+	 * 
+	 * @see org.eclipse.debug.core.model.IPersistableSourceLocator
+	 */
+	public static final String ATTR_SOURCE_LOCATOR_MEMENTO = DebugPlugin.getUniqueIdentifier() + ".source_locator_memento"; //$NON-NLS-1$
+	
+	/**
+	 * Returns whether the contents of this launch configuration are 
+	 * equal to the contents of the given launch configuration.
+	 * 
+	 * @param configuration launch configuration
+	 * @return whether the contents of this launch configuration are equal to the contents
+	 * of the specified launch configuration.
+	 */
+	public boolean contentsEqual(ILaunchConfiguration configuration);
+	
+	/**
+	 * Returns a copy of this launch configuration, as a
+	 * working copy, with the specified name. The new
+	 * working copy does not refer back to this configuration
+	 * as its original launch configuration (the working copy
+	 * will return <code>null</code> for <code>getOriginal()</code>).
+	 * When the working copy is saved it will not effect this
+	 * launch configuration.
+	 * 
+	 * @param name the name of the copy
+	 * @return a copy of this launch configuration
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while initializing the contents of the
+	 * working copy from this configuration's underlying storage.</li>
+	 * </ul>
+	 * @see ILaunchConfigurationWorkingCopy#getOriginal()
+	 */
+	public ILaunchConfigurationWorkingCopy copy(String name) throws CoreException;
+	
+	/**
+	 * Deletes this launch configuration. This configuration's underlying
+	 * storage is deleted. Has no effect if this configuration
+	 * does not exist.
+	 * 
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while deleting this configuration's
+	 *  underlying storage.</li>
+	 * </ul>
+	 */
+	public void delete() throws CoreException;
+	
+	/**
+	 * Returns whether this launch configuration's underlying
+	 * storage exists. This is a handle-only method.
+	 * 
+	 * @return whether this launch configuration's underlying
+	 *  storage exists
+	 */
+	public boolean exists();
+	
+	/**
+	 * Returns the boolean-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have a boolean value</li>
+	 * </ul>
+	 */
+	public boolean getAttribute(String attributeName, boolean defaultValue) throws CoreException;
+		
+	/**
+	 * Returns the integer-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have an integer value</li>
+	 * </ul>
+	 */
+	public int getAttribute(String attributeName, int defaultValue) throws CoreException;
+	
+	/**
+	 * Returns the <code>java.util.List</code>-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have a List value</li>
+	 * </ul>
+	 */
+	public List getAttribute(String attributeName, List defaultValue) throws CoreException;
+	
+	/**
+	 * Returns the <code>java.util.Set</code>-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have a List value</li>
+	 * </ul>
+	 * 
+	 * @since 3.3
+	 */
+	public Set getAttribute(String attributeName, Set defaultValue) throws CoreException;
+	
+	/**
+	 * Returns the <code>java.util.Map</code>-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have a Map value</li>
+	 * </ul>
+	 */
+	public Map getAttribute(String attributeName, Map defaultValue) throws CoreException;
+	
+	/**
+	 * Returns the string-valued attribute with the given name.  
+	 * Returns the given default value if the attribute is undefined.
+	 *
+	 * @param attributeName the name of the attribute
+	 * @param defaultValue the value to use if no value is found
+	 * @return the value or the default value if no value was found.
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while retrieving the attribute from
+	 *  underlying storage.</li>
+	 * <li>An attribute with the given name exists, but does not
+	 *  have a String value</li>
+	 * </ul>
+	 */
+	public String getAttribute(String attributeName, String defaultValue) throws CoreException;
+	
+	/**
+	 * Returns a map containing the attributes in this launch configuration.
+	 * Returns an empty map if this configuration has no attributes.
+	 * <p>
+	 * Modifying the map does not affect this launch configuration's attributes.
+	 * A launch configuration is modified by obtaining a working copy of that
+	 * launch configuration, modifying the working copy, and then saving the working
+	 * copy.
+	 * </p>
+	 * @return a map of attribute keys and values
+	 * @exception CoreException unable to generate/retrieve an attribute map
+	 * @since 2.1
+	 */
+	public Map getAttributes() throws CoreException;
+	
+	/**
+	 * Returns this launch configuration's type's category, or <code>null</code>
+	 * if unspecified. This is a handle-only method.
+	 * 
+	 * @return this launch configuration's type's category, or <code>null</code>
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
+	 * </ul>
+	 * @since 2.1
+	 */
+	public String getCategory() throws CoreException;
+	
+	/**
+	 * Returns the file this launch configuration is stored
+	 * in, or <code>null</code> if this configuration is stored
+	 * locally with the workspace. This is a handle-only method.
+	 * 
+	 * @return the file this launch configuration is stored
+	 *  in, or <code>null</code> if this configuration is stored
+	 *  locally with the workspace
+	 */
+	public IFile getFile();
+		
+	/**
+	 * Returns the location of this launch configuration as a
+	 * path in the local file system or <code>null</code> if it cannot
+	 * be mapped to a location in the local file system. This is a handle-only method.
+	 * <p>
+	 * Since 3.5, this method can return <code>null</code>. For example, when a
+	 * launch configuration is stored in the workspace as an {@link IFile} in
+	 * an external file system ({@link EFS}).
+	 * </p>
+	 * 
+	 * @return the location of this launch configuration as a
+	 *  path file system or <code>null</code> if it cannot be mapped
+	 *  to a location in the local file system. Since 3.5, this method
+	 *  can return <code>null</code>.
+	 * @deprecated Since a launch configuration does not need to be stored in the local
+	 *  file system, this attribute should no longer be used to identify a launch configuration.
+	 */
+	public IPath getLocation();
+	
+	/**
+	 * Returns the resources this launch configuration is associated with or <code>null</code>
+	 * if none. Clients contributing launch configuration types are responsible for maintaining
+	 * resource mappings as appropriate.
+	 * 
+	 * @return the resources this launch configuration is associated with or <code>null</code>
+	 * @throws CoreException unable to get the mapped resource
+	 * @since 3.2
+	 */
+	public IResource[] getMappedResources() throws CoreException;
+		
+	/**
+	 * Returns a memento for this launch configuration, or <code>null</code>
+	 * if unable to generate a memento for this configuration. A memento
+	 * can be used to re-create a launch configuration, via the
+	 * launch manager.
+	 * 
+	 * @return a memento for this configuration
+	 * @see ILaunchManager#getLaunchConfiguration(String)
+	 * @exception CoreException if an exception occurs generating this
+	 *  launch configuration's memento 
+	 */
+	public String getMemento() throws CoreException;
+	
+	/**
+	 * Returns the name of this launch configuration. This is
+	 * a handle-only method.
+	 * 
+	 * @return the name of this launch configuration
+	 */
+	public String getName();		
+	
+	/**
+	 * Returns the launch modes that have been set on this configuration.
+	 * An empty set is returned if no specific launch modes have been set
+	 * on a launch configuration. 
+	 * <p>
+	 * Setting launch modes on a configuration allows a launch to be
+	 * performed in mixed mode - for example, debug and profile at the
+	 * same time.
+	 * </p>
+	 * @return this configuration's launch modes, possibly an empty set
+	 * @exception CoreException if an exception occurs retrieving modes
+	 * @since 3.3
+	 */
+	public Set getModes() throws CoreException;
+	
+	/**
+	 * Returns the preferred launch delegate that has been set on this
+	 * configuration or <code>null</code> if one is not specified.
+	 * 
+	 * @param modes mode set for which a preferred delegate has been requested
+	 * @return this configuration's preferred launch delegate for the specified mode set, or  
+	 * 	<code>null</code> if one is not specified
+	 * @exception CoreException if an exception occurs retrieving preferred delegate
+	 * @since 3.3
+	 */
+	public ILaunchDelegate getPreferredDelegate(Set modes) throws CoreException;
+	
+	/**
+	 * Returns the type of this launch configuration. This is a
+	 * handle-only method.
+	 * 
+	 * @return the type of this launch configuration
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
+	 * </ul>
+	 * @see ILaunchConfigurationType
+	 */
+	public ILaunchConfigurationType getType() throws CoreException;	
+	
+	/**
+	 * Returns a working copy of this launch configuration.
+	 * Since 3.3, if this method is called on a working copy, a nested working 
+	 * copy is created (a working copy of a working copy).
+	 * Changes to the working copy will be applied to this
+	 * launch configuration when saved, or to the parent working copy. 
+	 * The working copy will refer to this launch configuration as its original
+	 * launch configuration, or the working copy it was created from.
+	 * <p>
+	 * When a working copy (B) is created from a working copy (A), the newly
+	 * created working copy (B) is initialized with the attributes from
+	 * the first working copy (A). Whenever a working copy is saved, it is written
+	 * back to the working copy from which it was created: in this example working 
+	 * copy B will write back to working copy A, and A will write back to the 
+	 * original launch configuration.
+	 * </p>
+	 * @return a working copy of this launch configuration, or a nested working copy if called
+	 * on an instance of <code>ILaunchConfigurationWorkingCopy</code>
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>An exception occurs while initializing the contents of the
+	 * working copy from this configuration's underlying storage.</li>
+	 * </ul>
+	 * @see ILaunchConfigurationWorkingCopy#getOriginal()
+	 */
+	public ILaunchConfigurationWorkingCopy getWorkingCopy() throws CoreException;
+	
+	/**
+	 * Returns whether this configuration contains an attribute with the given name.
+	 * 
+	 * @param attributeName the name of the attribute
+	 * @return true if this configuration has the specified attribute false otherwise
+	 * @throws CoreException if unable to retrieve attributes
+	 * 
+	 * @since 3.4
+	 */
+	public boolean hasAttribute(String attributeName) throws CoreException;
+	
+	/**
+	 * Returns whether this launch configuration is stored
+	 * locally within the workspace. This is a handle-only method.
+	 * 
+	 * @return whether this launch configuration is stored
+	 *  locally with the workspace
+	 */
+	public boolean isLocal();
+	
+	/**
+	 * Returns whether this launch configuration is a candidate for migration.
+	 * 
+	 * @return whether this launch configuration is a candidate for migration
+	 * @throws CoreException
+	 * @see ILaunchConfigurationMigrationDelegate
+	 * @since 3.2
+	 */
+	public boolean isMigrationCandidate() throws CoreException ;
+	
+	/**
+	 * Returns whether this launch configuration is a working
+	 * copy. Launch configurations which return <code>true</code>
+	 * to this method can be safely cast to 
+	 * <code>org.eclipse.debug.core.ILaunchConfigurationWorkingCopy</code>.
+	 * This is a handle-only method.
+	 * 
+	 * @return whether this launch configuration is a working
+	 *  copy
+	 */
+	public boolean isWorkingCopy();
+	
+	/**
+	 * Launches this configuration in the specified mode by delegating to
+	 * this configuration's launch configuration delegate, and returns the
+	 * resulting launch.
+	 * <p>
+	 * Equivalent to calling <code>launch(String, IProgressMontitor, boolean)</code>
+	 * with a <code>build</code> flag of <code>false</code>.
+	 * </p>
+	 * @param mode the mode in which to launch, one of the mode constants
+	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
+	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
+	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
+	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
+	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
+	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
+	 * @return the resulting launch
+	 * @exception CoreException if this method fails. Reasons include:<ul>
+	 * <li>unable to instantiate the underlying launch configuration delegate</li>
+	 * <li>the launch fails (in the delegate)</code>
+	 * </ul>
+	 */
+	public ILaunch launch(String mode, IProgressMonitor monitor) throws CoreException;
+	
+	/**
+	 * Launches this configuration in the specified mode by delegating to
+	 * this configuration's launch configuration delegate, and returns the
+	 * resulting launch.
+	 * <p>
+	 * If this configuration's launch delegate implements
+	 * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
+	 * be consulted to provide a launch object for the launch,
+	 * perform pre-launch checks, and build before the launch.
+	 * If <code>build</code> is <code>true</code> and the associated launch
+	 * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
+	 * an incremental workspace build will be performed before the launch
+	 * by the debug platform.
+	 * </p>
+	 * <p>
+	 * The resulting launch object is registered with the launch manager
+	 * before passing it to this configuration's delegate launch method, for
+	 * contributions (debug targets and processes).
+	 * </p>
+	 * <p>
+	 * If the delegate contributes a source locator to the launch, that
+	 * source locator is used. Otherwise an appropriate source locator is
+	 * contributed to the launch  based on the values of
+	 * <code>ATTR_SOURCE_LOCATOR_ID</code> and
+	 * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
+	 * the given progress monitor), the launch is removed from the launch
+	 * manager. The launch is returned whether canceled or not. Invoking this
+	 * method causes the underlying launch configuration delegate to be
+	 * instantiated (if not already).
+	 * </p>
+	 * @param mode the mode in which to launch, one of the mode constants
+	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
+	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
+	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
+	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
+	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
+	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
+	 * @param build whether the workspace should be built before the launch
+	 * @return resulting launch
+	 * @throws CoreException if an exception occurs during the launch sequence
+	 * @since 3.0
+	 */
+	public ILaunch launch(String mode, IProgressMonitor monitor, boolean build) throws CoreException;	
+	
+	/**
+	 * Launches this configuration in the specified mode by delegating to
+	 * this configuration's launch configuration delegate, and returns the
+	 * resulting launch.
+	 * <p>
+	 * If this configuration's launch delegate implements
+	 * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
+	 * be consulted to provide a launch object for the launch,
+	 * perform pre-launch checks, and build before the launch.
+	 * If <code>build</code> is <code>true</code> and the associated launch
+	 * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
+	 * an incremental workspace build will be performed before the launch
+	 * by the debug platform.
+	 * </p>
+	 * <p>
+	 * When <code>register</code> is <code>true</code>, the resulting launch object
+	 * is registered with the launch manager before passing it to this configuration's delegate
+	 * launch method, for contributions (debug targets and processes). When
+	 * <code>register</code> is <code>false</code>, the launch is not registered with
+	 * the launch manager. Clients that launch configurations without registering
+	 * a launch should register appropriate debug event filters to intercept events
+	 * from unregistered launches.
+	 * </p>
+	 * <p>
+	 * If the delegate contributes a source locator to the launch, that
+	 * source locator is used. Otherwise an appropriate source locator is
+	 * contributed to the launch  based on the values of
+	 * <code>ATTR_SOURCE_LOCATOR_ID</code> and
+	 * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
+	 * the given progress monitor), the launch is removed from the launch
+	 * manager. The launch is returned whether canceled or not. Invoking this
+	 * method causes the underlying launch configuration delegate to be
+	 * instantiated (if not already).
+	 * </p>
+	 * @param mode the mode in which to launch, one of the mode constants
+	 *  defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
+	 * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
+	 *  framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
+	 *  monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor 
+	 *  framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag 
+	 *  is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started. 
+	 * @param build whether the workspace should be built before the launch
+	 * @param register whether to register the resulting launch with the launch manager
+	 * @return resulting launch
+	 * @throws CoreException if an exception occurs during the launch sequence
+	 * @since 3.1
+	 */
+	public ILaunch launch(String mode, IProgressMonitor monitor, boolean build, boolean register) throws CoreException;
+	
+	/**
+	 * Migrates this launch configuration to be compatible with current tooling.
+	 * Has no effect if this configuration is not a candidate for migration.
+	 * Migration is performed by a launch configuration migration delegate.
+	 * @throws CoreException if migration fails
+	 * @since 3.2
+	 * @see ILaunchConfigurationMigrationDelegate
+	 */
+	public void migrate() throws CoreException;
+	
+	/**
+	 * Returns whether this launch configuration supports the
+	 * specified mode. This is a handle-only method.
+	 * 
+	 * @param mode a mode in which a configuration can be launched, one of
+	 *  the mode constants defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or
+	 *  <code>DEBUG_MODE</code>.
+	 * @return whether this launch configuration supports the
+	 *  specified mode
+	 * @exception CoreException if this method fails. Reasons include:
+	 * <ul>
+	 * <li>Unable to retrieve this launch configuration's type.</li>
+	 * </ul>
+	 */
+	public boolean supportsMode(String mode) throws CoreException;
+	
+	/**
+	 * Returns whether this launch configuration is read-only.
+	 * A read-only configuration cannot be modified.
+	 * 
+	 * @return whether this configuration is read-only
+	 * 
+	 * @since 3.3
+	 */
+	public boolean isReadOnly();	
+}
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java
index 6a0e9f2..1a24538 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java
index ac331fa..7484f8d 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.debug.core.model;
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java
index c37339e..422124f 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.debug.core.model;
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java
index 6df7e9c..1a8b8fe 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -233,13 +233,23 @@ public class RuntimeProcess extends PlatformObject implements IProcess {
         if (fStreamsProxy instanceof StreamsProxy) {
             ((StreamsProxy)fStreamsProxy).close();
         }
+
+        
+        // Avoid calling IProcess.exitValue() inside a sync section (Bug 311813).
+        int exitValue = -1;
+        boolean running = false;
+        try {
+            exitValue = fProcess.exitValue();
+        } catch (IllegalThreadStateException ie) {
+            running = true;
+        }
+        
 		synchronized (this) {
 			fTerminated= true;
-			try {
-				fExitValue = fProcess.exitValue();
-			} catch (IllegalThreadStateException ie) {
+			if (!running) {
+			    fExitValue = exitValue;
 			}
-			fProcess= null;			
+			fProcess= null;
 		}
 		fireTerminateEvent();
 	}
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java
index 77aea74..cffc4da 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.debug.core.sourcelookup.containers;
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java
index f8f9644..452c063 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.debug.internal.core;
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties
index 0715b22..1b96d0c 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2000, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java
index a29b28f..be3ee7d 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.debug.internal.core;
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java
index 15ad6ad..f3d3a55 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java
@@ -186,12 +186,14 @@ public class LaunchConfigurationType extends PlatformObject implements ILaunchCo
 		} else {
 			fPreferredDelegates.put(modes, delegate);
 		}
+		((LaunchManager)DebugPlugin.getDefault().getLaunchManager()).persistPreferredLaunchDelegate(this);
 	}
 	
 	/**
 	 * @see org.eclipse.debug.core.ILaunchConfigurationType#getPreferredDelegate(java.util.Set)
 	 */
 	public ILaunchDelegate getPreferredDelegate(Set modes) {
+		initializePreferredDelegates();
 		return (ILaunchDelegate) fPreferredDelegates.get(modes);
 	}
 	
@@ -208,6 +210,7 @@ public class LaunchConfigurationType extends PlatformObject implements ILaunchCo
 	 * @since 3.3
 	 */
 	public Map getPreferredDelegates() {
+		initializePreferredDelegates();
 		return fPreferredDelegates;
 	}
 	
@@ -503,5 +506,11 @@ public class LaunchConfigurationType extends PlatformObject implements ILaunchCo
 		return fModeCombinations.contains(modes);
 	}
 
+	/** 
+	 * Called on preference import to reset preferred delegates.
+	 */
+	void resetPreferredDelegates() {
+		fPreferredDelegates = null;
+	}
 }
 
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
index 4341b8c..6780dfd 100644
--- a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
@@ -11,6 +11,7 @@
  *     Pawel Piech - Bug 82001: When shutting down the IDE, the debugger should first
  *     attempt to disconnect debug targets before terminating them
  *     Alena Laskavaia - Bug 259281
+ *     Marc Khouzam - Bug 313143: Preferred Launch Delegate not recovered from preferences 
  *******************************************************************************/
 package org.eclipse.debug.internal.core;
 
@@ -1595,6 +1596,16 @@ public class LaunchManager extends PlatformObject implements ILaunchManager, IRe
 	}
 	
 	/**
+	 * Allows internal access to reset preferred delegates when re-importing 
+	 * preferences.  
+	 * 
+	 * @since 3.6
+	 */
+	protected void resetPreferredDelegates() {
+	    fPreferredDelegates = null;
+	}
+	
+	/**
 	 * Allows internal access to a preferred delegate for a given type and mode set
 	 * @param typeid the id of the <code>ILaunchConfigurationType</code> to find a delegate for
 	 * @param modes the set of modes for the delegate
@@ -1617,7 +1628,7 @@ public class LaunchManager extends PlatformObject implements ILaunchManager, IRe
 		// @since 3.5
 		// If the legacy mechanism didn't work, try the new preference name for 
 		// the given launch type.  
-        String preferred = Platform.getPreferencesService().getString(DebugPlugin.getUniqueIdentifier(), LaunchManager.PREF_PREFERRED_DELEGATES + '/' + typeid, IInternalDebugCoreConstants.EMPTY_STRING, null);
+        String preferred = Platform.getPreferencesService().getString(DebugPlugin.getUniqueIdentifier(), "//" + LaunchManager.PREF_PREFERRED_DELEGATES + '/' + typeid, IInternalDebugCoreConstants.EMPTY_STRING, null); //$NON-NLS-1$
         if (preferred != null && preferred.length() != 0) {
             StringTokenizer tokenizer = new StringTokenizer(preferred, ";"); //$NON-NLS-1$
             while(tokenizer.hasMoreTokens()) {
@@ -2346,43 +2357,50 @@ public class LaunchManager extends PlatformObject implements ILaunchManager, IRe
 	 * 
 	 * @since 3.3
 	 */
-	private void persistPreferredLaunchDelegates() {
+	public void persistPreferredLaunchDelegates() {
         ILaunchConfigurationType[] types = getLaunchConfigurationTypes();
-        Map preferred = null;
-        ILaunchDelegate delegate = null;
-        Set modes = null;
         for(int i = 0; i < types.length; i++) {
-            String preferenceName = PREF_PREFERRED_DELEGATES + '/' + types[i].getIdentifier();
-            preferred = ((LaunchConfigurationType)types[i]).getPreferredDelegates();
-            if(preferred != null && preferred.size() > 0) {
-                StringBuffer str = new StringBuffer();
-                for(Iterator iter = preferred.keySet().iterator(); iter.hasNext();) {
-                    modes = (Set) iter.next();
-                    delegate = (ILaunchDelegate) preferred.get(modes);
-                    if(delegate != null) {
-                        str.append(delegate.getId());
-                        str.append(',');
-                        for(Iterator iter2 = modes.iterator(); iter2.hasNext();) {
-                            str.append(iter2.next());
-                            if(iter2.hasNext()) {
-                                str.append(',');
-                            }
-                        }
-                        if (iter.hasNext()) {
-                            str.append(';');
+            persistPreferredLaunchDelegate((LaunchConfigurationType)types[i]);
+        }
+	}
+
+	/**
+	 * Persists the given launch configuration delegate. 
+	 * @param type Launch configuration type to persist
+	 * 
+	 * @since 3.6
+	 */
+    public void persistPreferredLaunchDelegate(LaunchConfigurationType type) {
+        String preferenceName = PREF_PREFERRED_DELEGATES + '/' + type.getIdentifier();
+        Map preferred = type.getPreferredDelegates();
+        if(preferred != null && preferred.size() > 0) {
+            StringBuffer str = new StringBuffer();
+            for(Iterator iter = preferred.keySet().iterator(); iter.hasNext();) {
+                Set modes = (Set) iter.next();
+                ILaunchDelegate delegate = (ILaunchDelegate) preferred.get(modes);
+                if(delegate != null) {
+                    str.append(delegate.getId());
+                    str.append(',');
+                    for(Iterator iter2 = modes.iterator(); iter2.hasNext();) {
+                        str.append(iter2.next());
+                        if(iter2.hasNext()) {
+                            str.append(',');
                         }
                     }
+                    if (iter.hasNext()) {
+                        str.append(';');
+                    }
                 }
-                Preferences.setString(DebugPlugin.getUniqueIdentifier(), preferenceName, str.toString(), null);
-            } else {
-            	Preferences.setToDefault(DebugPlugin.getUniqueIdentifier(), preferenceName);
             }
+            Preferences.setString(DebugPlugin.getUniqueIdentifier(), preferenceName, str.toString(), null);
+        } else {
+            Preferences.setToDefault(DebugPlugin.getUniqueIdentifier(), preferenceName);
         }
 
         // Reset the legacy preference string.
         Preferences.setToDefault(DebugPlugin.getUniqueIdentifier(), PREF_PREFERRED_DELEGATES);
-	}
-	
+    }
+
 	/**
 	 * finds and terminates any running launch configurations associated with the given resource
 	 * @param resource the resource to search for launch configurations and hence launches for
diff --git a/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/PreferredDelegateModifyListener.java b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/PreferredDelegateModifyListener.java
new file mode 100644
index 0000000..b75ced8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/PreferredDelegateModifyListener.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.internal.core;
+
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor;
+import org.eclipse.core.runtime.preferences.PreferenceModifyListener;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.osgi.service.prefs.BackingStoreException;
+
+/**
+ * Used to listen for preference imports that include changes to 
+ * preferred launch delegates.
+ * 
+ * @since 3.6
+ */
+public class PreferredDelegateModifyListener extends PreferenceModifyListener {
+	class Visitor implements IPreferenceNodeVisitor {
+
+		public boolean visit(IEclipsePreferences node) throws BackingStoreException {
+			if (node.name().equals(DebugPlugin.getUniqueIdentifier())) {
+				// reset preferred delegates, so they are re-initialized from the preferences
+				LaunchManager manager = (LaunchManager)DebugPlugin.getDefault().getLaunchManager();
+				manager.resetPreferredDelegates();
+				ILaunchConfigurationType[] types = manager.getLaunchConfigurationTypes();
+				for (int i = 0; i < types.length; i++) {
+					((LaunchConfigurationType) types[i]).resetPreferredDelegates();
+				}
+				return false;
+			}
+			return true;
+		}
+		
+	}
+
+	public IEclipsePreferences preApply(IEclipsePreferences node) {
+		try {
+			// force VMs to be initialized before we import the new VMs
+			node.accept(new Visitor());
+		} catch (BackingStoreException e) {
+            DebugPlugin.log(e);
+		}
+		return node;
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.debug.core/plugin.xml b/eclipse/plugins/org.eclipse.debug.core/plugin.xml
index 2599d9a..19ba532 100644
--- a/eclipse/plugins/org.eclipse.debug.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.debug.core/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -233,6 +234,9 @@
       <initializer
             class="org.eclipse.debug.internal.core.DebugPreferenceInitializer">
       </initializer>
+      <modifier
+            class="org.eclipse.debug.internal.core.PreferredDelegateModifyListener">
+      </modifier>
    </extension>
 
 <!-- ===================================== -->
diff --git a/eclipse/plugins/org.eclipse.debug.ui/plugin.properties b/eclipse/plugins/org.eclipse.debug.ui/plugin.properties
index a2332c9..2d8faf4 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.debug.ui/plugin.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2000, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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 Software Systems - Mikhail Khodjaiants - Registers View (Bug 53640)
 #     Wind River Systems - Pawel Piech - Added Modules view (bug 211158)
diff --git a/eclipse/plugins/org.eclipse.debug.ui/plugin.xml b/eclipse/plugins/org.eclipse.debug.ui/plugin.xml
index 92a05f5..57739e5 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.debug.ui/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -764,8 +765,8 @@
          <action
                label="%addWatchExpressionAction.label"
                toolbarPath="expressionGroup"
-               icon="$nl$/icons/full/etool16/watch_exp.gif"
-               hoverIcon="$nl$/icons/full/etool16/watch_exp.gif"
+               icon="$nl$/icons/full/elcl16/monitorexpression_tsk.gif"
+               hoverIcon="$nl$/icons/full/elcl16/monitorexpression_tsk.gif"
                helpContextId="add_watch_expression_context"
                class="org.eclipse.debug.internal.ui.actions.expressions.AddWatchExpressionAction"
                tooltip="%addWatchExpressionAction.tooltip"
@@ -1198,7 +1199,7 @@
             id="org.eclipse.debug.ui.ExpressionViewPopupActions">
          <action
                label="%addWatchExpressionAction.label"
-               icon="$nl$/icons/full/etool16/watch_exp.gif"
+               icon="$nl$/icons/full/elcl16/monitorexpression_tsk.gif"
                helpContextId="add_watch_expression_context"
                class="org.eclipse.debug.internal.ui.actions.expressions.AddWatchExpressionAction"
                tooltip="%addWatchExpressionAction.tooltip"
@@ -1651,7 +1652,8 @@ M4 = Platform-specific fourth key
             name="%ActionDefinition.restart.name"
             categoryId="org.eclipse.debug.ui.category.run"
             description="%ActionDefinition.restart.description"
-            id="org.eclipse.debug.ui.commands.Restart">
+            id="org.eclipse.debug.ui.commands.Restart"
+            defaultHandler="org.eclipse.debug.internal.ui.commands.actions.RestartCommandHandler">
       </command>
       <command
             name="%ActionDefinition.suspend.name"
@@ -2344,6 +2346,9 @@ M4 = Platform-specific fourth key
                adaptableType="org.eclipse.debug.core.model.IProcess"
                class="org.eclipse.debug.internal.ui.views.launch.DebugElementAdapterFactory">
             <adapter
+                  type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider">
+            </adapter>
+            <adapter
                   type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory">
             </adapter>
             <adapter
diff --git a/eclipse/plugins/org.eclipse.debug.ui/schema/detailPaneFactories.exsd b/eclipse/plugins/org.eclipse.debug.ui/schema/detailPaneFactories.exsd
index 3a89fb4..9471d72 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/schema/detailPaneFactories.exsd
+++ b/eclipse/plugins/org.eclipse.debug.ui/schema/detailPaneFactories.exsd
@@ -1,12 +1,12 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.debug.ui">
+<schema targetNamespace="org.eclipse.debug.ui" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
       <appInfo>
          <meta.schema plugin="org.eclipse.debug.ui" id="detailPaneFactories" name="Detail Pane Factories Extension"/>
       </appInfo>
       <documentation>
-         This extension point allows clients to contribute custom renderings for the detail pane in the variables, registers and expression views. To contribute a custom detail pane, an implementation of &lt;code&gt;IDetailPaneFactory&lt;/code&gt; is registered using this extension point.  A detail pane factory creates an &lt;code&gt;IDetailPane&lt;/code&gt; for each custom rendering.
+         This extension point allows clients to contribute custom renderings for the detail pane in the variables, registers, expressions, and breakpoints views (note that support for breakpoint view detail panes was added in 3.6). To contribute a custom detail pane, an implementation of &lt;code&gt;IDetailPaneFactory&lt;/code&gt; is registered using this extension point.  A detail pane factory creates an &lt;code&gt;IDetailPane&lt;/code&gt; for each custom rendering (note that optional extensions have been added to detail panes via  &lt;code&gt;IDetailPane2&lt;/code&gt; and &lt;code&gt;IDetailPane3&lt;/code&gt;).
 &lt;p&gt;
 Views with detail panes allow users select from available detail panes via the context menu. All contributions to this extension point are checked agaist the current selection. A detail factory should provide an enablement expression to ensure lazy plug-in loading. A factory will only be instantiated if its expression evaluates to true for the current selection (see the example extension point for an example enablement expression). Each applicable factory is then consulted for the types of detail panes it can produce for the current selection.
 &lt;/p&gt;
@@ -16,6 +16,11 @@ Views with detail panes allow users select from available detail panes via the c
    <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
 
    <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
       <complexType>
          <sequence minOccurs="1" maxOccurs="unbounded">
             <element ref="detailFactories"/>
@@ -133,7 +138,7 @@ Views with detail panes allow users select from available detail panes via the c
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2000, 2006 IBM Corporation and others.&lt;br&gt;
+         Copyright (c) 2000, 2010 IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 which 
 accompanies this distribution, and is available at 
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java
index 5235b91..d9f641d 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java
index d870936..c6b56f2 100755
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java
@@ -41,7 +41,7 @@ public class SWTFactory {
 	 * Returns a width hint for a button control.
 	 */
 	public static int getButtonWidthHint(Button button) {
-		button.setFont(JFaceResources.getDialogFont());
+		/*button.setFont(JFaceResources.getDialogFont());*/
 		PixelConverter converter= new PixelConverter(button);
 		int widthHint= converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
 		return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
@@ -111,7 +111,7 @@ public class SWTFactory {
 		}
 		GridData gd = new GridData();
 		button.setLayoutData(gd);	
-		SWTFactory.setButtonDimensionHint(button);
+		setButtonDimensionHint(button);
 		return button;	
 	}	
 
@@ -138,7 +138,7 @@ public class SWTFactory {
 		}
 		GridData gd = new GridData(fill);
 		button.setLayoutData(gd);	
-		SWTFactory.setButtonDimensionHint(button);
+		setButtonDimensionHint(button);
 		return button;	
 	}	
 	
@@ -177,7 +177,7 @@ public class SWTFactory {
 		}
 		GridData gd = new GridData();
 		button.setLayoutData(gd);	
-		SWTFactory.setButtonDimensionHint(button);
+		setButtonDimensionHint(button);
 		return button;	
 	}	
 	
@@ -201,7 +201,7 @@ public class SWTFactory {
 		GridData gd = new GridData(GridData.BEGINNING);
 		gd.horizontalSpan = hspan;
 		button.setLayoutData(gd);	
-		SWTFactory.setButtonDimensionHint(button);
+		setButtonDimensionHint(button);
 		return button;	
 	}
 	
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java
index b41a72a..6f5a29e 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java
index 2aaef06..aca918e 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java
index 00d68ea..85620b3 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Patrick Chuong (Texas Instruments) - Improve usability of the breakpoint view (Bug 238956)
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java
index 6d00bc5..e336289 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Wind River Systems - added support for IToggleBreakpointsTargetFactory
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java
index 8ee6e41..41841f3 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java
index e03affc..5661ca9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Wind River Systems and others.
+ * Copyright (c) 2009, 2010 Wind River Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,12 +18,16 @@ import org.eclipse.debug.ui.actions.DebugCommandAction;
 import org.eclipse.jface.resource.ImageDescriptor;
 
 /**
- * Handler for the 
+ * Handler for the Restart action
  * 
  * @since 3.6
  */
 public class RestartCommandAction extends DebugCommandAction {
 
+    public RestartCommandAction() {
+        setActionDefinitionId("org.eclipse.debug.ui.commands.Restart"); //$NON-NLS-1$
+    }
+    
     protected Class getCommandType() {
         return IRestartHandler.class;
     }
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java
new file mode 100644
index 0000000..878dcc7
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Wind River Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.commands.actions;
+
+import org.eclipse.debug.core.commands.IRestartHandler;
+import org.eclipse.debug.ui.actions.DebugCommandHandler;
+
+/**
+ * Command candler for the restart command (to enable key-binding activation). 
+ * 
+ * @since 3.6
+ */
+public class RestartCommandHandler extends DebugCommandHandler {
+
+    protected Class getCommandType() {
+        return IRestartHandler.class;
+    }
+
+}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
index 5bde43a..2c85d09 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
@@ -15,6 +15,7 @@ import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.IRequest;
 import org.eclipse.debug.core.commands.ITerminateHandler;
+import org.eclipse.debug.internal.core.commands.Request;
 import org.eclipse.debug.internal.ui.DebugPluginImages;
 import org.eclipse.debug.internal.ui.DebugUIPlugin;
 import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
@@ -23,8 +24,10 @@ import org.eclipse.debug.internal.ui.views.DebugUIViewsMessages;
 import org.eclipse.debug.ui.actions.DebugCommandAction;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 
@@ -34,6 +37,17 @@ import org.eclipse.ui.PlatformUI;
  * @since 3.3
  */
 public class TerminateAndRemoveAction extends DebugCommandAction {
+	
+	/**
+	 * Whether the target can be terminated. The action is always enabled,
+	 * but does not always need to terminate the target first.
+	 */
+	private boolean fCanTerminate = false;
+	
+	/**
+	 * Local copy of part, possibly null
+	 */
+	private IWorkbenchPart fMyPart = null;
 
     public String getText() {
         return ActionMessages.TerminateAndRemoveAction_0;
@@ -79,18 +93,49 @@ public class TerminateAndRemoveAction extends DebugCommandAction {
     }
     
     /* (non-Javadoc)
+     * @see org.eclipse.debug.ui.actions.DebugCommandAction#setEnabled(boolean)
+     */
+    public void setEnabled(boolean enabled) {
+    	synchronized (this) {
+    		fCanTerminate = enabled;
+		}
+    	// action is always enabled... just depends whether terminate is required first.
+    	super.setEnabled(true);
+    }
+    
+    /* (non-Javadoc)
      * @see org.eclipse.debug.ui.actions.DebugCommandAction#runWithEvent(org.eclipse.swt.widgets.Event)
      */
     public void runWithEvent(Event event) {
-    	// prompt if invoked via keyboard shortcut (don't prompt when menu is used)
-    	if (event.widget instanceof Tree) {
-    		IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        	if (window != null) {
-    	    	if (!MessageDialog.openQuestion(window.getShell(), DebugUIViewsMessages.LaunchView_Terminate_and_Remove_1, DebugUIViewsMessages.LaunchView_Terminate_and_remove_selected__2)) {  
-    				return;
-    			}
-        	}
+    	if (fCanTerminate) {
+			IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+	    	if (window != null) {
+		    	if (!MessageDialog.openQuestion(window.getShell(), DebugUIViewsMessages.LaunchView_Terminate_and_Remove_1, DebugUIViewsMessages.LaunchView_Terminate_and_remove_selected__2)) {  
+					return;
+				}
+	    	}
+	    	super.runWithEvent(event);
+    	} else {
+    		// don't terminate, just remove
+    		// TODO: make #getContext() API in next release
+    		ISelection sel = null;
+    		if (fMyPart != null) {
+    			sel = getDebugContextService().getActiveContext(fMyPart.getSite().getId());
+    	    } else {
+    	    	sel = getDebugContextService().getActiveContext();
+    	    }
+    		if (sel instanceof IStructuredSelection) {
+                IStructuredSelection ss = (IStructuredSelection) sel;
+                postExecute(new Request(), ss.toArray());
+            }
     	}
-    	super.runWithEvent(event);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.debug.ui.actions.DebugCommandAction#init(org.eclipse.ui.IWorkbenchPart)
+     */
+    public void init(IWorkbenchPart part) {
+    	super.init(part); // TODO: if #getContext() was API, this would not be needed
+    	fMyPart = part;
     }
 }
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java
index 6ed2491..7a744a8 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Pawel Piech - Bug 154598: DebugModelContextBindingManager does not use IAdaptable.getAdapter() to retrieve IDebugModelProvider adapter
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java
index 16c0ba8..8547d1c 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java
index 1b76b8e..885bedd 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CreateLaunchConfigurationAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CreateLaunchConfigurationAction.java
index 9028cc2..e90b7dc 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CreateLaunchConfigurationAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CreateLaunchConfigurationAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DuplicateLaunchConfigurationAction.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DuplicateLaunchConfigurationAction.java
index aed60f4..fd9a3fb 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DuplicateLaunchConfigurationAction.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DuplicateLaunchConfigurationAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java
index c118aff..6b6c3a0 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -59,6 +60,7 @@ import org.eclipse.jface.resource.JFaceResources;
 
 import org.eclipse.ui.IWorkbenchPreferenceConstants;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.WorkbenchJob;
 
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunchConfiguration;
@@ -172,6 +174,11 @@ public class LaunchConfigurationTabGroupViewer {
 	private ViewForm fViewform;
 	
 	/**
+	 * Job to update the dialog after a delay.
+	 */
+	private Job fRefreshJob;
+	
+	/**
 	 * Constructs a viewer in the given composite, contained by the given
 	 * launch configuration dialog.
 	 * 
@@ -293,7 +300,6 @@ public class LaunchConfigurationTabGroupViewer {
 		
 		Composite buttonComp = SWTFactory.createComposite(blComp, 2, 1, GridData.HORIZONTAL_ALIGN_END);
 		fApplyButton = SWTFactory.createPushButton(buttonComp, LaunchConfigurationsMessages.LaunchConfigurationDialog__Apply_17, null,GridData.HORIZONTAL_ALIGN_END);
-		SWTFactory.setButtonDimensionHint(fApplyButton);
 		fApplyButton.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent evt) {
 				handleApplyPressed();
@@ -301,7 +307,6 @@ public class LaunchConfigurationTabGroupViewer {
 		});
 
 		fRevertButton = SWTFactory.createPushButton(buttonComp, LaunchConfigurationsMessages.LaunchConfigurationDialog_Revert_2, null, GridData.HORIZONTAL_ALIGN_END);
-		SWTFactory.setButtonDimensionHint(fRevertButton);
 		fRevertButton.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent evt) {
 				handleRevertPressed();
@@ -666,17 +671,21 @@ public class LaunchConfigurationTabGroupViewer {
 			if(config1 == null || config2 == null) {
 				return false;
 			}
-			Set modes = getCurrentModeSet();
-			ILaunchDelegate d1 = config1.getPreferredDelegate(modes);
-			if(d1 == null) {
-				d1 = config1.getType().getPreferredDelegate(modes);
-			}
-			ILaunchDelegate d2 = config2.getPreferredDelegate(modes);
-			if(d2 == null) {
-				d2 = config2.getType().getPreferredDelegate(modes);
-			}
-			if(d1 != null) {
-				return d1.equals(d2);
+			if (config1.getType().equals(config2.getType())) {
+				Set modes = getCurrentModeSet();
+				ILaunchDelegate d1 = config1.getPreferredDelegate(modes);
+				if(d1 == null) {
+					d1 = config1.getType().getPreferredDelegate(modes);
+				}
+				ILaunchDelegate d2 = config2.getPreferredDelegate(modes);
+				if(d2 == null) {
+					d2 = config2.getType().getPreferredDelegate(modes);
+				}
+				if (d1 == null) {
+					return d2 == null;
+				} else {
+					return d1.equals(d2);
+				}
 			}
 		}
 		catch(CoreException ce) {DebugUIPlugin.log(ce);}
@@ -787,6 +796,7 @@ public class LaunchConfigurationTabGroupViewer {
 			tab.setText(name);
 			tab.setImage(tabs[i].getImage());
 			ScrolledComposite sc = new ScrolledComposite(tab.getParent(), SWT.V_SCROLL | SWT.H_SCROLL);
+			sc.setFont(tab.getParent().getFont());
 			sc.setExpandHorizontal(true);
 			sc.setExpandVertical(true);
 			sc.setShowFocusedControl(true);
@@ -923,6 +933,62 @@ public class LaunchConfigurationTabGroupViewer {
 	}
 	
 	/**
+	 * Returns the job to update the launch configuration dialog.
+	 * 
+	 * @return update job
+	 */
+	private Job getUpdateJob() {
+		if (fRefreshJob == null) {
+			fRefreshJob = createUpdateJob();
+			fRefreshJob.setSystem(true);
+		}
+		return fRefreshJob;
+	}
+	
+	/**
+	 * Schedules the update job to run for this tab based on this tab's delay.
+	 * 
+	 * @since 3.6
+	 */
+	protected void scheduleUpdateJob() {
+		Job job = getUpdateJob();
+		job.cancel(); // cancel existing job
+		job.schedule(getUpdateJobDelay());
+	}
+	
+	/**
+	 * Return the time delay that should be used when scheduling the
+	 * update job. Subclasses may override.
+	 * 
+	 * @return a time delay in milliseconds before the job should run
+	 * @since 3.6
+	 */
+	protected long getUpdateJobDelay() {
+		return 200;
+	}		
+	
+	/**
+	 * Creates and returns a job used to update the launch configuration dialog
+	 * for this tab. Subclasses may override.
+	 * 
+	 * @return job to update the launch dialog for this tab
+	 * @since 3.6
+	 */
+	protected Job createUpdateJob() {
+		return  new WorkbenchJob(getControl().getDisplay(), "Update LCD") { //$NON-NLS-1$
+			public IStatus runInUIThread(IProgressMonitor monitor) {
+				if (!getControl().isDisposed()) {
+					refreshStatus();
+				}
+				return Status.OK_STATUS;
+			}
+			public boolean shouldRun() {
+				return !getControl().isDisposed();
+			}
+		};
+	}	
+	
+	/**
 	 * Update apply & revert buttons, as well as buttons and message on the
 	 * launch config dialog.
 	 */
@@ -1256,20 +1322,23 @@ public class LaunchConfigurationTabGroupViewer {
 	 */
 	protected void handleNameModified() {
 		getWorkingCopy().rename(fNameWidget.getText().trim());
-		refreshStatus();
+		scheduleUpdateJob();
 	}		
 	
 	/**
-	 * Notification that the 'Apply' button has been pressed
+	 * Notification that the 'Apply' button has been pressed.
+	 * 
+	 * @return the saved launch configuration or <code>null</code> if not saved
 	 */
-	protected boolean handleApplyPressed() {
+	protected ILaunchConfiguration handleApplyPressed() {
 		if(fOriginal != null && fOriginal.isReadOnly()) {
 			IStatus status = ResourcesPlugin.getWorkspace().validateEdit(new IFile[] {fOriginal.getFile()}, fViewerControl.getShell());
 			if(!status.isOK()) {
-				return false;
+				return null;
 			}
 		}
 		Exception exception = null;
+		final ILaunchConfiguration[] saved = new ILaunchConfiguration[1];
 		try {
 			// update launch config
 			fInitializingTabs = true;
@@ -1286,7 +1355,7 @@ public class LaunchConfigurationTabGroupViewer {
 					IRunnableWithProgress runnable = new IRunnableWithProgress() {
 						public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
 							try {
-								fOriginal = ((LaunchConfigurationWorkingCopy)fWorkingCopy).doSave(monitor);
+								saved[0] = ((LaunchConfigurationWorkingCopy)fWorkingCopy).doSave(monitor);
 							} 
 							catch (CoreException e) {DebugUIPlugin.log(e);}
 						}
@@ -1294,7 +1363,7 @@ public class LaunchConfigurationTabGroupViewer {
 					getLaunchConfigurationDialog().run(true, false, runnable);
 				}
 				else {
-					fOriginal = fWorkingCopy.doSave();
+					saved[0] = fWorkingCopy.doSave();
 				}
 			}
 			updateButtons();
@@ -1305,9 +1374,9 @@ public class LaunchConfigurationTabGroupViewer {
 		catch (InterruptedException e) {exception = e;} 
 		if(exception != null) {
 			DebugUIPlugin.errorDialog(getShell(), LaunchConfigurationsMessages.LaunchConfigurationDialog_Launch_Configuration_Error_46, LaunchConfigurationsMessages.LaunchConfigurationDialog_Exception_occurred_while_saving_launch_configuration_47, exception); // 
-			return false;
+			return null;
 		} else {
-			return true;
+			return saved[0];
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java
index bd96853..4aaa188 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -273,6 +273,7 @@ public class LaunchConfigurationView extends AbstractDebugView implements ILaunc
         TreeViewer viewer = getTreeViewer();
         if (viewer != null) {
 			try {
+				viewer.getControl().setRedraw(false);
                 viewer.add(configuration.getType(), configuration);
                 // if moved, remove original now
                 if (from != null) {
@@ -284,6 +285,9 @@ public class LaunchConfigurationView extends AbstractDebugView implements ILaunc
                 updateFilterLabel();
 			} 
 			catch (CoreException e) {}
+			finally {
+				viewer.getControl().setRedraw(true);
+			}
         }
     }
 
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java
index 78af170..64281cc 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java
@@ -239,6 +239,11 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun
 	private boolean fSetDefaultOnOpen = false;
 	
 	/**
+	 * Whether in the process of setting the input to the tab viewer
+	 */
+	private boolean fSettingInput = false;
+	
+	/**
 	 * Constructs a new launch configuration dialog on the given
 	 * parent shell.
 	 * 
@@ -911,30 +916,35 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun
 			if (newInput instanceof ILaunchConfiguration) {
 				renamed = getLaunchManager().getMovedFrom((ILaunchConfiguration)newInput) != null;
 			}
- 			if (fTabViewer.canSave() && fTabViewer.isDirty() && !deleted && !renamed) {
- 				if(fLaunchConfigurationView != null) {
- 					fLaunchConfigurationView.setAutoSelect(false);
- 				}
- 				int ret = showUnsavedChangesDialog();
- 				if(ret == IDialogConstants.YES_ID) {
- 					fTabViewer.handleApplyPressed();
- 					fTabViewer.setInput(newInput);
- 				}
-				else if(ret == IDialogConstants.NO_ID) {
-					fTabViewer.handleRevertPressed();
-					fTabViewer.setInput(newInput);
-				}
-				else {
-					fLaunchConfigurationView.getViewer().setSelection(new StructuredSelection(input));
-				}
- 				fLaunchConfigurationView.setAutoSelect(true);
-  			}
- 			else {
- 				fTabViewer.setInput(newInput);
- 				if(fTabViewer.isDirty()) {
- 					fTabViewer.handleApplyPressed();
- 				}
- 			}
+			try {
+				fSettingInput = true;
+	 			if (fTabViewer.canSave() && fTabViewer.isDirty() && !deleted && !renamed) {
+	 				if(fLaunchConfigurationView != null) {
+	 					fLaunchConfigurationView.setAutoSelect(false);
+	 				}
+	 				int ret = showUnsavedChangesDialog();
+	 				if(ret == IDialogConstants.YES_ID) {
+	 					fTabViewer.handleApplyPressed();
+	 					fTabViewer.setInput(newInput);
+	 				}
+					else if(ret == IDialogConstants.NO_ID) {
+						fTabViewer.handleRevertPressed();
+						fTabViewer.setInput(newInput);
+					}
+					else {
+						fLaunchConfigurationView.getViewer().setSelection(new StructuredSelection(input));
+					}
+	 				fLaunchConfigurationView.setAutoSelect(true);
+	  			}
+	 			else {
+	 				fTabViewer.setInput(newInput);
+	 				if(fTabViewer.isDirty()) {
+	 					fTabViewer.handleApplyPressed();
+	 				}
+	 			}
+			} finally {
+				fSettingInput = false;
+			}
  			if(getShell() != null && getShell().isVisible()) {
  				resize();
  			}
@@ -948,9 +958,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun
 	protected void handleLaunchPressed() {
 		ILaunchConfiguration config = fTabViewer.getOriginal();
 		if (fTabViewer.isDirty() && fTabViewer.canSave()) {
-			if (fTabViewer.handleApplyPressed())
-				config = fTabViewer.getOriginal();
-			else config = null;
+			config = fTabViewer.handleApplyPressed();
 		}
 		if(config != null) {
 			close();
@@ -1501,20 +1509,24 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun
 	 * @see org.eclipse.debug.ui.ILaunchConfigurationDialog#updateButtons()
 	 */
 	public void updateButtons() {
-		// New, Delete, & Duplicate toolbar actions
- 		getNewAction().setEnabled(getNewAction().isEnabled());
-		getDeleteAction().setEnabled(getDeleteAction().isEnabled());
-		getDuplicateAction().setEnabled(getDuplicateAction().isEnabled());
-		fTabViewer.refresh();
-		getButton(ID_LAUNCH_BUTTON).setEnabled(fTabViewer.canLaunch() & fTabViewer.canLaunchWithModes() & !fTabViewer.hasDuplicateDelegates());
+		if (!fSettingInput) {
+			// New, Delete, & Duplicate toolbar actions
+	 		getNewAction().setEnabled(getNewAction().isEnabled());
+			getDeleteAction().setEnabled(getDeleteAction().isEnabled());
+			getDuplicateAction().setEnabled(getDuplicateAction().isEnabled());
+			fTabViewer.refresh();
+			getButton(ID_LAUNCH_BUTTON).setEnabled(fTabViewer.canLaunch() & fTabViewer.canLaunchWithModes() & !fTabViewer.hasDuplicateDelegates());
+		}
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.debug.ui.ILaunchConfigurationDialog#updateMessage()
 	 */
 	public void updateMessage() {
-		setErrorMessage(fTabViewer.getErrorMesssage());
-		setMessage(fTabViewer.getMessage());
+		if (!fSettingInput) {
+			setErrorMessage(fTabViewer.getErrorMesssage());
+			setMessage(fTabViewer.getMessage());
+		}
 	}
 	
 	/**
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchHistory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchHistory.java
index 4657cdc..307b091 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchHistory.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchHistory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -344,26 +344,31 @@ public class LaunchHistory implements ILaunchListener, ILaunchConfigurationListe
 	 * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationAdded(org.eclipse.debug.core.ILaunchConfiguration)
 	 */
 	public void launchConfigurationAdded(ILaunchConfiguration configuration) {
-		checkFavorites(configuration);
+		ILaunchConfiguration movedFrom = DebugPlugin.getDefault().getLaunchManager().getMovedFrom(configuration);
+		// if this is a move, the launchConfigurationRemoved(...) method will handle updates
+		if (movedFrom == null) {
+			checkFavorites(configuration);
+		}
 	}
 	
 	/**
-	 * This method checks if the specified <code>ILaunchConfiguration</code> is a favorite of the launch group 
-	 * with the specified id
+	 * This method checks if the specified <code>ILaunchConfiguration</code> is a favorite in this
+	 * history's launch group.
+	 * 
 	 * @param configuration
-	 * @param launchgroup
-	 * @return true if the configuration is a favorite of the launch group with the given id, false otherwise
+	 * @return true if the configuration is a favorite in this history's launch group, false otherwise
 	 * @throws CoreException
 	 * 
 	 * @since 3.4
 	 */
-	protected boolean isFavorite(ILaunchConfiguration configuration, String launchgroup) throws CoreException {
+	protected boolean isFavorite(ILaunchConfiguration configuration) throws CoreException {
+		String groupId = getLaunchGroup().getIdentifier();
 		List favoriteGroups = configuration.getAttribute(IDebugUIConstants.ATTR_FAVORITE_GROUPS, (List)null);
 		if (favoriteGroups == null) {
 			// check deprecated attributes for backwards compatibility
-			if (launchgroup.equals(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP)) {
+			if (groupId.equals(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP)) {
 				return configuration.getAttribute(IDebugUIConstants.ATTR_DEBUG_FAVORITE, false);
-			} else if (launchgroup.equals(IDebugUIConstants.ID_RUN_LAUNCH_GROUP)) {
+			} else if (groupId.equals(IDebugUIConstants.ID_RUN_LAUNCH_GROUP)) {
 				return configuration.getAttribute(IDebugUIConstants.ATTR_RUN_FAVORITE, false);
 			} 
 		} 
@@ -386,28 +391,10 @@ public class LaunchHistory implements ILaunchListener, ILaunchConfigurationListe
 			return false;
 		}
 		try {
-			List favoriteGroups = configuration.getAttribute(IDebugUIConstants.ATTR_FAVORITE_GROUPS, (List)null);
-			if (favoriteGroups == null) {
-				// check deprecated attributes for backwards compatibility
-				String groupId = getLaunchGroup().getIdentifier();
-				boolean fav = false;
-				if (groupId.equals(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP)) {
-					fav = configuration.getAttribute(IDebugUIConstants.ATTR_DEBUG_FAVORITE, false);
-				} else if (groupId.equals(IDebugUIConstants.ID_RUN_LAUNCH_GROUP)) {
-					fav = configuration.getAttribute(IDebugUIConstants.ATTR_RUN_FAVORITE, false);
-				}
-				if (fav) {
-					addFavorite(configuration);
-					return true;
-				} 
-				removeFavorite(configuration);
-				return false;
-			} 
-			else if (favoriteGroups.contains(getLaunchGroup().getIdentifier())) {
+			if (isFavorite(configuration)) {
 				addFavorite(configuration);
 				return true;
-			} 
-			else {
+			} else {
 				removeFavorite(configuration);
 				return false;
 			}
@@ -441,7 +428,7 @@ public class LaunchHistory implements ILaunchListener, ILaunchConfigurationListe
 	public synchronized void removeFromHistory(ILaunchConfiguration configuration) {
 		try {
 			boolean removed = fCompleteHistory.remove(configuration);
-			if(isFavorite(configuration, getLaunchGroup().getIdentifier())) {
+			if(isFavorite(configuration)) {
 				removed |= fFavorites.remove(configuration);
 			}
 			if(removed) {
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
index ce99c11..781c363 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
@@ -9,6 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     Teodor Madan (Freescale) -  Bug 292360 -  [Memory View] platform renderings do not implement correctly IMemoryRendering#getControl
  *     Teodor Madan (Freescale) -  Bug 292426 -  [Memory View] platform renderings cannot be repositioned from non-UI thread through calls to IRepositionableMemoryRendering#goToAddress 
+ *     Teodor Madan (Freescale) & Jeremiah Swan (IBM) - Bug 300036 -  [Memory View] NPE in AbstractAsyncTableRendering#getSelectedAddress on rendering creation
  *******************************************************************************/
 
 package org.eclipse.debug.internal.ui.memory.provisional;
@@ -551,6 +552,9 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
 	 * @see org.eclipse.debug.ui.memory.IResettableMemoryRendering#resetRendering()
 	 */
 	public void resetRendering() throws DebugException {
+		if (!fIsCreated)
+			return;
+
 		BigInteger baseAddress = fContentDescriptor.getContentBaseAddress();
 
 		fTableViewer.setSelection(baseAddress);
@@ -2059,6 +2063,9 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
 	 * @return the currently selected address in this rendering
 	 */
 	public BigInteger getSelectedAddress() {
+		if (!fIsCreated)
+			return null;
+		
 		Object key = fTableViewer.getSelectionKey();
 		
 		if (key != null && key instanceof BigInteger)
@@ -2206,6 +2213,9 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
 	 * Update labels in the memory rendering.
 	 */
 	public void refresh() {
+		if (!fIsCreated)
+			return;
+
 		fTableViewer.refresh();
 	}
 
@@ -2214,6 +2224,9 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
 	 * Resize column to the preferred size.
 	 */
 	public void resizeColumnsToPreferredSize() {
+		if (!fIsCreated)
+			return;
+
 		fTableViewer.resizeColumnsToPreferredSize();
 		if (!fIsShowAddressColumn)
 		{
@@ -2235,6 +2248,9 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
 	 */
 	public void updateLabels()
 	{
+		if (!fIsCreated)
+			return;
+
 		UIJob job = new UIJob("updateLabels"){ //$NON-NLS-1$
 
 			public IStatus runInUIThread(IProgressMonitor monitor) {
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/MemoryViewPresentationContext.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/MemoryViewPresentationContext.java
index 0daa545..2649243 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/MemoryViewPresentationContext.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/MemoryViewPresentationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointLabelProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointLabelProvider.java
index 6659e00..5e21aad 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointLabelProvider.java
@@ -1,37 +1,60 @@
-/*****************************************************************
- * Copyright (c) 2009 Texas Instruments and others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
- *****************************************************************/
-package org.eclipse.debug.internal.ui.model.elements;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
-import org.eclipse.jface.viewers.TreePath;
-
-/**
- * Breakpoint label provider.
- * 
- * @since 3.6
- */
-public class BreakpointLabelProvider extends DebugElementLabelProvider {
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider#getChecked(org.eclipse.jface.viewers.TreePath, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext)
-	 */
-	public boolean getChecked(TreePath path, IPresentationContext presentationContext) throws CoreException {
-		Object lastSegment = path.getLastSegment();
-		if (lastSegment instanceof IBreakpoint) {
-			return ((IBreakpoint) lastSegment).isEnabled();
-		}
-		
-		return false;
-	}
-}
+/*****************************************************************
+ * Copyright (c) 2009, 2010 Texas Instruments and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
+ *     Patrick Chuong (Texas Instruments) - bug fix 306768
+ *****************************************************************/
+package org.eclipse.debug.internal.ui.model.elements;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.TreePath;
+
+/**
+ * Breakpoint label provider.
+ * 
+ * @since 3.6
+ */
+public class BreakpointLabelProvider extends DebugElementLabelProvider {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider#getLabel(org.eclipse.jface.viewers.TreePath, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.String, int)
+	 */
+	protected String getLabel(TreePath elementPath, IPresentationContext presentationContext, String columnId, int columnIndex) throws CoreException {
+		if (columnIndex == 0)
+			return super.getLabel(elementPath, presentationContext, columnId, columnIndex);
+		else
+			return IInternalDebugCoreConstants.EMPTY_STRING; 
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider#getImageDescriptor(org.eclipse.jface.viewers.TreePath, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.String, int)
+	 */
+	protected ImageDescriptor getImageDescriptor(TreePath elementPath, IPresentationContext presentationContext, String columnId, int columnIndex) throws CoreException {
+		if (columnIndex == 0)
+			return super.getImageDescriptor(elementPath, presentationContext, columnId, columnIndex);
+		else
+			return null;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider#getChecked(org.eclipse.jface.viewers.TreePath, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext)
+	 */
+	public boolean getChecked(TreePath path, IPresentationContext presentationContext) throws CoreException {
+		Object lastSegment = path.getLastSegment();
+		if (lastSegment instanceof IBreakpoint) {
+			return ((IBreakpoint) lastSegment).isEnabled();
+		}
+		
+		return false;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java
index d2a98f2..b30014d 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java
@@ -1,1096 +1,1102 @@
-/*****************************************************************
- * Copyright (c) 2009, 2010 Texas Instruments and others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
- *     IBM Corporation - ongoing enhancements and bug fixing
- *     Wind River Systems - ongoing enhancements and bug fixing
- *****************************************************************/
-package org.eclipse.debug.internal.ui.model.elements;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.runtime.CoreException;
-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.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.core.IBreakpointsListener;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IThread;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointOrganizer;
-import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointUIConstants;
-import org.eclipse.debug.internal.ui.elements.adapters.DefaultBreakpointsViewInput;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
-import org.eclipse.debug.internal.ui.viewers.update.BreakpointManagerProxy;
-import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainer;
-import org.eclipse.debug.internal.ui.views.breakpoints.ElementComparator;
-import org.eclipse.debug.ui.DebugUITools;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.eclipse.debug.ui.contexts.DebugContextEvent;
-import org.eclipse.debug.ui.contexts.IDebugContextListener;
-import org.eclipse.debug.ui.contexts.IDebugContextService;
-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.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * This class provides breakpoint content for the breakpoint manager.
- * 
- * @since 3.6
- */
-public class BreakpointManagerContentProvider extends ElementContentProvider 
-        implements IBreakpointsListener {
-    
-    /**
-     * Breakpoint input data. Contains all input specific data.
-     * 
-     * @since 3.6
-     */
-    private class InputData {
-        /**
-         * Breakpoint manager input
-         */
-        final private DefaultBreakpointsViewInput fInput;
-        
-        /**
-         * Model proxy of the input
-         */
-        final private List/*<AbstractModelProxy>*/ fProxies = new ArrayList(1);
-        
-        /**
-         * Element comparator, use to compare the ordering of elements for the model
-         * <br/> Note: We assume that the comparator does not change.  
-         */
-        private ElementComparator fComparator;
-        
-        /**
-         * The breakpoint root container.<br/>
-         * Note: The final qualifier guarantees that fContainer will be 
-         * initialized before the class is accessed on other threads.
-         */
-        final private BreakpointContainer fContainer;
-        
-        /**
-         * Known current breakpoint organizers.
-         */
-        private IBreakpointOrganizer[] fOrganizers;
-        
-        private IStructuredSelection fDebugContext = StructuredSelection.EMPTY; 
-        
-        private IPropertyChangeListener fOrganizersListener = new IPropertyChangeListener() {
-            public void propertyChange(PropertyChangeEvent event) {
-                // For any property changes in breakpiont organizers, refresh the containers.
-                updateContainers();
-            }
-        };
-
-        private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() {
-            public void propertyChange(PropertyChangeEvent event) {
-                presentationPropertyChanged(event);
-            }
-        };
-        
-        private IDebugContextListener fDebugContextListener = new IDebugContextListener() {
-            public void debugContextChanged(DebugContextEvent event) {
-                InputData.this.debugContextChanged(event);
-            }
-        };
-
-        /**
-         * Constructor
-         *  
-         * @param input the breakpoint manager input
-         * @param proxy the model proxy 
-         * @param filter the debug context selection 
-         * @param comparator the element comparator 
-         */
-        InputData(DefaultBreakpointsViewInput input) {
-            fInput = input;
-            fComparator = (ElementComparator)
-                input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR);
-            
-            fOrganizers = (IBreakpointOrganizer[])
-                input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS);
-
-            // Create the initial container.
-            ModelDelta initialDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
-            IBreakpoint[] breakpoints = filterBreakpoints(
-                fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints());
-            fContainer = createRootContainer(initialDelta, fInput, fOrganizers, breakpoints);
-            
-            registerOrganizersListener(null, fOrganizers);
-            input.getContext().addPropertyChangeListener(fPresentationContextListener);
-            
-            IWorkbenchWindow window = fInput.getContext().getWindow();
-            if (window != null) {
-                IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window);
-                ISelection debugContext = debugContextService.getActiveContext();
-                if (debugContext instanceof IStructuredSelection) {
-                    synchronized(this) {
-                        fDebugContext = (IStructuredSelection)debugContext;
-                    }
-                }
-                debugContextService.addDebugContextListener(fDebugContextListener);
-            }
-        }
-        
-        void dispose() {
-            // Unregister listener to breakpoint organizers.
-            IBreakpointOrganizer[] organizers;
-            synchronized(this) {
-                organizers = fOrganizers;
-                fOrganizers = null;
-            }
-            registerOrganizersListener(organizers, null);
-            
-            // Unregister listener to presentation context.
-            fInput.getContext().removePropertyChangeListener(fPresentationContextListener);
-            
-            // Unregister listener to debug context in window.
-            IWorkbenchWindow window = fInput.getContext().getWindow();
-            if (window != null) {
-                IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window);
-                debugContextService.removeDebugContextListener(fDebugContextListener);
-            }
-
-        }
-        
-        void proxyInstalled(BreakpointManagerProxy proxy) {
-            ModelDelta rootDelta = null;
-            synchronized(this) {
-                fProxies.add(proxy);
-                
-                // Generate an install delta
-                
-                rootDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
-                buildInstallDelta(rootDelta, fContainer);
-
-                if (DEBUG_BREAKPOINT_DELTAS) {
-                    System.out.println("PROXY INSTALLED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$
-                }
-
-                proxy.postModelChanged(rootDelta, false);
-            }
-        }
-
-        synchronized void proxyDisposed(BreakpointManagerProxy proxy) {
-            fProxies.remove(proxy);
-            if (DEBUG_BREAKPOINT_DELTAS) {
-                System.out.println("PROXY DISPOSED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$
-            }
-        }
-
-        synchronized BreakpointManagerProxy[] getProxies() {
-            return (BreakpointManagerProxy[])fProxies.toArray(new BreakpointManagerProxy[fProxies.size()]);
-        }
-        
-        /**
-         * Change the breakpoint organizers for the root container.
-         * 
-         * @param organizers the new organizers.
-         */
-        void setOrganizers(IBreakpointOrganizer[] organizers) {
-            IBreakpointOrganizer[] oldOrganizers = null;
-            synchronized(this) {
-                oldOrganizers = fOrganizers;
-                fOrganizers = organizers;
-            }
-            registerOrganizersListener(oldOrganizers, organizers);
-            updateContainers();
-        }
-
-        private void registerOrganizersListener(IBreakpointOrganizer[] oldOrganizers, IBreakpointOrganizer[] newOrganizers) {
-            if (oldOrganizers != null) {
-                for (int i = 0; i < oldOrganizers.length; i++) {
-                    oldOrganizers[i].removePropertyChangeListener(fOrganizersListener);
-                }
-            }
-            if (newOrganizers != null) {
-                for (int i = 0; i < newOrganizers.length; i++) {
-                    newOrganizers[i].addPropertyChangeListener(fOrganizersListener);
-                }
-            }
-        }
-        
-        void updateContainers() {
-            IBreakpoint[] breakpoints = filterBreakpoints(
-                fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints());
-    
-            synchronized(this) {
-                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
-                // create a reference container, use for deleting elements and adding elements
-                ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE);                
-                BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints);
-    
-                // delete the removed elements
-                deleteRemovedElements(fContainer, refContainer, delta);
-                
-                // adjust the old organizer with the reference organizer
-                BreakpointContainer.copyOrganizers(fContainer, refContainer);
-                
-                // insert the added elements
-                IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta);
-                delta.setChildCount(fContainer.getChildren().length);
-                
-                // select the new breakpoint
-                if (newBreakpoint != null) {
-                    appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT);
-                }
-                if (DEBUG_BREAKPOINT_DELTAS) {
-                    System.out.println("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$
-                }
-                postModelChanged(delta, false); 
-            }            
-        }
-
-        private synchronized IStructuredSelection getDebugContext() {
-            return fDebugContext;
-        }
-        
-        /**
-         * Handles the property changed events in presentation contexts.
-         * Sub-classes may override to perform additional handling.
-         * 
-         * @param presentation Presentation context that changed.
-         */
-        private void presentationPropertyChanged(PropertyChangeEvent event) {
-            if (IPresentationContext.PROPERTY_DISPOSED.equals(event.getProperty())) {
-                contextDisposed(fInput.getContext());
-            }
-            if (IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS.equals(event.getProperty())) {
-                IBreakpointOrganizer[] organizers = (IBreakpointOrganizer[])event.getNewValue();
-                setOrganizers(organizers);
-            }
-            else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION.equals(event.getProperty()) ) 
-            {
-                IStructuredSelection selection = null;
-                
-                if (Boolean.TRUE.equals(event.getNewValue()) ) {
-                    selection = getDebugContext();
-                }
-                setFilterSelection(selection);
-            } 
-            else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION.equals(event.getProperty()) ) 
-            {
-                IStructuredSelection selection = null;
-                
-                if (Boolean.TRUE.equals(event.getNewValue()) ) {
-                    selection = getDebugContext();
-                }
-                trackSelection(selection);
-            } 
-        }
-
-        private void debugContextChanged(DebugContextEvent event) {
-            IStructuredSelection newContext;
-            if (event.getContext() instanceof IStructuredSelection) {
-                newContext = (IStructuredSelection)event.getContext();
-            } else {
-                newContext = StructuredSelection.EMPTY;
-            }
-
-            synchronized(this) {
-                fDebugContext = newContext;
-            }
-
-            if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) {
-                setFilterSelection(newContext);
-            }
-            
-            if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION)) ) {
-                trackSelection(newContext);
-            }            
-        }
-        
-        
-        private void setFilterSelection(IStructuredSelection ss) {
-            ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
-            boolean changed = false;
-        
-            // calculate supported breakpoints outside of the synchronized section.
-            IBreakpoint[] allBreakpoints = fBpManager.getBreakpoints();
-            boolean[] supportedBreakpoints = new boolean[allBreakpoints.length];
-            for (int i = 0; i < allBreakpoints.length; ++i) {
-                supportedBreakpoints[i] = supportsBreakpoint(ss, allBreakpoints[i]);
-            }
-            
-            synchronized(this) {
-                Set existingBreakpoints = new HashSet(Arrays.asList(fContainer.getBreakpoints()));
-                
-                for (int i = 0; i < allBreakpoints.length; ++i) {
-                    boolean contain = existingBreakpoints.contains(allBreakpoints[i]);                                  
-                        
-                    if (supportedBreakpoints[i]) {
-                        if (!contain) {
-                            fContainer.addBreakpoint(allBreakpoints[i], delta);
-                            changed = true;
-                        }
-                    } else {
-                        if (contain) {
-                            fContainer.removeBreakpoint(allBreakpoints[i], delta);
-                            changed = true;
-                        }
-                        
-                    }
-                    
-                }
-            
-                if (changed) {
-                    if (DEBUG_BREAKPOINT_DELTAS) {
-                        System.out.println("POST BREAKPOINT DELTA (setFilterSelection)\n"); //$NON-NLS-1$
-                    }
-                    postModelChanged(delta, false); 
-                }
-            }
-        }
-
-        
-        private void trackSelection(IStructuredSelection selection) {
-            if (selection == null || selection.size() != 1) {
-                return;
-            }
-
-            Iterator iter = selection.iterator();
-            Object firstElement = iter.next();
-            if (firstElement == null || iter.hasNext()) {
-                return;
-            }
-            IThread thread = null;
-            if (firstElement instanceof IStackFrame) {
-                thread = ((IStackFrame) firstElement).getThread();
-            } else if (firstElement instanceof IThread) {
-                thread = (IThread) firstElement;
-            } else {
-                return;
-            }
-
-            IBreakpoint[] breakpoints = thread.getBreakpoints();
-            Set bpsSet = new HashSet(breakpoints.length * 4/3);
-            for (int i = 0; i< breakpoints.length; i++) {
-                bpsSet.add(breakpoints[i]);
-            }
-
-            ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
-            synchronized (this) {
-                if (buildTrackSelectionDelta(delta, fContainer, bpsSet)) {
-                    if (DEBUG_BREAKPOINT_DELTAS) {
-                        System.out.println("POST BREAKPOINT DELTA (trackSelection)\n"); //$NON-NLS-1$
-                    }
-                    BreakpointManagerProxy[] proxies = getProxies();
-                    for (int i = 0; i < proxies.length; i++) {
-                        proxies[i].postModelChanged(delta, true);
-                    }       
-                }
-            }
-
-        }
-
-        /**
-         * Recursive function to build the model delta to select a breakpoint
-         * corresponding to the active debug context selection.
-         * 
-         * @param delta Delta node to build on
-         * @param container Container element to build delta for.
-         * @param breakpoints Breakpoint set to be selected.
-         * @return whether we found a breakpoint to select
-         */
-        private boolean buildTrackSelectionDelta(ModelDelta delta, BreakpointContainer container, Set breakpoints) {
-            Object[] children = container.getChildren();
-            delta.setChildCount(children.length);
-            for (int i = 0; i < children.length; i++) {
-                ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE);
-                if (children[i] instanceof BreakpointContainer) {
-                    BreakpointContainer childContainer = (BreakpointContainer)children[i];
-                    boolean containsBP = false;
-                    IBreakpoint[] containerBPs = childContainer.getBreakpoints();
-                    for (int j = 0; j < containerBPs.length; j++) {
-                        if (breakpoints.contains(containerBPs[j])) {
-                            containsBP = true; 
-                            break;
-                        }
-                    }
-                    if (containsBP && buildTrackSelectionDelta(childDelta, childContainer, breakpoints) ) { 
-                        return true; 
-                    }
-                } else if (children[i] instanceof IBreakpoint &&
-                    breakpoints.contains(children[i])) 
-                {
-                    childDelta.setFlags(IModelDelta.SELECT | IModelDelta.EXPAND);
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        /**
-         * Helper method to add breakpoints to the given input.
-         * 
-         * @param data the input to add the breakpoints
-         * @param breakpoints the breakpoints
-         */
-        void breakpointsAdded(IBreakpoint[] breakpoints) {
-            IBreakpoint[] filteredBreakpoints = filterBreakpoints(
-                fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints);
-            
-            synchronized (this) {
-                ModelDelta delta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
-                for (int i = 0; i < filteredBreakpoints.length; ++i) {
-                    fContainer.addBreakpoint(filteredBreakpoints[i], delta);
-                }
-                delta.setChildCount(fContainer.getChildren().length);
-                
-                // select the breakpoint
-                if (filteredBreakpoints.length > 0) {
-                    appendModelDeltaToElement(delta, filteredBreakpoints[0], IModelDelta.SELECT);
-                }
-            
-                if (DEBUG_BREAKPOINT_DELTAS) {
-                    System.out.println("POST BREAKPOINT DELTA (breakpointsAddedInput)\n"); //$NON-NLS-1$
-                }
-                postModelChanged(delta, false); 
-            }
-        }
-
-        /**
-         * Helper method to remove breakpoints from a given input.
-         * 
-         * @param data the input to add the breakpoints
-         * @param breakpoints the breakpoints
-         */
-        void breakpointsRemoved(IBreakpoint[] breakpoints) {
-            IBreakpoint[] filteredBreakpoints = filterBreakpoints(
-                fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints);
-            
-            synchronized (this) {
-                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
-                for (int i = 0; i < filteredBreakpoints.length; ++i) {
-                    fContainer.removeBreakpoint(filteredBreakpoints[i], delta);
-                }
-                
-                if (DEBUG_BREAKPOINT_DELTAS) {
-                    System.out.println("POST BREAKPOINT DELTA (breakpointsRemovedInput)\n"); //$NON-NLS-1$
-                }
-                postModelChanged(delta, false); 
-            }
-        }
-        
-        void breakpointsChanged(IBreakpoint[] breakpoints) {
-            
-            
-            IBreakpoint[] filteredBreakpoints = filterBreakpoints(
-                fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints);
-
-            synchronized (this) {
-                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
-
-                // If the change caused a breakpoint to be added (installed) or remove (un-installed) update accordingly.
-                List removed = new ArrayList();
-                List added = new ArrayList();
-                List filteredAsList = Arrays.asList(filteredBreakpoints);
-                for (int i = 0; i < breakpoints.length; i++) {
-                    IBreakpoint bp = breakpoints[i];
-                    boolean oldContainedBp = fContainer.contains(bp);
-                    boolean newContained = filteredAsList.contains(bp);
-                    if (oldContainedBp && !newContained) {
-                        removed.add(bp);
-                    } else if (!oldContainedBp && newContained) {
-                        added.add(bp);
-                    }                   
-                }
-                if (!added.isEmpty()) {
-                    breakpointsAdded((IBreakpoint[]) added.toArray(new IBreakpoint[added.size()]));
-                }
-                if (!removed.isEmpty()) {
-                    breakpointsRemoved((IBreakpoint[]) removed.toArray(new IBreakpoint[removed.size()]));
-                }                       
-                for (int i = 0; i < filteredBreakpoints.length; ++i)
-                    appendModelDelta(fContainer, delta, IModelDelta.STATE | IModelDelta.CONTENT, filteredBreakpoints[i]); // content flag triggers detail refresh
-
-                if (DEBUG_BREAKPOINT_DELTAS) {
-                    System.out.println("POST BREAKPOINT DELTA (breakpointsChanged)\n"); //$NON-NLS-1$
-                }
-                postModelChanged(delta, false); 
-            }            
-        }
-
-        
-        /**
-         * Recursive function to build the model delta to install breakpoint
-         * model proxies for all breakpoints and breakpoint containers.
-         * 
-         * @param delta Delta node to build on
-         * @param container Container element to build delta for.
-         */
-        private void buildInstallDelta(ModelDelta delta, BreakpointContainer container) {
-            Object[] children = container.getChildren();
-            delta.setChildCount(children.length);
-            for (int i = 0; i < children.length; i++) {
-                ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE);
-                if (children[i] instanceof BreakpointContainer) {
-                    childDelta.setFlags(IModelDelta.INSTALL);
-                    buildInstallDelta(childDelta, (BreakpointContainer)children[i]);
-                } else if (children[i] instanceof IBreakpoint) {
-                    childDelta.setFlags(IModelDelta.INSTALL);
-                }
-            }
-        }
-
-        
-        /**
-         * Insert elements from the reference container to an existing container.
-         * 
-         * @param container the existing  container to insert the new elements.
-         * @param refContainer the reference container to compare elements that are added.
-         * @param containerDelta the delta of the existing container.
-         */
-        private IBreakpoint insertAddedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) {
-            IBreakpoint newBreakpoint = null;
-            
-            Object[] children = container.getChildren();
-            Object[] refChildren = refContainer.getChildren();
-            
-
-            for (int i = 0; i < refChildren.length; ++i) {
-                Object element = getElement(children, refChildren[i]);
-
-                // if a child of refContainer doesn't exist in container, than insert it to container
-                //      - if the reference child is a container, than copy the reference child container to container
-                //      - otherwise (Breakpoint), add the breakpoint to container
-                if (element == null) {
-                    if (refChildren[i] instanceof BreakpointContainer) {
-                        BreakpointContainer.addChildContainer(container, (BreakpointContainer) refChildren[i], containerDelta);
-                    } else {
-                        BreakpointContainer.addBreakpoint(container, (IBreakpoint) refChildren[i], containerDelta);
-                        if (newBreakpoint == null)
-                            newBreakpoint = (IBreakpoint) refChildren[i];
-                    }
-                    
-                // if a child exist in container, than recursively search into container. And also update the organizer of
-                // of container to the one in the refContainer's child.
-                } else if (element instanceof BreakpointContainer) {
-                    int index = Arrays.asList(children).indexOf(element);  
-                    ModelDelta childDelta = containerDelta.addNode(element, index, IModelDelta.STATE, -1);
-                    BreakpointContainer.copyOrganizers((BreakpointContainer) element, (BreakpointContainer) refChildren[i]);
-                    newBreakpoint = insertAddedElements((BreakpointContainer) element, (BreakpointContainer) refChildren[i], childDelta);
-                    childDelta.setChildCount(((BreakpointContainer) element).getChildren().length);
-                }
-            }
-            
-            return newBreakpoint;
-        }
-        
-        /**
-         * Delete elements from existing container that doesn't exist in the reference container.
-         * 
-         * @param container the existing container to delete the removed elements.
-         * @param refContainer the reference container to compare elements that are removed.
-         * @param containerDelta the delta of the existing container.
-         */
-        private void deleteRemovedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) {
-            Object[] children = container.getChildren();
-            Object[] refChildren = refContainer.getChildren();
-            
-            // if a child of container doesn't exist in refContainer, than remove it from container
-            for (int i = 0; i < children.length; ++i) {
-                Object element = getElement(refChildren, children[i]);
-                
-                if (element == null) {
-                    if (children[i] instanceof BreakpointContainer) {
-                        BreakpointContainer.removeAll((BreakpointContainer) children[i], containerDelta);
-                    } else {
-                        BreakpointContainer.removeBreakpoint(container, (IBreakpoint) children[i], containerDelta);
-                    }
-                } else if (element instanceof BreakpointContainer){
-
-                    ModelDelta childDelta = containerDelta.addNode(children[i], IModelDelta.STATE);                     
-                    deleteRemovedElements((BreakpointContainer) children[i], (BreakpointContainer) element, childDelta);
-                }
-            }
-        }
-        
-        /**
-         * Get the element that is in the collection.
-         * 
-         * @param collection the collection of elements.
-         * @param element the element to search.
-         * @return if element exist in collection, than it is returned, otherwise <code>null</code> is returned.
-         * @see insertAddedElements
-         * @see deleteRemovedElements
-         */
-        private Object getElement(Object[] collection, Object element) {
-            for (int i = 0; i < collection.length; ++i)
-                if (collection[i] instanceof BreakpointContainer && element instanceof BreakpointContainer) {               
-                    if (collection[i].equals(element))
-                        return collection[i];
-                } else {
-                    if (collection[i].equals(element))
-                        return collection[i];
-                }
-            return null;
-        }
-        
-        /**
-         * Create a root container.
-         * 
-         * @param rootDelta the root delta.
-         * @param input the view input.
-         * @param organizers the breakpoint organizers.
-         * @param oldContainer the old container, use to determine whether a new breakpoint should be expanded.
-         * @param the breakpoint manager.
-         */
-        private BreakpointContainer createRootContainer(
-            ModelDelta rootDelta, DefaultBreakpointsViewInput input, 
-            IBreakpointOrganizer[] organizers, IBreakpoint[] breakpoints) 
-        {
-            
-            BreakpointContainer container = new BreakpointContainer(organizers, fComparator);
-            container.initDefaultContainers(rootDelta);
-            
-            for (int i = 0; i < breakpoints.length; ++i) {
-                container.addBreakpoint(breakpoints[i], rootDelta);             
-            }
-            
-            return container;
-        }       
-        
-        /**
-         * Fire model change event for the input.
-         * 
-         * @param input the input.
-         * @param delta the model delta.
-         * @param debugReason the debug string.
-         */
-        synchronized private void postModelChanged(final IModelDelta delta, boolean select) {
-            for (int i = 0; fProxies != null && i < fProxies.size(); i++) {
-                ((BreakpointManagerProxy)fProxies.get(i)).postModelChanged(delta, select);
-            }       
-        }
-
-
-    }
-    
-    private class InputDataMap extends LinkedHashMap {
-        private static final long serialVersionUID = 1L;
-
-        public InputDataMap() {
-            super(1, (float)0.75, true);
-        }
-        
-        protected boolean removeEldestEntry(java.util.Map.Entry arg0) {
-            InputData data = (InputData)arg0.getValue();
-            if (size() > getMaxInputsCache() && data.fProxies.isEmpty()) {
-                data.dispose();
-                return true;
-            }
-            return false;
-        }
-    }
-    
-    /**
-     * Scheduling rule to make sure that breakpoint manager listener updates
-     * are process serially.
-     */
-    private ISchedulingRule fBreakpointsListenerSchedulingRule = new ISchedulingRule() {
-        
-        public boolean isConflicting(ISchedulingRule rule) {
-            return rule == this;
-        }
-        
-        public boolean contains(ISchedulingRule rule) {
-            return rule == this;
-        }
-    };
-    
-    // debug flags
-    public static boolean DEBUG_BREAKPOINT_DELTAS = false;
-    
-    static {
-        DEBUG_BREAKPOINT_DELTAS = DebugUIPlugin.DEBUG && "true".equals(                     //$NON-NLS-1$
-         Platform.getDebugOption("org.eclipse.debug.ui/debug/viewers/breakpointDeltas"));   //$NON-NLS-1$
-    } 
-        
-    /**
-     * A map of input to info data cache
-     */
-    final private Map fInputToData = Collections.synchronizedMap(new InputDataMap());
-    
-    /**
-     * Flag indicating whether the content provider is currently a breakpoints listener.
-     */
-    private boolean fIsBreakpointListener = false;
-    
-    /**
-     * The breakpoint manager.
-     */
-    final private IBreakpointManager fBpManager = DebugPlugin.getDefault().getBreakpointManager();
-    
-    /**
-     * Sub-classes may override this method to filter the breakpoints.
-     * 
-     * @param input the breakpoint manager input.
-     * @param breakpoints the list of breakpoint to filter.
-     * @return the filtered list of breakpoint based on the input.
-     */
-    protected IBreakpoint[] filterBreakpoints(DefaultBreakpointsViewInput input, IStructuredSelection selectionFilter, IBreakpoint[] breakpoints) {      
-        if (selectionFilter != null && !selectionFilter.isEmpty()) {
-            List targets = getDebugTargets(selectionFilter);
-            ArrayList retVal = new ArrayList();
-            if (targets != null) {
-                for (int i = 0; i < breakpoints.length; ++i) {
-                    if (supportsBreakpoint(targets, breakpoints[i]))
-                        retVal.add(breakpoints[i]);
-                }
-            }
-            return (IBreakpoint[]) retVal.toArray(new IBreakpoint[retVal.size()]);
-        } else {
-            return breakpoints;
-        }
-    }
-    
-    /**
-     * Sub-classes may override this to determine whether the breakpoint is supported by the selection.
-     * 
-     * @param ss the selection of the debug elements.
-     * @param breakpoint the breakpoint.
-     * @return true if supported.
-     */
-    protected boolean supportsBreakpoint(IStructuredSelection ss, IBreakpoint breakpoint) {
-        return supportsBreakpoint(getDebugTargets(ss), breakpoint);
-    }
-    
-    /**
-     * Returns true if the breakpoint contains in one of the targets.
-     * 
-     * @param targets a list of <code>IDebugTarget</code> objects.
-     * @param breakpoint the breakpoint.
-     * @return true if breakpoint contains in the list of targets.
-     */
-    protected boolean supportsBreakpoint(List targets, IBreakpoint breakpoint) {
-        boolean exist = targets.size() == 0 ? true : false;
-        for (int i = 0; !exist && i < targets.size(); ++i) {
-            IDebugTarget target = (IDebugTarget) targets.get(i);
-            exist |= target.supportsBreakpoint(breakpoint);
-        }
-        return exist;
-    }
-    
-    /**
-     * Returns the list of IDebugTarget for the selection.
-     * 
-     * @param ss the selection.
-     * @return list of IDebugTarget object.
-     */
-    protected List getDebugTargets(IStructuredSelection ss) {
-        List debugTargets = new ArrayList(2);
-        if (ss != null) {
-            Iterator i = ss.iterator();
-            while (i.hasNext()) {
-                Object next = i.next();
-                if (next instanceof IDebugElement) {
-                    debugTargets.add(((IDebugElement)next).getDebugTarget());
-                } else if (next instanceof ILaunch) {
-                    IDebugTarget[] targets = ((ILaunch)next).getDebugTargets();
-                    for (int j = 0; j < targets.length; j++) {
-                        debugTargets.add(targets[j]);
-                    }
-                } else if (next instanceof IProcess) {
-                    IDebugTarget target = (IDebugTarget)((IProcess)next).getAdapter(IDebugTarget.class);
-                    if (target != null) {
-                        debugTargets.add(target);
-                    }
-                }   
-            }
-        }
-        return debugTargets;
-    }
-
-
-    /**
-     * Maximum number of breakpoint manager input objects that this provider 
-     * will cache data for.  This method is called once upon class creation 
-     * when setting up the data cache.  Sub-classes may override to provide
-     * a custom setting.
-     * 
-     * @return Maximum data cache size
-     */
-    protected int getMaxInputsCache() {
-        return 2;
-    }
-    
-    /**
-     * Handles the event when a presentation context is dispoed.
-     * Sub-classes may override to perform additional cleanup.
-     * 
-     * @param context Presetnation context that was disposed.
-     */
-    protected void contextDisposed(IPresentationContext context) {
-        List removed = new ArrayList(1);
-        synchronized (fInputToData) {
-            for (Iterator itr = fInputToData.entrySet().iterator(); itr.hasNext();) {
-                Map.Entry entry = (Map.Entry)itr.next();
-                IPresentationContext entryContext = ((DefaultBreakpointsViewInput)entry.getKey()).getContext();
-                if (context.equals(entryContext)) {
-                    removed.add(entry.getValue());
-                    itr.remove();
-                }
-            }
-        }
-
-        // Dispose the removed input datas
-        for (int i = 0; i < removed.size(); i++) {
-            ((InputData)removed.get(i)).dispose();
-        }
-    }
-    
-    /**
-     * Register the breakpoint manager input with this content provider.
-     * 
-     * @param input the breakpoint manager input to register.
-     * @param proxy the model proxy of the input.
-     * @param organizers the breakpoint organizer, can be <code>null</code>.
-     * @param selectionFilter the selection filter, can be <code>null</code>.
-     * @param comparator the element comparator.
-     */
-    public void registerModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) {
-        synchronized(this) {
-            if (!fIsBreakpointListener) {
-                fBpManager.addBreakpointListener(this);
-                fIsBreakpointListener = true;
-            }
-        }
-        InputData inputData = getInputData(input);
-        if (inputData != null) {
-            inputData.proxyInstalled(proxy);
-        }
-    }
-    
-    /**
-     * Unregister the breakpoint manager input with this content provider.
-     * 
-     * @param input the breakpoint manager input to unregister.
-     */
-    public void unregisterModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) {
-        InputData inputData = (InputData)fInputToData.get(input);
-        if (inputData != null) {
-            inputData.proxyDisposed(proxy);
-            
-            if (fInputToData.isEmpty()) {
-                synchronized(this) {
-                    if (fIsBreakpointListener) {
-                        fBpManager.removeBreakpointListener(this);
-                        fIsBreakpointListener = false;
-                    }
-                }
-            }
-        }
-    }   
-    
-    private InputData getInputData(DefaultBreakpointsViewInput input) {
-        if (Boolean.TRUE.equals(input.getContext().getProperty(IPresentationContext.PROPERTY_DISPOSED)) ) {
-            return null;
-        }
-        
-        InputData data = null;
-        synchronized (fInputToData) {
-            data = (InputData)fInputToData.get(input); 
-            if (data == null) {
-                data = new InputData(input);
-                fInputToData.put(input, data);
-            }
-        }
-        return data;
-    }
-    
-    /**
-     * Returns the selection filter for the input.
-     * 
-     * @param input the selection.
-     */
-    protected IStructuredSelection getSelectionFilter(Object input, IStructuredSelection debugContext) {
-        if (input instanceof DefaultBreakpointsViewInput) {
-            IPresentationContext presentation = ((DefaultBreakpointsViewInput)input).getContext();
-            if ( Boolean.TRUE.equals(presentation.getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) {
-                return debugContext;
-            }
-        }
-        return null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String)
-     */
-    protected boolean supportsContextId(String id) {
-        return id.equals(IDebugUIConstants.ID_BREAKPOINT_VIEW);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildCount(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
-     */
-    protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException {
-        Object input = monitor.getViewerInput();
-        if (input instanceof DefaultBreakpointsViewInput) {
-            DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input;
-            InputData inputData = getInputData(bpManagerInput);
-            if (inputData != null) {
-                return inputData.fContainer.getChildren().length;
-            }
-        }       
-        return 0;       
-    }   
-
-    /* (non-Javadoc)
-     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildren(java.lang.Object, int, int, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
-     */
-    protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException {
-        Object input = monitor.getViewerInput();
-        if (input instanceof DefaultBreakpointsViewInput) {
-            DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input;
-            InputData inputData = getInputData(bpManagerInput);
-            if (inputData != null) {
-                Object[] children =  inputData.fContainer.getChildren();
-                return getElements(children, index, length);
-            }
-        }       
-                
-        return EMPTY;
-    }   
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsAdded(org.eclipse.debug.core.model.IBreakpoint[])
-     */
-    public void breakpointsAdded(final IBreakpoint[] breakpoints) {
-        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
-            {
-                setSystem(true);
-                setRule(fBreakpointsListenerSchedulingRule);
-            }
-            
-            protected IStatus run(IProgressMonitor monitor) {
-                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
-                for (int i = 0; i < datas.length; i++) {
-                    datas[i].breakpointsAdded(breakpoints);
-                }
-                return Status.OK_STATUS;
-            }
-        }.schedule();               
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsRemoved(org.eclipse.debug.core.model.IBreakpoint[], org.eclipse.core.resources.IMarkerDelta[])
-     */
-    public void breakpointsRemoved(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
-        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
-            {
-                setSystem(true);
-                setRule(fBreakpointsListenerSchedulingRule);
-            }
-            
-            protected IStatus run(IProgressMonitor monitor) {
-                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
-                for (int i = 0; i < datas.length; i++) {
-                    datas[i].breakpointsRemoved(breakpoints);
-                }               
-                return Status.OK_STATUS;
-            }
-        }.schedule();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsChanged(org.eclipse.debug.core.model.IBreakpoint[], org.eclipse.core.resources.IMarkerDelta[])
-     */
-    public void breakpointsChanged(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
-        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
-            {
-                setSystem(true);
-                setRule(fBreakpointsListenerSchedulingRule);
-            }
-            
-            protected IStatus run(IProgressMonitor monitor) {
-                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
-                for (int i = 0; i < datas.length; i++) {
-                    datas[i].breakpointsChanged(breakpoints);
-                }               
-                return Status.OK_STATUS;
-            }
-        }.schedule();
-    }   
-    /**
-     * Appends the model delta flags to child containers that contains the breakpoint.
-     * 
-     * @param parent the parent container.
-     * @param parentDelta the parent model delta.
-     * @param flags the model delta flags.
-     * @param breakpoint the breakpoint to search in the children containers.
-     */
-    private void appendModelDelta(BreakpointContainer parent, ModelDelta parentDelta, int flags, IBreakpoint breakpoint) {
-        BreakpointContainer[] containers = parent.getContainers();
-        
-        if (parent.contains(breakpoint)) {
-            if ((containers.length != 0)) {
-                for (int i = 0; i < containers.length; ++i) {
-                    ModelDelta nodeDelta = parentDelta.addNode(containers[i], IModelDelta.STATE);
-                    appendModelDelta(containers[i], nodeDelta, flags, breakpoint);
-                }           
-            } else {
-                parentDelta.addNode(breakpoint, flags);
-            }
-        }           
-    }
-    
-    /**
-     * Appends the model delta to the first found element in the model delta tree.
-     * 
-     * @param parentDelta the parent delta
-     * @param element the element to search
-     * @param flags the delta flags
-     */
-    private void appendModelDeltaToElement(IModelDelta parentDelta, Object element, int flags) {
-        if (element.equals(parentDelta.getElement())) {
-            ((ModelDelta) parentDelta).setFlags(parentDelta.getFlags() | flags);
-            return;
-        }
-        
-        IModelDelta[] childDeltas = parentDelta.getChildDeltas();
-        for (int i = 0; i < childDeltas.length; ++i) {
-            if (element.equals(childDeltas[i].getElement())) {
-                ((ModelDelta) childDeltas[i]).setFlags(childDeltas[i].getFlags() | flags);
-                return;
-            }
-            
-            appendModelDeltaToElement(childDeltas[i], element, flags);
-        }
-    }
-}
+/*****************************************************************
+ * Copyright (c) 2009, 2010 Texas Instruments and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
+ *     IBM Corporation - ongoing enhancements and bug fixing
+ *     Wind River Systems - ongoing enhancements and bug fixing
+ *****************************************************************/
+package org.eclipse.debug.internal.ui.model.elements;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IMarkerDelta;
+import org.eclipse.core.runtime.CoreException;
+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.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.IBreakpointManager;
+import org.eclipse.debug.core.IBreakpointsListener;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IThread;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointOrganizer;
+import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointUIConstants;
+import org.eclipse.debug.internal.ui.elements.adapters.DefaultBreakpointsViewInput;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
+import org.eclipse.debug.internal.ui.viewers.update.BreakpointManagerProxy;
+import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainer;
+import org.eclipse.debug.internal.ui.views.breakpoints.ElementComparator;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.debug.ui.contexts.DebugContextEvent;
+import org.eclipse.debug.ui.contexts.IDebugContextListener;
+import org.eclipse.debug.ui.contexts.IDebugContextService;
+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.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchWindow;
+
+/**
+ * This class provides breakpoint content for the breakpoint manager.
+ * 
+ * @since 3.6
+ */
+public class BreakpointManagerContentProvider extends ElementContentProvider 
+        implements IBreakpointsListener {
+    
+    /**
+     * Breakpoint input data. Contains all input specific data.
+     * 
+     * @since 3.6
+     */
+    private class InputData {
+        /**
+         * Breakpoint manager input
+         */
+        final private DefaultBreakpointsViewInput fInput;
+        
+        /**
+         * Model proxy of the input
+         */
+        final private List/*<AbstractModelProxy>*/ fProxies = new ArrayList(1);
+        
+        /**
+         * Element comparator, use to compare the ordering of elements for the model
+         * <br/> Note: We assume that the comparator does not change.  
+         */
+        private ElementComparator fComparator;
+        
+        /**
+         * The breakpoint root container.<br/>
+         * Note: The final qualifier guarantees that fContainer will be 
+         * initialized before the class is accessed on other threads.
+         */
+        final private BreakpointContainer fContainer;
+        
+        /**
+         * Known current breakpoint organizers.
+         */
+        private IBreakpointOrganizer[] fOrganizers;
+        
+        private IStructuredSelection fDebugContext = StructuredSelection.EMPTY; 
+        
+        private IPropertyChangeListener fOrganizersListener = new IPropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent event) {
+                // For any property changes in breakpiont organizers, refresh the containers.
+                updateContainers();
+            }
+        };
+
+        private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent event) {
+                presentationPropertyChanged(event);
+            }
+        };
+        
+        private IDebugContextListener fDebugContextListener = new IDebugContextListener() {
+            public void debugContextChanged(DebugContextEvent event) {
+                InputData.this.debugContextChanged(event);
+            }
+        };
+
+        /**
+         * Constructor
+         *  
+         * @param input the breakpoint manager input
+         * @param proxy the model proxy 
+         * @param filter the debug context selection 
+         * @param comparator the element comparator 
+         */
+        InputData(DefaultBreakpointsViewInput input) {
+            fInput = input;
+            fComparator = (ElementComparator)
+                input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR);
+            
+            fOrganizers = (IBreakpointOrganizer[])
+                input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS);
+
+            // Create the initial container.
+            ModelDelta initialDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
+            IBreakpoint[] breakpoints = filterBreakpoints(
+                fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints());
+            fContainer = createRootContainer(initialDelta, fInput, fOrganizers, breakpoints);
+            
+            registerOrganizersListener(null, fOrganizers);
+            input.getContext().addPropertyChangeListener(fPresentationContextListener);
+            
+            IWorkbenchWindow window = fInput.getContext().getWindow();
+            if (window != null) {
+                IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window);
+                ISelection debugContext = debugContextService.getActiveContext();
+                if (debugContext instanceof IStructuredSelection) {
+                    synchronized(this) {
+                        fDebugContext = (IStructuredSelection)debugContext;
+                    }
+                }
+                debugContextService.addDebugContextListener(fDebugContextListener);
+            }
+        }
+        
+        void dispose() {
+            // Unregister listener to breakpoint organizers.
+            IBreakpointOrganizer[] organizers;
+            synchronized(this) {
+                organizers = fOrganizers;
+                fOrganizers = null;
+            }
+            registerOrganizersListener(organizers, null);
+            
+            // Unregister listener to presentation context.
+            fInput.getContext().removePropertyChangeListener(fPresentationContextListener);
+            
+            // Unregister listener to debug context in window.
+            IWorkbenchWindow window = fInput.getContext().getWindow();
+            if (window != null) {
+                IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window);
+                debugContextService.removeDebugContextListener(fDebugContextListener);
+            }
+
+        }
+        
+        void proxyInstalled(BreakpointManagerProxy proxy) {
+            ModelDelta rootDelta = null;
+            synchronized(this) {
+                fProxies.add(proxy);
+                
+                // Generate an install delta
+                
+                rootDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
+                buildInstallDelta(rootDelta, fContainer);
+
+                if (DEBUG_BREAKPOINT_DELTAS) {
+                    System.out.println("PROXY INSTALLED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$
+                }
+
+                proxy.postModelChanged(rootDelta, false);
+            }
+        }
+
+        synchronized void proxyDisposed(BreakpointManagerProxy proxy) {
+            fProxies.remove(proxy);
+            if (DEBUG_BREAKPOINT_DELTAS) {
+                System.out.println("PROXY DISPOSED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$
+            }
+        }
+
+        synchronized BreakpointManagerProxy[] getProxies() {
+            return (BreakpointManagerProxy[])fProxies.toArray(new BreakpointManagerProxy[fProxies.size()]);
+        }
+        
+        /**
+         * Change the breakpoint organizers for the root container.
+         * 
+         * @param organizers the new organizers.
+         */
+        void setOrganizers(IBreakpointOrganizer[] organizers) {
+            IBreakpointOrganizer[] oldOrganizers = null;
+            synchronized(this) {
+                oldOrganizers = fOrganizers;
+                fOrganizers = organizers;
+            }
+            registerOrganizersListener(oldOrganizers, organizers);
+            updateContainers();
+        }
+
+        private void registerOrganizersListener(IBreakpointOrganizer[] oldOrganizers, IBreakpointOrganizer[] newOrganizers) {
+            if (oldOrganizers != null) {
+                for (int i = 0; i < oldOrganizers.length; i++) {
+                    oldOrganizers[i].removePropertyChangeListener(fOrganizersListener);
+                }
+            }
+            if (newOrganizers != null) {
+                for (int i = 0; i < newOrganizers.length; i++) {
+                    newOrganizers[i].addPropertyChangeListener(fOrganizersListener);
+                }
+            }
+        }
+        
+        void updateContainers() {
+            IBreakpoint[] breakpoints = filterBreakpoints(
+                fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints());
+    
+            synchronized(this) {
+                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
+                // create a reference container, use for deleting elements and adding elements
+                ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE);                
+                BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints);
+    
+                // delete the removed elements
+                deleteRemovedElements(fContainer, refContainer, delta);
+                
+                // adjust the old organizer with the reference organizer
+                BreakpointContainer.copyOrganizers(fContainer, refContainer);
+                
+                // insert the added elements
+                IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta);
+                delta.setChildCount(fContainer.getChildren().length);
+                
+                // select the new breakpoint
+                if (newBreakpoint != null) {
+                    appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT);
+                }
+                if (DEBUG_BREAKPOINT_DELTAS) {
+                    System.out.println("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$
+                }
+                postModelChanged(delta, false); 
+            }            
+        }
+
+        private synchronized IStructuredSelection getDebugContext() {
+            return fDebugContext;
+        }
+        
+        /**
+         * Handles the property changed events in presentation contexts.
+         * Sub-classes may override to perform additional handling.
+         * 
+         * @param presentation Presentation context that changed.
+         */
+        private void presentationPropertyChanged(PropertyChangeEvent event) {
+            if (IPresentationContext.PROPERTY_DISPOSED.equals(event.getProperty())) {
+                contextDisposed(fInput.getContext());
+            }
+            if (IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS.equals(event.getProperty())) {
+                IBreakpointOrganizer[] organizers = (IBreakpointOrganizer[])event.getNewValue();
+                setOrganizers(organizers);
+            }
+            else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION.equals(event.getProperty()) ) 
+            {
+                IStructuredSelection selection = null;
+                
+                if (Boolean.TRUE.equals(event.getNewValue()) ) {
+                    selection = getDebugContext();
+                }
+                setFilterSelection(selection);
+            } 
+            else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION.equals(event.getProperty()) ) 
+            {
+                IStructuredSelection selection = null;
+                
+                if (Boolean.TRUE.equals(event.getNewValue()) ) {
+                    selection = getDebugContext();
+                }
+                trackSelection(selection);
+            } 
+        }
+
+        private void debugContextChanged(DebugContextEvent event) {
+            IStructuredSelection newContext;
+            if (event.getContext() instanceof IStructuredSelection) {
+                newContext = (IStructuredSelection)event.getContext();
+            } else {
+                newContext = StructuredSelection.EMPTY;
+            }
+
+            synchronized(this) {
+                fDebugContext = newContext;
+            }
+
+            if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) {
+                setFilterSelection(newContext);
+            }
+            
+            if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION)) ) {
+                trackSelection(newContext);
+            }            
+        }
+        
+        
+        private void setFilterSelection(IStructuredSelection ss) {
+            ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
+            boolean changed = false;
+        
+            // calculate supported breakpoints outside of the synchronized section.
+            IBreakpoint[] allBreakpoints = fBpManager.getBreakpoints();
+            boolean[] supportedBreakpoints = new boolean[allBreakpoints.length];
+            for (int i = 0; i < allBreakpoints.length; ++i) {
+                supportedBreakpoints[i] = supportsBreakpoint(ss, allBreakpoints[i]);
+            }
+            
+            synchronized(this) {
+                Set existingBreakpoints = new HashSet(Arrays.asList(fContainer.getBreakpoints()));
+
+                // Bug 310879
+                // Process breakpoints in two passes: first remove breakpoints, then add new ones.
+                // This way the breakpoint counts and indexes will be consistent in the delta.
+                for (int i = 0; i < allBreakpoints.length; ++i) {
+                    if (!supportedBreakpoints[i] && existingBreakpoints.contains(allBreakpoints[i])) {
+                        fContainer.removeBreakpoint(allBreakpoints[i], delta);
+	                    changed = true;
+                    }
+                }
+                for (int i = 0; i < allBreakpoints.length; ++i) {
+                    if (supportedBreakpoints[i] && !existingBreakpoints.contains(allBreakpoints[i])) {
+	                    fContainer.addBreakpoint(allBreakpoints[i], delta);
+	                    changed = true;
+                    }
+                }
+
+                if (changed) {
+                    if (DEBUG_BREAKPOINT_DELTAS) {
+                        System.out.println("POST BREAKPOINT DELTA (setFilterSelection)\n"); //$NON-NLS-1$
+                    }
+                    postModelChanged(delta, false); 
+                }
+            }
+        }
+
+        
+        private void trackSelection(IStructuredSelection selection) {
+            if (selection == null || selection.size() != 1) {
+                return;
+            }
+
+            Iterator iter = selection.iterator();
+            Object firstElement = iter.next();
+            if (firstElement == null || iter.hasNext()) {
+                return;
+            }
+            IThread thread = null;
+            if (firstElement instanceof IStackFrame) {
+                thread = ((IStackFrame) firstElement).getThread();
+            } else if (firstElement instanceof IThread) {
+                thread = (IThread) firstElement;
+            } else {
+                return;
+            }
+
+            IBreakpoint[] breakpoints = thread.getBreakpoints();
+            Set bpsSet = new HashSet(breakpoints.length * 4/3);
+            for (int i = 0; i< breakpoints.length; i++) {
+                bpsSet.add(breakpoints[i]);
+            }
+
+            ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
+            synchronized (this) {
+                if (buildTrackSelectionDelta(delta, fContainer, bpsSet)) {
+                    if (DEBUG_BREAKPOINT_DELTAS) {
+                        System.out.println("POST BREAKPOINT DELTA (trackSelection)\n"); //$NON-NLS-1$
+                    }
+                    BreakpointManagerProxy[] proxies = getProxies();
+                    for (int i = 0; i < proxies.length; i++) {
+                        proxies[i].postModelChanged(delta, true);
+                    }       
+                }
+            }
+
+        }
+
+        /**
+         * Recursive function to build the model delta to select a breakpoint
+         * corresponding to the active debug context selection.
+         * 
+         * @param delta Delta node to build on
+         * @param container Container element to build delta for.
+         * @param breakpoints Breakpoint set to be selected.
+         * @return whether we found a breakpoint to select
+         */
+        private boolean buildTrackSelectionDelta(ModelDelta delta, BreakpointContainer container, Set breakpoints) {
+            Object[] children = container.getChildren();
+            delta.setChildCount(children.length);
+            for (int i = 0; i < children.length; i++) {
+                ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE);
+                if (children[i] instanceof BreakpointContainer) {
+                    BreakpointContainer childContainer = (BreakpointContainer)children[i];
+                    boolean containsBP = false;
+                    IBreakpoint[] containerBPs = childContainer.getBreakpoints();
+                    for (int j = 0; j < containerBPs.length; j++) {
+                        if (breakpoints.contains(containerBPs[j])) {
+                            containsBP = true; 
+                            break;
+                        }
+                    }
+                    if (containsBP && buildTrackSelectionDelta(childDelta, childContainer, breakpoints) ) { 
+                        return true; 
+                    }
+                } else if (children[i] instanceof IBreakpoint &&
+                    breakpoints.contains(children[i])) 
+                {
+                    childDelta.setFlags(IModelDelta.SELECT | IModelDelta.EXPAND);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Helper method to add breakpoints to the given input.
+         * 
+         * @param data the input to add the breakpoints
+         * @param breakpoints the breakpoints
+         */
+        void breakpointsAdded(IBreakpoint[] breakpoints) {
+            IBreakpoint[] filteredBreakpoints = filterBreakpoints(
+                fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints);
+            
+            if (filteredBreakpoints.length > 0) {
+                synchronized (this) {
+                    ModelDelta delta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1);
+                    for (int i = 0; i < filteredBreakpoints.length; ++i) {
+                        // Avoid adding breakpoints which were already removed.  If breakpoints 
+                        // are added and removed very fast, the Breakpoint manager can issue 
+                        // breakpoint added events after breakpoint removed events!  This means 
+                        // that such breakpoints would never be removed from the view.
+                        // (Bug 289526)
+                        if (DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(filteredBreakpoints[i].getMarker()) != null) {
+                            fContainer.addBreakpoint(filteredBreakpoints[i], delta);
+                        }
+                    }
+                    delta.setChildCount(fContainer.getChildren().length);
+                    
+                    // select the breakpoint
+                    if (filteredBreakpoints.length > 0) {
+                        appendModelDeltaToElement(delta, filteredBreakpoints[0], IModelDelta.SELECT);
+                    }
+                
+                    if (DEBUG_BREAKPOINT_DELTAS) {
+                        System.out.println("POST BREAKPOINT DELTA (breakpointsAddedInput)\n"); //$NON-NLS-1$
+                    }
+                    postModelChanged(delta, false); 
+                }
+            }
+        }
+
+        /**
+         * Helper method to remove breakpoints from a given input.
+         * 
+         * @param data the input to add the breakpoints
+         * @param breakpoints the breakpoints
+         */
+        void breakpointsRemoved(IBreakpoint[] breakpoints) {
+            synchronized (this) {
+                boolean removed = false;
+                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
+                for (int i = 0; i < breakpoints.length; ++i) {
+                    removed = fContainer.removeBreakpoint(breakpoints[i], delta) || removed;
+                }
+                
+                if (removed) {
+                    if (DEBUG_BREAKPOINT_DELTAS) {
+                        System.out.println("POST BREAKPOINT DELTA (breakpointsRemovedInput)\n"); //$NON-NLS-1$
+                    }
+                    postModelChanged(delta, false); 
+                }
+            }
+        }
+        
+        void breakpointsChanged(IBreakpoint[] breakpoints) {
+            
+            
+            IBreakpoint[] filteredBreakpoints = filterBreakpoints(
+                fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints);
+
+            synchronized (this) {
+                ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE);
+
+                // If the change caused a breakpoint to be added (installed) or remove (un-installed) update accordingly.
+                List removed = new ArrayList();
+                List added = new ArrayList();
+                List filteredAsList = Arrays.asList(filteredBreakpoints);
+                for (int i = 0; i < breakpoints.length; i++) {
+                    IBreakpoint bp = breakpoints[i];
+                    boolean oldContainedBp = fContainer.contains(bp);
+                    boolean newContained = filteredAsList.contains(bp);
+                    if (oldContainedBp && !newContained) {
+                        removed.add(bp);
+                    } else if (!oldContainedBp && newContained) {
+                        added.add(bp);
+                    }                   
+                }
+                if (!added.isEmpty()) {
+                    breakpointsAdded((IBreakpoint[]) added.toArray(new IBreakpoint[added.size()]));
+                }
+                if (!removed.isEmpty()) {
+                    breakpointsRemoved((IBreakpoint[]) removed.toArray(new IBreakpoint[removed.size()]));
+                }                       
+                for (int i = 0; i < filteredBreakpoints.length; ++i)
+                    appendModelDelta(fContainer, delta, IModelDelta.STATE | IModelDelta.CONTENT, filteredBreakpoints[i]); // content flag triggers detail refresh
+
+                if (DEBUG_BREAKPOINT_DELTAS) {
+                    System.out.println("POST BREAKPOINT DELTA (breakpointsChanged)\n"); //$NON-NLS-1$
+                }
+                postModelChanged(delta, false); 
+            }            
+        }
+
+        
+        /**
+         * Recursive function to build the model delta to install breakpoint
+         * model proxies for all breakpoints and breakpoint containers.
+         * 
+         * @param delta Delta node to build on
+         * @param container Container element to build delta for.
+         */
+        private void buildInstallDelta(ModelDelta delta, BreakpointContainer container) {
+            Object[] children = container.getChildren();
+            delta.setChildCount(children.length);
+            for (int i = 0; i < children.length; i++) {
+                ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE);
+                if (children[i] instanceof BreakpointContainer) {
+                    childDelta.setFlags(IModelDelta.INSTALL);
+                    buildInstallDelta(childDelta, (BreakpointContainer)children[i]);
+                } else if (children[i] instanceof IBreakpoint) {
+                    childDelta.setFlags(IModelDelta.INSTALL);
+                }
+            }
+        }
+
+        
+        /**
+         * Insert elements from the reference container to an existing container.
+         * 
+         * @param container the existing  container to insert the new elements.
+         * @param refContainer the reference container to compare elements that are added.
+         * @param containerDelta the delta of the existing container.
+         */
+        private IBreakpoint insertAddedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) {
+            IBreakpoint newBreakpoint = null;
+            
+            Object[] children = container.getChildren();
+            Object[] refChildren = refContainer.getChildren();
+            
+
+            for (int i = 0; i < refChildren.length; ++i) {
+                Object element = getElement(children, refChildren[i]);
+
+                // if a child of refContainer doesn't exist in container, than insert it to container
+                //      - if the reference child is a container, than copy the reference child container to container
+                //      - otherwise (Breakpoint), add the breakpoint to container
+                if (element == null) {
+                    if (refChildren[i] instanceof BreakpointContainer) {
+                        BreakpointContainer.addChildContainer(container, (BreakpointContainer) refChildren[i], containerDelta);
+                    } else {
+                        BreakpointContainer.addBreakpoint(container, (IBreakpoint) refChildren[i], containerDelta);
+                        if (newBreakpoint == null)
+                            newBreakpoint = (IBreakpoint) refChildren[i];
+                    }
+                    
+                // if a child exist in container, than recursively search into container. And also update the organizer of
+                // of container to the one in the refContainer's child.
+                } else if (element instanceof BreakpointContainer) {
+                    ModelDelta childDelta = containerDelta.addNode(element, container.getChildIndex(element), IModelDelta.STATE, -1);
+                    BreakpointContainer.copyOrganizers((BreakpointContainer) element, (BreakpointContainer) refChildren[i]);
+                    newBreakpoint = insertAddedElements((BreakpointContainer) element, (BreakpointContainer) refChildren[i], childDelta);
+                    childDelta.setChildCount(((BreakpointContainer) element).getChildren().length);
+                }
+            }
+            
+            return newBreakpoint;
+        }
+        
+        /**
+         * Delete elements from existing container that doesn't exist in the reference container.
+         * 
+         * @param container the existing container to delete the removed elements.
+         * @param refContainer the reference container to compare elements that are removed.
+         * @param containerDelta the delta of the existing container.
+         */
+        private void deleteRemovedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) {
+            Object[] children = container.getChildren();
+            Object[] refChildren = refContainer.getChildren();
+            
+            // if a child of container doesn't exist in refContainer, than remove it from container
+            for (int i = 0; i < children.length; ++i) {
+                Object element = getElement(refChildren, children[i]);
+                
+                if (element == null) {
+                    if (children[i] instanceof BreakpointContainer) {
+                        BreakpointContainer.removeAll((BreakpointContainer) children[i], containerDelta);
+                    } else {
+                        BreakpointContainer.removeBreakpoint(container, (IBreakpoint) children[i], containerDelta);
+                    }
+                } else if (element instanceof BreakpointContainer){
+
+                    ModelDelta childDelta = containerDelta.addNode(children[i], IModelDelta.STATE);                     
+                    deleteRemovedElements((BreakpointContainer) children[i], (BreakpointContainer) element, childDelta);
+                }
+            }
+        }
+        
+        /**
+         * Get the element that is in the collection.
+         * 
+         * @param collection the collection of elements.
+         * @param element the element to search.
+         * @return if element exist in collection, than it is returned, otherwise <code>null</code> is returned.
+         * @see insertAddedElements
+         * @see deleteRemovedElements
+         */
+        private Object getElement(Object[] collection, Object element) {
+            for (int i = 0; i < collection.length; ++i)
+                if (collection[i] instanceof BreakpointContainer && element instanceof BreakpointContainer) {               
+                    if (collection[i].equals(element))
+                        return collection[i];
+                } else {
+                    if (collection[i].equals(element))
+                        return collection[i];
+                }
+            return null;
+        }
+        
+        /**
+         * Create a root container.
+         * 
+         * @param rootDelta the root delta.
+         * @param input the view input.
+         * @param organizers the breakpoint organizers.
+         * @param oldContainer the old container, use to determine whether a new breakpoint should be expanded.
+         * @param the breakpoint manager.
+         */
+        private BreakpointContainer createRootContainer(
+            ModelDelta rootDelta, DefaultBreakpointsViewInput input, 
+            IBreakpointOrganizer[] organizers, IBreakpoint[] breakpoints) 
+        {
+            
+            BreakpointContainer container = new BreakpointContainer(organizers, fComparator);
+            container.initDefaultContainers(rootDelta);
+            
+            for (int i = 0; i < breakpoints.length; ++i) {
+                container.addBreakpoint(breakpoints[i], rootDelta);             
+            }
+            
+            return container;
+        }       
+        
+        /**
+         * Fire model change event for the input.
+         * 
+         * @param input the input.
+         * @param delta the model delta.
+         * @param debugReason the debug string.
+         */
+        synchronized private void postModelChanged(final IModelDelta delta, boolean select) {
+            for (int i = 0; fProxies != null && i < fProxies.size(); i++) {
+                ((BreakpointManagerProxy)fProxies.get(i)).postModelChanged(delta, select);
+            }       
+        }
+
+
+    }
+    
+    private class InputDataMap extends LinkedHashMap {
+        private static final long serialVersionUID = 1L;
+
+        public InputDataMap() {
+            super(1, (float)0.75, true);
+        }
+        
+        protected boolean removeEldestEntry(java.util.Map.Entry arg0) {
+            InputData data = (InputData)arg0.getValue();
+            if (size() > getMaxInputsCache() && data.fProxies.isEmpty()) {
+                data.dispose();
+                return true;
+            }
+            return false;
+        }
+    }
+    
+    /**
+     * Scheduling rule to make sure that breakpoint manager listener updates
+     * are process serially.
+     */
+    private ISchedulingRule fBreakpointsListenerSchedulingRule = new ISchedulingRule() {
+        
+        public boolean isConflicting(ISchedulingRule rule) {
+            return rule == this;
+        }
+        
+        public boolean contains(ISchedulingRule rule) {
+            return rule == this;
+        }
+    };
+    
+    // debug flags
+    public static boolean DEBUG_BREAKPOINT_DELTAS = false;
+    
+    static {
+        DEBUG_BREAKPOINT_DELTAS = DebugUIPlugin.DEBUG && "true".equals(                     //$NON-NLS-1$
+         Platform.getDebugOption("org.eclipse.debug.ui/debug/viewers/breakpointDeltas"));   //$NON-NLS-1$
+    } 
+        
+    /**
+     * A map of input to info data cache
+     */
+    final private Map fInputToData = Collections.synchronizedMap(new InputDataMap());
+    
+    /**
+     * Flag indicating whether the content provider is currently a breakpoints listener.
+     */
+    private boolean fIsBreakpointListener = false;
+    
+    /**
+     * The breakpoint manager.
+     */
+    final private IBreakpointManager fBpManager = DebugPlugin.getDefault().getBreakpointManager();
+    
+    /**
+     * Sub-classes may override this method to filter the breakpoints.
+     * 
+     * @param input the breakpoint manager input.
+     * @param breakpoints the list of breakpoint to filter.
+     * @return the filtered list of breakpoint based on the input.
+     */
+    protected IBreakpoint[] filterBreakpoints(DefaultBreakpointsViewInput input, IStructuredSelection selectionFilter, IBreakpoint[] breakpoints) {      
+        if (selectionFilter != null && !selectionFilter.isEmpty()) {
+            List targets = getDebugTargets(selectionFilter);
+            ArrayList retVal = new ArrayList();
+            if (targets != null) {
+                for (int i = 0; i < breakpoints.length; ++i) {
+                    if (supportsBreakpoint(targets, breakpoints[i]))
+                        retVal.add(breakpoints[i]);
+                }
+            }
+            return (IBreakpoint[]) retVal.toArray(new IBreakpoint[retVal.size()]);
+        } else {
+            return breakpoints;
+        }
+    }
+    
+    /**
+     * Sub-classes may override this to determine whether the breakpoint is supported by the selection.
+     * 
+     * @param ss the selection of the debug elements.
+     * @param breakpoint the breakpoint.
+     * @return true if supported.
+     */
+    protected boolean supportsBreakpoint(IStructuredSelection ss, IBreakpoint breakpoint) {
+        return supportsBreakpoint(getDebugTargets(ss), breakpoint);
+    }
+    
+    /**
+     * Returns true if the breakpoint contains in one of the targets.
+     * 
+     * @param targets a list of <code>IDebugTarget</code> objects.
+     * @param breakpoint the breakpoint.
+     * @return true if breakpoint contains in the list of targets.
+     */
+    protected boolean supportsBreakpoint(List targets, IBreakpoint breakpoint) {
+        boolean exist = targets.size() == 0 ? true : false;
+        for (int i = 0; !exist && i < targets.size(); ++i) {
+            IDebugTarget target = (IDebugTarget) targets.get(i);
+            exist |= target.supportsBreakpoint(breakpoint);
+        }
+        return exist;
+    }
+    
+    /**
+     * Returns the list of IDebugTarget for the selection.
+     * 
+     * @param ss the selection.
+     * @return list of IDebugTarget object.
+     */
+    protected List getDebugTargets(IStructuredSelection ss) {
+        List debugTargets = new ArrayList(2);
+        if (ss != null) {
+            Iterator i = ss.iterator();
+            while (i.hasNext()) {
+                Object next = i.next();
+                if (next instanceof IDebugElement) {
+                    debugTargets.add(((IDebugElement)next).getDebugTarget());
+                } else if (next instanceof ILaunch) {
+                    IDebugTarget[] targets = ((ILaunch)next).getDebugTargets();
+                    for (int j = 0; j < targets.length; j++) {
+                        debugTargets.add(targets[j]);
+                    }
+                } else if (next instanceof IProcess) {
+                    IDebugTarget target = (IDebugTarget)((IProcess)next).getAdapter(IDebugTarget.class);
+                    if (target != null) {
+                        debugTargets.add(target);
+                    }
+                }   
+            }
+        }
+        return debugTargets;
+    }
+
+
+    /**
+     * Maximum number of breakpoint manager input objects that this provider 
+     * will cache data for.  This method is called once upon class creation 
+     * when setting up the data cache.  Sub-classes may override to provide
+     * a custom setting.
+     * 
+     * @return Maximum data cache size
+     */
+    protected int getMaxInputsCache() {
+        return 2;
+    }
+    
+    /**
+     * Handles the event when a presentation context is dispoed.
+     * Sub-classes may override to perform additional cleanup.
+     * 
+     * @param context Presetnation context that was disposed.
+     */
+    protected void contextDisposed(IPresentationContext context) {
+        List removed = new ArrayList(1);
+        synchronized (fInputToData) {
+            for (Iterator itr = fInputToData.entrySet().iterator(); itr.hasNext();) {
+                Map.Entry entry = (Map.Entry)itr.next();
+                IPresentationContext entryContext = ((DefaultBreakpointsViewInput)entry.getKey()).getContext();
+                if (context.equals(entryContext)) {
+                    removed.add(entry.getValue());
+                    itr.remove();
+                }
+            }
+        }
+
+        // Dispose the removed input datas
+        for (int i = 0; i < removed.size(); i++) {
+            ((InputData)removed.get(i)).dispose();
+        }
+    }
+    
+    /**
+     * Register the breakpoint manager input with this content provider.
+     * 
+     * @param input the breakpoint manager input to register.
+     * @param proxy the model proxy of the input.
+     * @param organizers the breakpoint organizer, can be <code>null</code>.
+     * @param selectionFilter the selection filter, can be <code>null</code>.
+     * @param comparator the element comparator.
+     */
+    public void registerModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) {
+        synchronized(this) {
+            if (!fIsBreakpointListener) {
+                fBpManager.addBreakpointListener(this);
+                fIsBreakpointListener = true;
+            }
+        }
+        InputData inputData = getInputData(input);
+        if (inputData != null) {
+            inputData.proxyInstalled(proxy);
+        }
+    }
+    
+    /**
+     * Unregister the breakpoint manager input with this content provider.
+     * 
+     * @param input the breakpoint manager input to unregister.
+     */
+    public void unregisterModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) {
+        InputData inputData = (InputData)fInputToData.get(input);
+        if (inputData != null) {
+            inputData.proxyDisposed(proxy);
+            
+            if (fInputToData.isEmpty()) {
+                synchronized(this) {
+                    if (fIsBreakpointListener) {
+                        fBpManager.removeBreakpointListener(this);
+                        fIsBreakpointListener = false;
+                    }
+                }
+            }
+        }
+    }   
+    
+    private InputData getInputData(DefaultBreakpointsViewInput input) {
+        if (Boolean.TRUE.equals(input.getContext().getProperty(IPresentationContext.PROPERTY_DISPOSED)) ) {
+            return null;
+        }
+        
+        InputData data = null;
+        synchronized (fInputToData) {
+            data = (InputData)fInputToData.get(input); 
+            if (data == null) {
+                data = new InputData(input);
+                fInputToData.put(input, data);
+            }
+        }
+        return data;
+    }
+    
+    /**
+     * Returns the selection filter for the input.
+     * 
+     * @param input the selection.
+     */
+    protected IStructuredSelection getSelectionFilter(Object input, IStructuredSelection debugContext) {
+        if (input instanceof DefaultBreakpointsViewInput) {
+            IPresentationContext presentation = ((DefaultBreakpointsViewInput)input).getContext();
+            if ( Boolean.TRUE.equals(presentation.getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) {
+                return debugContext;
+            }
+        }
+        return null;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String)
+     */
+    protected boolean supportsContextId(String id) {
+        return id.equals(IDebugUIConstants.ID_BREAKPOINT_VIEW);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildCount(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
+     */
+    protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException {
+        Object input = monitor.getViewerInput();
+        if (input instanceof DefaultBreakpointsViewInput) {
+            DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input;
+            InputData inputData = getInputData(bpManagerInput);
+            if (inputData != null) {
+                return inputData.fContainer.getChildren().length;
+            }
+        }       
+        return 0;       
+    }   
+
+    /* (non-Javadoc)
+     * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildren(java.lang.Object, int, int, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
+     */
+    protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException {
+        Object input = monitor.getViewerInput();
+        if (input instanceof DefaultBreakpointsViewInput) {
+            DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input;
+            InputData inputData = getInputData(bpManagerInput);
+            if (inputData != null) {
+                Object[] children =  inputData.fContainer.getChildren();
+                return getElements(children, index, length);
+            }
+        }       
+                
+        return EMPTY;
+    }   
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsAdded(org.eclipse.debug.core.model.IBreakpoint[])
+     */
+    public void breakpointsAdded(final IBreakpoint[] breakpoints) {
+        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
+            {
+                setSystem(true);
+                setRule(fBreakpointsListenerSchedulingRule);
+            }
+            
+            protected IStatus run(IProgressMonitor monitor) {
+                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
+                for (int i = 0; i < datas.length; i++) {
+                    datas[i].breakpointsAdded(breakpoints);
+                }
+                return Status.OK_STATUS;
+            }
+        }.schedule();               
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsRemoved(org.eclipse.debug.core.model.IBreakpoint[], org.eclipse.core.resources.IMarkerDelta[])
+     */
+    public void breakpointsRemoved(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
+        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
+            {
+                setSystem(true);
+                setRule(fBreakpointsListenerSchedulingRule);
+            }
+            
+            protected IStatus run(IProgressMonitor monitor) {
+                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
+                for (int i = 0; i < datas.length; i++) {
+                    datas[i].breakpointsRemoved(breakpoints);
+                }               
+                return Status.OK_STATUS;
+            }
+        }.schedule();
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.debug.core.IBreakpointsListener#breakpointsChanged(org.eclipse.debug.core.model.IBreakpoint[], org.eclipse.core.resources.IMarkerDelta[])
+     */
+    public void breakpointsChanged(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
+        new Job("Breakpoints View Update Job") { //$NON-NLS-1$
+            {
+                setSystem(true);
+                setRule(fBreakpointsListenerSchedulingRule);
+            }
+            
+            protected IStatus run(IProgressMonitor monitor) {
+                InputData[] datas = (InputData[])fInputToData.values().toArray(new InputData[0]);
+                for (int i = 0; i < datas.length; i++) {
+                    datas[i].breakpointsChanged(breakpoints);
+                }               
+                return Status.OK_STATUS;
+            }
+        }.schedule();
+    }   
+    /**
+     * Appends the model delta flags to child containers that contains the breakpoint.
+     * 
+     * @param parent the parent container.
+     * @param parentDelta the parent model delta.
+     * @param flags the model delta flags.
+     * @param breakpoint the breakpoint to search in the children containers.
+     */
+    private void appendModelDelta(BreakpointContainer parent, ModelDelta parentDelta, int flags, IBreakpoint breakpoint) {
+        BreakpointContainer[] containers = parent.getContainers();
+        
+        if (parent.contains(breakpoint)) {
+            if ((containers.length != 0)) {
+                for (int i = 0; i < containers.length; ++i) {
+                    ModelDelta nodeDelta = parentDelta.addNode(containers[i], IModelDelta.STATE);
+                    appendModelDelta(containers[i], nodeDelta, flags, breakpoint);
+                }           
+            } else {
+                parentDelta.addNode(breakpoint, flags);
+            }
+        }           
+    }
+    
+    /**
+     * Appends the model delta to the first found element in the model delta tree.
+     * 
+     * @param parentDelta the parent delta
+     * @param element the element to search
+     * @param flags the delta flags
+     */
+    private void appendModelDeltaToElement(IModelDelta parentDelta, Object element, int flags) {
+        if (element.equals(parentDelta.getElement())) {
+            ((ModelDelta) parentDelta).setFlags(parentDelta.getFlags() | flags);
+            return;
+        }
+        
+        IModelDelta[] childDeltas = parentDelta.getChildDeltas();
+        for (int i = 0; i < childDeltas.length; ++i) {
+            if (element.equals(childDeltas[i].getElement())) {
+                ((ModelDelta) childDeltas[i]).setFlags(childDeltas[i].getFlags() | flags);
+                return;
+            }
+            
+            appendModelDeltaToElement(childDeltas[i], element, flags);
+        }
+    }
+}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java
index 1a0d5e6..d35e921 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java
@@ -8,6 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Patrick Chuong (Texas Instruments) - added support for checkbox (Bug 286310)
+ *     Patrick Chuong (Texas Instruments) - bug fix 306768
  *******************************************************************************/
 package org.eclipse.debug.internal.ui.model.elements;
 
@@ -211,8 +212,8 @@ public abstract class ElementLabelProvider implements IElementLabelProvider {
 			if (columnIds != null) {
 				columnId = columnIds[i];
 			}
-			update.setLabel(getLabel(elementPath, presentationContext, columnId), i);
-			update.setImageDescriptor(getImageDescriptor(elementPath, presentationContext, columnId), i);
+			update.setLabel(getLabel(elementPath, presentationContext, columnId, i), i);
+			update.setImageDescriptor(getImageDescriptor(elementPath, presentationContext, columnId, i), i);
 			update.setBackground(getBackground(elementPath, presentationContext, columnId), i);
 			update.setForeground(getForeground(elementPath, presentationContext, columnId), i);
 			update.setFontData(getFontData(elementPath, presentationContext, columnId), i);
@@ -272,6 +273,21 @@ public abstract class ElementLabelProvider implements IElementLabelProvider {
 	protected ImageDescriptor getImageDescriptor(TreePath elementPath, IPresentationContext presentationContext, String columnId) throws CoreException {
 		return null;
 	}
+	
+	/**
+	 * Returns the <code>ImageDescriptor</code> for the path in the given column with the current presentation
+	 * @param elementPath
+	 * @param presentationContext
+	 * @param columnId
+	 * @param columnIndex
+	 * @return image descriptor or <code>null</code>
+	 * @throws CoreException
+	 * 
+	 * @since 3.6
+	 */
+	protected ImageDescriptor getImageDescriptor(TreePath elementPath, IPresentationContext presentationContext, String columnId, int columnIndex) throws CoreException {
+		return getImageDescriptor(elementPath, presentationContext, columnId);
+	}
 
 	/**
 	 * Returns the label for the path in the given column with the current presentation
@@ -283,6 +299,20 @@ public abstract class ElementLabelProvider implements IElementLabelProvider {
 	protected abstract String getLabel(TreePath elementPath, IPresentationContext presentationContext, String columnId) throws CoreException;	
 
 	/**
+	 * Returns the label for the path in the given column with the current presentation.
+	 * @param elementPath
+	 * @param presentationContext
+	 * @param columnId
+	 * @param columnIndex
+	 * @return label
+	 * 
+	 * @since 3.6
+	 */
+	protected String getLabel(TreePath elementPath, IPresentationContext presentationContext, String columnId, int columnIndex) throws CoreException {
+		return getLabel(elementPath, presentationContext, columnId);
+	}
+	
+	/**
 	 * Returns the checked state for the given path.
 	 * 
      * @param path Path of the element to retrieve the grayed state for.
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java
index b275b2d..1ab4939 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java
@@ -21,6 +21,7 @@ import org.eclipse.debug.core.model.IWatchExpression;
 import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
 import org.eclipse.debug.internal.ui.DebugUIMessages;
 import org.eclipse.debug.internal.ui.DefaultLabelProvider;
+import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
 import org.eclipse.debug.internal.ui.elements.adapters.VariableColumnPresentation;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementEditor;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
@@ -71,6 +72,7 @@ public class ExpressionManagerContentProvider extends ElementContentProvider {
         
         private void updateLabel(ILabelUpdate update, int columnIndex) {
             update.setLabel(DebugUIMessages.ExpressionManagerContentProvider_1, columnIndex);
+            update.setImageDescriptor(DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_MONITOR_EXPRESSION), columnIndex);
             
             // Display the "Add new expression" element in italic to 
             // distinguish it from user elements in view.
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ProcessContentProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ProcessContentProvider.java
new file mode 100644
index 0000000..7b25c8d
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ProcessContentProvider.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Wind River Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.internal.ui.model.elements;
+
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
+import org.eclipse.debug.ui.IDebugUIConstants;
+
+/**
+ * Default content provider for process objects. Even though process objects
+ * have no children by default, they still need a content provider to ensure
+ * proper display (see bug
+ * 
+ * @since 3.6
+ */
+public class ProcessContentProvider extends ElementContentProvider {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildren(java.lang.Object, int, int, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
+	 */
+	protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) {
+		return EMPTY;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildCount(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
+	 */
+	protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) {
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String)
+	 */
+	protected boolean supportsContextId(String id) {
+		return IDebugUIConstants.ID_DEBUG_VIEW.equals(id);
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.java
index 64b7bd5..a4e9ef9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties
index 9d19fbe..6982709 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupUIMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.java
index 4bfdc57..6cad26f 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.java
@@ -50,6 +50,9 @@ public class StringSubstitutionMessages extends NLS {
 	public static String StringVariableSelectionDialog_8;
 	public static String StringVariableSelectionDialog_0;
 	public static String StringVariableSelectionDialog_9;
+	public static String StringVariableSelectionDialog_10;
+	public static String StringVariableSelectionDialog_11;
+
 
 	static {
 		// load message values from bundle file
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.properties b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.properties
index cff2c6f..eb56586 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.properties
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringSubstitutionMessages.properties
@@ -41,6 +41,9 @@ StringVariableSelectionDialog_6=&Argument:
 StringVariableSelectionDialog_7=C&onfigure...
 StringVariableSelectionDialog_8=&Variable Description:
 StringVariableSelectionDialog_0=&Edit Variables...
-StringVariableSelectionDialog_9=&Hide non applicable
+StringVariableSelectionDialog_9=&Show All
+StringVariableSelectionDialog_10=Only the most common variables are shown.
+StringVariableSelectionDialog_11=Some variables may not work in this context.
+
 SystemPropertyArgumentSelector_0=Select System Property
 SystemPropertyArgumentSelector_1=Select a system property (? = any character, * = any String):
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java
index 8a295b8..4adec27 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
index d238a13..1988c8d 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java
index 6ff24c0..81c94cd 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
index 54e592e..f856855 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
index 0b77420..8a09d52 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java
index 6f68db2..e1437c9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IMementoManager.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IMementoManager.java
index 1a858c1..665c369 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IMementoManager.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IMementoManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ModelContentProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ModelContentProvider.java
index 32c6b4a..b7cb288 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ModelContentProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ModelContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
index 1ff84a8..b811972 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java
index 6561352..b80f5d9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java
index c9b2d16..12d0b1b 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java
index d88ae29..efa321f 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java
index a417188..f8050d9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -77,7 +77,7 @@ public class PresentationContext implements IPresentationContext {
      * @param part presentation context part, may be <code>null</code>
      */
     public PresentationContext(String id, IWorkbenchPart part) {
-        this (id, part.getSite().getWorkbenchWindow(), part);
+        this (id, part == null ? null : part.getSite().getWorkbenchWindow(), part);
     }
 
     /**
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java
index 3de2a97..15d1995 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java
index 78324ee..e3da944 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultModelProxyFactory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultModelProxyFactory.java
index 3a2e0ea..6d00a47 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultModelProxyFactory.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultModelProxyFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java
index 5db6cbb..0d6908b 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2009 IBM Corporation and others.
+ *  Copyright (c) 2005, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -83,6 +83,7 @@ public class LaunchProxy extends AbstractModelProxy implements ILaunchesListener
 		for (int i = 0; i < launches.length; i++) {
 			if (launches[i] == fLaunch) {
 				fireDelta(IModelDelta.STATE | IModelDelta.CONTENT | IModelDelta.UNINSTALL);
+				break;
 			}
 		}		
 	}
@@ -91,6 +92,12 @@ public class LaunchProxy extends AbstractModelProxy implements ILaunchesListener
 	 * @see org.eclipse.debug.core.ILaunchesListener#launchesRemoved(org.eclipse.debug.core.ILaunch[])
 	 */
 	public void launchesRemoved(ILaunch[] launches) {
+		for (int i = 0; i < launches.length; i++) {
+			if (launches[i] == fLaunch) {
+				fireDelta(IModelDelta.UNINSTALL);
+				break;
+			}
+		}
 	}
 
 	/* (non-Javadoc)
@@ -107,6 +114,7 @@ public class LaunchProxy extends AbstractModelProxy implements ILaunchesListener
 			if (launches[i] == fLaunch) {
 				fireDelta(IModelDelta.STATE | IModelDelta.CONTENT);
 				installModelProxies();
+				break;
 			}
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugModelPresentationContext.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugModelPresentationContext.java
index 8c02cd0..6779bd9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugModelPresentationContext.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugModelPresentationContext.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java
index dd7f909..81bd9bf 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -323,39 +323,38 @@ public class BreakpointContainer extends ElementContentProvider implements IAdap
      * @param delta the root delta of this container
      * @see addBreakpoint
      */
-    public void removeBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) {
+    public boolean removeBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) {
     	boolean removed = fBreakpoints.remove(breakpoint);
     	
     	if (removed) {
     		boolean addRemoveBpDelta = getContainers().length == 0;
         	
-        	if (removed) {
-        		Iterator it = fChildContainers.iterator();
-        		while (it.hasNext()) {
-        			BreakpointContainer container = (BreakpointContainer) it.next();
-        			
-    				// if the breakpoint contains in the container and it is the only breakpoint,
-    				// than remove the container from the collection
-        			if (container.contains(breakpoint)) {
-        				ModelDelta childDelta = null;
-        				if ((!container.isDefaultContainer()) && (container.getBreakpoints().length <= 1)) {
-    	    				it.remove();
-    	    				childDelta = rootDelta.addNode(container, IModelDelta.REMOVED|IModelDelta.UNINSTALL);
-    	    				 
-    	    			} else {
-    	    				childDelta = rootDelta.addNode(container, IModelDelta.STATE);
-    	    			}
-    	    			
-        				// remove the breakpoint from the nested containers
-    	    			container.removeBreakpoint(breakpoint, childDelta);
-        			}
-        		} 
-        		
-        		if (addRemoveBpDelta) {
-        			rootDelta.addNode(breakpoint, IModelDelta.REMOVED|IModelDelta.UNINSTALL);
-        		}
-        	}
+    		Iterator it = fChildContainers.iterator();
+    		while (it.hasNext()) {
+    			BreakpointContainer container = (BreakpointContainer) it.next();
+    			
+				// if the breakpoint contains in the container and it is the only breakpoint,
+				// than remove the container from the collection
+    			if (container.contains(breakpoint)) {
+    				ModelDelta childDelta = null;
+    				if ((!container.isDefaultContainer()) && (container.getBreakpoints().length <= 1)) {
+	    				it.remove();
+	    				childDelta = rootDelta.addNode(container, IModelDelta.REMOVED|IModelDelta.UNINSTALL);
+	    				 
+	    			} else {
+	    				childDelta = rootDelta.addNode(container, IModelDelta.STATE);
+	    			}
+	    			
+    				// remove the breakpoint from the nested containers
+	    			container.removeBreakpoint(breakpoint, childDelta);
+    			}
+    		} 
+    		
+    		if (addRemoveBpDelta) {
+    			rootDelta.addNode(breakpoint, IModelDelta.REMOVED|IModelDelta.UNINSTALL);
+    		}
     	}
+    	return removed;
     } 
     
     /**
@@ -399,6 +398,7 @@ public class BreakpointContainer extends ElementContentProvider implements IAdap
     	
     	List breakpoints = destContainer.fBreakpoints;
     	destContainerDelta.addNode(breakpoint, index/*breakpoints.indexOf(breakpoint)*/, IModelDelta.ADDED|IModelDelta.INSTALL, 0);
+    	destContainerDelta.setFlags(destContainerDelta.getFlags() | IModelDelta.EXPAND);
 
     	// add the breakpoints to the parent containers.    	
     	updateSelfAndAncestorsBreakpointCache(destContainer.getParent(), breakpoints, true);
@@ -540,6 +540,19 @@ public class BreakpointContainer extends ElementContentProvider implements IAdap
         }
         return getContainers(); 
     }    
+
+    /**
+     * Returns the index of the given child element (breakpoint or container.
+     * 
+     * @param child Child to calculate index of.
+     * @return index of child
+     */
+    public int getChildIndex(Object child) {
+        if (fChildContainers.isEmpty()) {
+            return fBreakpoints.indexOf(child);
+        }
+        return fChildContainers.indexOf(child);
+    }
     
     /**
      * Returns the containers nested in this container, possibly empty.
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java
index 5120e20..20d10f0 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java
@@ -1,160 +1,174 @@
-/*****************************************************************
- * Copyright (c) 2009 Texas Instruments and others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
- *****************************************************************/
-package org.eclipse.debug.internal.ui.views.breakpoints;
-
-import java.util.Comparator;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.ILineBreakpoint;
-import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointContainer;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
-import org.eclipse.debug.internal.ui.views.DebugModelPresentationContext;
-
-/**
- * Breakpoint element comparator.
- * 
- * @since 3.6
- */
-public class ElementComparator implements Comparator {
-	final private static String SPACE = " "; //$NON-NLS-1$
-	
-	protected DebugModelPresentationContext fContext;
-	
-	public ElementComparator(IPresentationContext context) {
-		if (context instanceof DebugModelPresentationContext)
-			fContext = (DebugModelPresentationContext) context;
-	}
-	
-	
-	/* (non-Javadoc)
-	 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-	 */
-	public int compare(Object arg0, Object arg1) {
-        IBreakpoint bp0 = (IBreakpoint)DebugPlugin.getAdapter(arg0, IBreakpoint.class);            
-        IBreakpoint bp1 = (IBreakpoint)DebugPlugin.getAdapter(arg1, IBreakpoint.class);            
-	    if (bp0 != null && bp1 != null) {
-			return compare(bp0, bp1);
-		} else if (arg0 instanceof IBreakpointContainer && arg1 instanceof IBreakpointContainer) {
-			return compare((IBreakpointContainer) arg0, (IBreakpointContainer) arg1);
-		} else {		
-			return -1; // just return -1 if the two objects are not IBreakpoint type
-		}
-	}
-    
-	/**
-	 * Compares two breakpoint containers.
-	 * 
-	 * @param c1
-	 * @param c2
-	 * @return
-	 */
-	private int compare(IBreakpointContainer c1, IBreakpointContainer c2) {
-		if (fContext != null) {
-			String name1 = fContext.getModelPresentation().getText(c1);
-			String name2 = fContext.getModelPresentation().getText(c2);
-			
-			return name1.compareTo(name2);
-		}
-		
-		return -1;
-	}	
-	
-	/**
-	 * Compares two breakpoints.
-	 * 
-	 * @param b1
-	 * @param b2
-	 * @return
-	 */
-	private int compare(IBreakpoint b1, IBreakpoint b2) {
-		String text1 = IInternalDebugCoreConstants.EMPTY_STRING;
-		String text2 = IInternalDebugCoreConstants.EMPTY_STRING;
-		
-		text1 += b1.getModelIdentifier();
-		text2 += b2.getModelIdentifier();
-		
-		IMarker marker1 = b1.getMarker();
-		IMarker marker2 = b2.getMarker();
-		try {		
-			if (marker1.exists() && marker2.exists()) {
-				text1 += SPACE + marker1.getType();
-				text2 += SPACE + marker2.getType();
-			}
-		} catch (CoreException e) {
-			DebugUIPlugin.log(e);
-		}
-	
-		int result = text1.compareTo(text2);
-		if (result != 0) {
-			return result;
-		}
-	
-		// model and type are the same	
-		if (fContext != null) {
-			String name1 = fContext.getModelPresentation().getText(b1);
-			String name2 = fContext.getModelPresentation().getText(b2);
-	
-			boolean lineBreakpoint = false;
-			try {
-				lineBreakpoint = marker1.isSubtypeOf(IBreakpoint.LINE_BREAKPOINT_MARKER);
-			} catch (CoreException ce) {
-			}
-			if (lineBreakpoint) {
-				return compareLineBreakpoints(b1, b2, name1,name2);
-			} 
-			
-			return name1.compareTo(name2);
-		}
-		
-		return result;
-	}
-	
-	/**
-	 * Compares two line breakpoints.
-	 * 
-	 * @param b1
-	 * @param b2
-	 * @param name1
-	 * @param name2
-	 * @return
-	 */
-	private int compareLineBreakpoints(IBreakpoint b1, IBreakpoint b2, String name1, String name2) {
-		int colon1 = name1.indexOf(':');
-		if (colon1 != -1) {
-			int colon2 = name2.indexOf(':');
-			if (colon2 != -1) {
-				String upToColon1 = name1.substring(0, colon1);
-				if (name2.startsWith(upToColon1)) {
-					int l1 = 0;
-					int l2 = 0;
-					try {
-						l1 = ((ILineBreakpoint)b1).getLineNumber();	
-					} catch (CoreException e) {
-						DebugUIPlugin.log(e);
-					}
-					try {
-						l2 = ((ILineBreakpoint)b2).getLineNumber();	
-					} catch (CoreException e) {
-						DebugUIPlugin.log(e);
-					}
-					return l1 - l2;
-				}
-			}
-		}
-		return name1.compareTo(name2);
-	}     
-
-}
+/*****************************************************************
+ * Copyright (c) 2009, 2010 Texas Instruments and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 238956)
+ *     Pawel Piech (Windriver) - Ongoing bug fixes and enhancements (Bug 311457)
+ *****************************************************************/
+package org.eclipse.debug.internal.ui.views.breakpoints;
+
+import java.util.Comparator;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.core.model.ILineBreakpoint;
+import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.internal.ui.breakpoints.provisional.IBreakpointContainer;
+import org.eclipse.debug.internal.ui.breakpoints.provisional.OtherBreakpointCategory;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.internal.ui.views.DebugModelPresentationContext;
+
+/**
+ * Breakpoint element comparator.
+ * 
+ * @since 3.6
+ */
+public class ElementComparator implements Comparator {
+	final private static String SPACE = " "; //$NON-NLS-1$
+	
+	protected DebugModelPresentationContext fContext;
+	
+	public ElementComparator(IPresentationContext context) {
+		if (context instanceof DebugModelPresentationContext)
+			fContext = (DebugModelPresentationContext) context;
+	}
+	
+	
+	/* (non-Javadoc)
+	 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+	 */
+	public int compare(Object arg0, Object arg1) {
+        IBreakpoint bp0 = (IBreakpoint)DebugPlugin.getAdapter(arg0, IBreakpoint.class);            
+        IBreakpoint bp1 = (IBreakpoint)DebugPlugin.getAdapter(arg1, IBreakpoint.class);            
+	    if (bp0 != null && bp1 != null) {
+			return compare(bp0, bp1);
+		} else if (arg0 instanceof IBreakpointContainer && arg1 instanceof IBreakpointContainer) {
+			return compare((IBreakpointContainer) arg0, (IBreakpointContainer) arg1);
+		} else {		
+			return -1; // just return -1 if the two objects are not IBreakpoint type
+		}
+	}
+    
+	/**
+	 * Compares two breakpoint containers.
+	 * 
+	 * @param c1
+	 * @param c2
+	 * @return
+	 */
+	private int compare(IBreakpointContainer c1, IBreakpointContainer c2) {
+	    // The "Other" breakpoint category should be listed last.
+	    // (Bug 311457).
+	    if (c1.getCategory() instanceof OtherBreakpointCategory) {
+            if (c2.getCategory() instanceof OtherBreakpointCategory) {
+                return 0;
+            }
+	        return 1;
+	    } else if (c2.getCategory() instanceof OtherBreakpointCategory) {
+	        return -1;
+	    }
+	    
+	    // Rest of categories should be listed alphabetically.
+		if (fContext != null) {
+			String name1 = fContext.getModelPresentation().getText(c1);
+			String name2 = fContext.getModelPresentation().getText(c2);
+			
+			return name1.compareTo(name2);
+		}
+		
+		return -1;
+	}	
+	
+	/**
+	 * Compares two breakpoints.
+	 * 
+	 * @param b1
+	 * @param b2
+	 * @return
+	 */
+	private int compare(IBreakpoint b1, IBreakpoint b2) {
+		String text1 = IInternalDebugCoreConstants.EMPTY_STRING;
+		String text2 = IInternalDebugCoreConstants.EMPTY_STRING;
+		
+		text1 += b1.getModelIdentifier();
+		text2 += b2.getModelIdentifier();
+		
+		IMarker marker1 = b1.getMarker();
+		IMarker marker2 = b2.getMarker();
+		try {		
+			if (marker1.exists() && marker2.exists()) {
+				text1 += SPACE + marker1.getType();
+				text2 += SPACE + marker2.getType();
+			}
+		} catch (CoreException e) {
+			DebugUIPlugin.log(e);
+		}
+	
+		int result = text1.compareTo(text2);
+		if (result != 0) {
+			return result;
+		}
+	
+		// model and type are the same	
+		if (fContext != null) {
+			String name1 = fContext.getModelPresentation().getText(b1);
+			String name2 = fContext.getModelPresentation().getText(b2);
+	
+			boolean lineBreakpoint = false;
+			try {
+				lineBreakpoint = marker1.isSubtypeOf(IBreakpoint.LINE_BREAKPOINT_MARKER);
+			} catch (CoreException ce) {
+			}
+			if (lineBreakpoint) {
+				return compareLineBreakpoints(b1, b2, name1,name2);
+			} 
+			
+			return name1.compareTo(name2);
+		}
+		
+		return result;
+	}
+	
+	/**
+	 * Compares two line breakpoints.
+	 * 
+	 * @param b1
+	 * @param b2
+	 * @param name1
+	 * @param name2
+	 * @return
+	 */
+	private int compareLineBreakpoints(IBreakpoint b1, IBreakpoint b2, String name1, String name2) {
+		int colon1 = name1.indexOf(':');
+		if (colon1 != -1) {
+			int colon2 = name2.indexOf(':');
+			if (colon2 != -1) {
+				String upToColon1 = name1.substring(0, colon1);
+				if (name2.startsWith(upToColon1)) {
+					int l1 = 0;
+					int l2 = 0;
+					try {
+						l1 = ((ILineBreakpoint)b1).getLineNumber();	
+					} catch (CoreException e) {
+						DebugUIPlugin.log(e);
+					}
+					try {
+						l2 = ((ILineBreakpoint)b2).getLineNumber();	
+					} catch (CoreException e) {
+						DebugUIPlugin.log(e);
+					}
+					return l1 - l2;
+				}
+			}
+		}
+		return name1.compareTo(name2);
+	}     
+
+}
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java
index 3c13a0a..1754e34 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java
@@ -60,6 +60,7 @@ import org.eclipse.debug.internal.ui.model.elements.MemoryBlockContentProvider;
 import org.eclipse.debug.internal.ui.model.elements.MemoryBlockLabelProvider;
 import org.eclipse.debug.internal.ui.model.elements.MemoryRetrievalContentProvider;
 import org.eclipse.debug.internal.ui.model.elements.MemoryViewElementMementoProvider;
+import org.eclipse.debug.internal.ui.model.elements.ProcessContentProvider;
 import org.eclipse.debug.internal.ui.model.elements.RegisterGroupContentProvider;
 import org.eclipse.debug.internal.ui.model.elements.RegisterGroupLabelProvider;
 import org.eclipse.debug.internal.ui.model.elements.RegisterGroupMementoProvider;
@@ -114,6 +115,7 @@ public class DebugElementAdapterFactory implements IAdapterFactory {
     
     private static IElementContentProvider fgCPLaunchManger = new LaunchManagerContentProvider();
     private static IElementContentProvider fgCPLaunch = new LaunchContentProvider();
+    private static IElementContentProvider fgCPProcess = new ProcessContentProvider();
     private static IElementContentProvider fgCPTarget = new DebugTargetContentProvider();
     private static IElementContentProvider fgCPThread = new ThreadContentProvider();
     private static IElementContentProvider fgCPFrame = new StackFrameContentProvider();
@@ -165,6 +167,9 @@ public class DebugElementAdapterFactory implements IAdapterFactory {
             if (adaptableObject instanceof ILaunch) {
                 return fgCPLaunch;
             }
+            if (adaptableObject instanceof IProcess) {
+                return fgCPProcess;
+            }
             if (adaptableObject instanceof IDebugTarget) {
             	return fgCPTarget;
             }
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
index 6d2b6d6..6dad2ff 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -63,6 +63,8 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
 	private Composite fCanvas;
 	protected String fLabel;
 	
+	private volatile boolean fIsDisposed = false;
+
 	public AbstractMemoryViewPane(IViewPart parent)
 	{
 		super();
@@ -277,34 +279,43 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
 			Object source = events[i].getSource();
 			if (events[i].getKind() == DebugEvent.TERMINATE && source instanceof IMemoryBlockRetrieval) 
 			{
+				if (isDisposed())
+					return;
+
 				//When a memory block retrieval terminates, it and its
 				//tab folders should be removed from our map.
-				IMemoryBlockRetrieval ret = (IMemoryBlockRetrieval)source;
+				final IMemoryBlockRetrieval ret = (IMemoryBlockRetrieval)source;
 				if (ret != null) 
 				{
-					final Integer key = MemoryViewUtil.getHashCode(ret);
-					final Object folder = fTabFolderForDebugView.get(key);
-					if (folder != null && folder != fEmptyTabFolder &&  (!((CTabFolder)folder).isDisposed())) 
-					{
-						Display.getDefault().asyncExec(new Runnable() {
-							public void run() {
+					Display.getDefault().asyncExec(new Runnable() {
+						public void run() {
+							if (isDisposed())
+								return;
+
+							Integer key = MemoryViewUtil.getHashCode(ret);
+							Object folder = fTabFolderForDebugView.get(key);
+
+							if (folder != null && folder != fEmptyTabFolder)
+							{
 								//remove the tab folder , and all contained tab items
 								disposeOfFolder((CTabFolder) folder);
-								if (fTabFolderForDebugView != null)
-									fTabFolderForDebugView.remove(key);
+								fTabFolderForDebugView.remove(key);
 							}
-						});
-					}
+						}
+					});
 				}
 			}
 		}
-
 	}
 
 
 
 	public void dispose()
 	{
+		if (isDisposed())
+			return;
+		fIsDisposed = true;
+
 		removeListeners();
 		
 		// dispose empty folders
@@ -312,20 +323,16 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
 		
 		// dispose all other folders
 		try {
-			
-			if (fTabFolderForDebugView != null) {
-				Enumeration enumeration = fTabFolderForDebugView.elements();
-				
-				while (enumeration.hasMoreElements())
-				{
-					CTabFolder tabFolder = (CTabFolder)enumeration.nextElement();
-					disposeOfFolder(tabFolder);
-				}
-				
-				// set to null so that clean up is only done once
-				fTabFolderForDebugView.clear();
-				fTabFolderForDebugView = null;
+			Enumeration enumeration = fTabFolderForDebugView.elements();
+
+			while (enumeration.hasMoreElements())
+			{
+				CTabFolder tabFolder = (CTabFolder)enumeration.nextElement();
+				disposeOfFolder(tabFolder);
 			}
+
+			// Clear the table as all CTabFolder's have been dipose()d
+			fTabFolderForDebugView.clear();
 		} catch (Exception e) {		
 			
 			DebugUIPlugin.logErrorMessage("Exception occurred when the Memory View is disposed."); //$NON-NLS-1$
@@ -396,6 +403,11 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
 		return fLabel;
 	}
 	
+	protected boolean isDisposed()
+	{
+		return fIsDisposed;
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.debug.internal.core.memory.IMemoryBlockListener#MemoryBlockAdded(org.eclipse.debug.core.model.IMemoryBlock)
 	 */
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryBlocksTreeViewPane.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryBlocksTreeViewPane.java
index a54b692..eeba2d9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryBlocksTreeViewPane.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryBlocksTreeViewPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -9,7 +9,7 @@
  *     IBM Corporation - initial API and implementation
  *     WindRiver - Bug 192028 [Memory View] Memory view does not 
  *                 display memory blocks that do not reference IDebugTarget
-     
+ *     
  *******************************************************************************/
  
 package org.eclipse.debug.internal.ui.views.memory;
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryViewSynchronizationService.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryViewSynchronizationService.java
index 29a9376..07f3900 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryViewSynchronizationService.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/MemoryViewSynchronizationService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Justin Kong (IBM) -  Bug 258890 -  [Memory View] MemoryViewSynchronizationService not implementing addPropertyChangeListener() correctly
  *******************************************************************************/
 package org.eclipse.debug.internal.ui.views.memory;
 
@@ -189,14 +190,7 @@ public class MemoryViewSynchronizationService implements
 	 * @see org.eclipse.debug.ui.memory.IMemoryRenderingSynchronizationService#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener, java.lang.String[])
 	 */
 	public void addPropertyChangeListener(IPropertyChangeListener listener, String[] properties) {
-		
-		PropertyListener propertylistener = new PropertyListener(listener, properties);
-		
-		if (!fPropertyListeners.contains(propertylistener))
-		{
-			fPropertyListeners.put(listener, propertylistener);
-		}
-
+		fPropertyListeners.put(listener, new PropertyListener(listener, properties));
 	}
 
 	/* (non-Javadoc)
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java
index a2cf262..137e5b0 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -85,8 +85,6 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory
 	
 	private boolean fCanAddRendering = true;
 	private boolean fCanRemoveRendering = true;
-
-	private boolean fIsDisposed = false;
 	
 	/**
 	 * @param parent is the view hosting this view pane
@@ -248,7 +246,7 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory
 	 * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
 	 */
 	public void selectionChanged(final IWorkbenchPart part, final ISelection selection) {
-		if (fIsDisposed)
+		if (isDisposed())
 			return;
 		
 		// do not schedule job if any of these conditions are true
@@ -898,8 +896,6 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory
 	}
 	
 	public void dispose() {
-		fIsDisposed = true;
-		
 		super.dispose();
 		
 		fTabFolderForMemoryBlock.clear();
@@ -1134,10 +1130,7 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory
 		}
 	}
 	
-	private boolean isDisposed()
-	{
-		return fIsDisposed;
-	}
+
 	
 	public void showCreateRenderingTab()
 	{
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java
index dea070b..8e96efc 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesViewMessages.properties b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesViewMessages.properties
index e4a1114..162fe53 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesViewMessages.properties
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesViewMessages.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2000, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPaneFactory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPaneFactory.java
index 3e23fc2..a013445 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPaneFactory.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPaneFactory.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.java
index 4ef987e..db5e6f7 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.properties b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.properties
index 7215ae6..5b0692c 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.properties
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
+# Copyright (c) 2006, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java
index 2c0d99d..2ea40e9 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/MessageDetailPane.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/MessageDetailPane.java
index 100a9a8..8fb6218 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/MessageDetailPane.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/MessageDetailPane.java
@@ -83,6 +83,10 @@ public class MessageDetailPane implements IDetailPane {
 				fLabel.setText(message);
 				fControlParent.layout(true);
 			}
+		} else if (selection == null || selection.isEmpty()) {
+			// clear the message
+			fLabel.setText(""); //$NON-NLS-1$
+			fControlParent.layout(true);
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java
index b88a0cc..e1d7b1d 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
index 49acb6f..74c2fb3 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
@@ -35,6 +35,7 @@ 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.PlatformUI;
@@ -59,7 +60,8 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog {
 	private Text fArgumentText;
 	private String fArgumentValue;
 	private Button fEditVariablesButton;
-	private Button fHideNonApplicableButton;
+	private Button fShowAllButton;
+	private Label fShowAllDescription;
 
 	/** 
 	 * Base class for custom variable filters. Clients may extend this class
@@ -164,6 +166,16 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog {
 		});		
 	}
 	
+	private void updateDescription() {
+		if((fShowAllDescription != null) && !fShowAllDescription.isDisposed()) {
+			if(fShowAllSelected) {
+				fShowAllDescription.setText(StringSubstitutionMessages.StringVariableSelectionDialog_11);
+			} else {
+				fShowAllDescription.setText(StringSubstitutionMessages.StringVariableSelectionDialog_10);
+			}
+		}
+	}
+
 	protected void setListElements(Object[] elements) {
 		ArrayList filtered = new ArrayList();
 		filtered.addAll(Arrays.asList(elements));
@@ -181,9 +193,6 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog {
 				}
 			}
 		}
-		if((fHideNonApplicableButton != null) && !fHideNonApplicableButton.isDisposed()) {
-			fHideNonApplicableButton.setEnabled(!fShowAllSelected || (elements.length == filtered.size()));
-		}
 		super.setListElements(filtered.toArray());
 	}
 
@@ -215,14 +224,31 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog {
 		Composite container = SWTFactory.createComposite(parent, parent.getFont(), 2, 1, GridData.FILL_HORIZONTAL, 0, 0);
 		
 		Composite btnContainer = SWTFactory.createComposite(container, parent.getFont(), 3, 2, GridData.FILL_HORIZONTAL, 0, 0);
-		if (!fFilters.isEmpty()) {
-			fHideNonApplicableButton = SWTFactory.createCheckButton(btnContainer, StringSubstitutionMessages.StringVariableSelectionDialog_9, null, !fShowAllSelected, 1);
-			fHideNonApplicableButton.setEnabled(!fFilters.isEmpty());
-			fHideNonApplicableButton.addSelectionListener(new SelectionAdapter() {
+		boolean bNeedShowAll = false;
+		if(!fFilters.isEmpty()) {
+			Object[] elements = VariablesPlugin.getDefault().getStringVariableManager().getVariables();
+			for (int i = 0;(i < elements.length) && !bNeedShowAll; i++) {
+				if(elements[i] instanceof IDynamicVariable) {
+					for (int j = 0; (j < fFilters.size()) && !bNeedShowAll; j++) {
+						VariableFilter filter = (VariableFilter)fFilters.get(j);
+						if(filter.isFiltered((IDynamicVariable)elements[i])) {
+							bNeedShowAll = true;
+						}
+					}
+				}
+			}
+		}
+		if (bNeedShowAll) {
+			fShowAllDescription = SWTFactory.createLabel(btnContainer, "", 3); //$NON-NLS-1$
+			updateDescription();
+			fShowAllButton = SWTFactory.createCheckButton(btnContainer, StringSubstitutionMessages.StringVariableSelectionDialog_9, null, fShowAllSelected, 1);
+			fShowAllButton.addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
-					fShowAllSelected = !fHideNonApplicableButton.getSelection();
+					fShowAllSelected = fShowAllButton.getSelection();
+					updateDescription();
 					updateElements();
 				}
+
 			});
 			SWTFactory.createHorizontalSpacer(btnContainer, 1);
 		} else {
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTableRendering.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTableRendering.java
index c4562e5..c1283d3 100644
--- a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTableRendering.java
+++ b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTableRendering.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2004, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.ecf.filetransfer/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf.filetransfer/META-INF/MANIFEST.MF
index 18a2308..ea0d6cf 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.filetransfer;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 4.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.filetransfer.Activator
 Bundle-Vendor: %plugin.provider
 Eclipse-LazyStart: true
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/build.properties b/eclipse/plugins/org.eclipse.ecf.filetransfer/build.properties
index d1a70d0..4f1727d 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/build.properties
@@ -6,7 +6,8 @@ bin.includes = .,\
                plugin.properties,\
                schema/
 src.includes = about.html,\
-               schema/,\
-               plugin.properties
+               schema/
 jars.compile.order = .
 source.. = src/
+jre.compilation.profile = J2SE-1.3
+javacWarnings.. = -assertIdentifier,-enumIdentifier
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java
index 3b22284..d0b7dbe 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java
@@ -49,6 +49,7 @@ public class FileTransferJob extends Job {
 	 */
 	public FileTransferJob(String name) {
 		super(name);
+		setSystem(true);
 	}
 
 	public final void setFileTransferRunnable(IFileTransferRunnable fileTransferRunnable) {
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferOptions.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferOptions.java
new file mode 100644
index 0000000..68426f2
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferOptions.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+* Copyright (c) 2009 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.filetransfer;
+
+import java.util.Map;
+
+/**
+ * @since 3.1
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IRetrieveFileTransferOptions {
+
+	/**
+	 * This constant defines a key in options Map passed to {@link IRetrieveFileTransferContainerAdapter#sendRetrieveRequest(org.eclipse.ecf.filetransfer.identity.IFileID, IFileTransferListener, java.util.Map)}.
+	 * Supporting providers will use this key to look for a value of type Map, and if found the String key/value pairs in the 
+	 * Map will be used as request headers.  The expected type of the value associated with this key is of type {@link Map}.
+	 * 
+	 */
+	public static final String REQUEST_HEADERS = IRetrieveFileTransferOptions.class.getName() + ".requestHeaders"; //$NON-NLS-1$
+
+	/**
+	 * This constant defines a key in options Map passed to {@link IRetrieveFileTransferContainerAdapter#sendRetrieveRequest(org.eclipse.ecf.filetransfer.identity.IFileID, IFileTransferListener, java.util.Map)}.
+	 * Supporting providers will use this key to look for a value of type Integer or String, and if found this value
+	 * will be used to determine the socket connection timeout for this request.  The expected type of the value
+	 * associated with this key is of type Integer, or String value of an Integer.
+	 */
+	public static final String CONNECT_TIMEOUT = IRetrieveFileTransferOptions.class.getName() + ".connectTimeout"; //$NON-NLS-1$
+
+	/**
+	 * This constant defines a key in options Map passed to {@link IRetrieveFileTransferContainerAdapter#sendRetrieveRequest(org.eclipse.ecf.filetransfer.identity.IFileID, IFileTransferListener, java.util.Map)}.
+	 * Supporting providers will use this key to look for a value of type Integer or String, and if found this value
+	 * will be used to determine the socket read timeout for this request.  The expected type of the value
+	 * associated with this key is of type Integer, or String value of an Integer.
+	 */
+	public static final String READ_TIMEOUT = IRetrieveFileTransferOptions.class.getName() + ".readTimeout"; //$NON-NLS-1$
+}
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferOptions.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferOptions.java
new file mode 100644
index 0000000..344eb0d
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferOptions.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+* Copyright (c) 2009 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.filetransfer;
+
+/**
+ * @since 3.1
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ISendFileTransferOptions {
+	// Nothing
+}
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java
index 89b4dcd..6a44963 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java
@@ -8,6 +8,7 @@
  ******************************************************************************/
 package org.eclipse.ecf.filetransfer;
 
+import java.util.Map;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.ecf.core.util.ECFException;
 
@@ -20,6 +21,7 @@ public class IncomingFileTransferException extends ECFException {
 	private static final long serialVersionUID = 2438441801862623371L;
 
 	private int errorCode = -1;
+	private Map responseHeaders;
 
 	public IncomingFileTransferException(IStatus status) {
 		super(status);
@@ -61,7 +63,41 @@ public class IncomingFileTransferException extends ECFException {
 		this.errorCode = errorCode;
 	}
 
+	/**
+	 * @since 4.0
+	 */
+	public IncomingFileTransferException(String message, Throwable cause, int errorCode, Map responseHeaders) {
+		super(message, cause);
+		this.errorCode = errorCode;
+		this.responseHeaders = responseHeaders;
+	}
+
+	/**
+	 * @since 4.0
+	 */
+	public IncomingFileTransferException(String message, int errorCode, Map responseHeaders) {
+		super(message);
+		this.errorCode = errorCode;
+		this.responseHeaders = responseHeaders;
+	}
+
+	/**
+	 * @since 4.0
+	 */
+	public IncomingFileTransferException(Throwable cause, int errorCode, Map responseHeaders) {
+		super(cause);
+		this.errorCode = errorCode;
+		this.responseHeaders = responseHeaders;
+	}
+
 	public int getErrorCode() {
 		return errorCode;
 	}
+
+	/**
+	 * @since 4.0
+	 */
+	public Map getResponseHeaders() {
+		return responseHeaders;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveResumedEvent.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveResumedEvent.java
index aa934af..749a2a2 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveResumedEvent.java
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveResumedEvent.java
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.filetransfer.events;
 
 import java.io.*;
+import java.util.Map;
 import org.eclipse.ecf.filetransfer.*;
 import org.eclipse.ecf.filetransfer.identity.IFileID;
 
@@ -142,4 +143,10 @@ public interface IIncomingFileTransferReceiveResumedEvent extends IIncomingFileT
 	 */
 	public void cancel();
 
+	/**
+	 * Get response headers.
+	 * @return Map of response headers.  <code>null</code> if no headers available.
+	 * @since 4.0
+	 */
+	public Map getResponseHeaders();
 }
diff --git a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveStartEvent.java b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveStartEvent.java
index 3705e36..60ce0d1 100644
--- a/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveStartEvent.java
+++ b/eclipse/plugins/org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/events/IIncomingFileTransferReceiveStartEvent.java
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.filetransfer.events;
 
 import java.io.*;
+import java.util.Map;
 import org.eclipse.ecf.filetransfer.*;
 import org.eclipse.ecf.filetransfer.identity.IFileID;
 
@@ -129,4 +130,11 @@ public interface IIncomingFileTransferReceiveStartEvent extends IIncomingFileTra
 	 * Cancel incoming file transfer
 	 */
 	public void cancel();
+
+	/**
+	 * Get response headers.
+	 * @return Map of response headers.  <code>null</code> if no headers available.
+	 * @since 4.0
+	 */
+	public Map getResponseHeaders();
 }
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
index 0417321..57357e8 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.identity;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.identity.Activator
 Bundle-Localization: plugin
 Bundle-Vendor: %plugin.provider
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/build.properties b/eclipse/plugins/org.eclipse.ecf.identity/build.properties
index 5edf718..6363cbb 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.identity/build.properties
@@ -17,5 +17,5 @@ bin.includes = META-INF/,\
                schema/,\
                plugin.properties
 src.includes = about.html,\
-               schema/,\
-               plugin.properties
+               schema/
+jre.compilation.profile = J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/GUID.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/GUID.java
index 3e725d9..53528ea 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/GUID.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/GUID.java
@@ -26,27 +26,13 @@ public class GUID extends StringID {
 		private static final long serialVersionUID = -8546568877571886386L;
 
 		public GUIDNamespace() {
-			super(GUID.class.getName(), Messages.GUID_GUID_Namespace_Description_Default);
-		}
-
-		private String getInitFromExternalForm(Object[] args) {
-			if (args == null || args.length < 1 || args[0] == null)
-				return null;
-			if (args[0] instanceof String) {
-				String arg = (String) args[0];
-				if (arg.startsWith(getScheme() + Namespace.SCHEME_SEPARATOR)) {
-					int index = arg.indexOf(Namespace.SCHEME_SEPARATOR);
-					if (index >= arg.length())
-						return null;
-					return arg.substring(index + 1);
-				}
-			}
-			return null;
+			super(GUID.class.getName(),
+					Messages.GUID_GUID_Namespace_Description_Default);
 		}
 
 		public ID createInstance(Object[] args) throws IDCreateException {
 			try {
-				String init = getInitFromExternalForm(args);
+				String init = getInitStringFromExternalForm(args);
 				if (init != null)
 					return new GUID(this, init);
 				if (args == null || args.length <= 0)
@@ -58,7 +44,8 @@ public class GUID extends StringID {
 				else
 					return new GUID(this);
 			} catch (Exception e) {
-				throw new IDCreateException(NLS.bind("{0} createInstance()", getName()), e); //$NON-NLS-1$
+				throw new IDCreateException(NLS.bind(
+						"{0} createInstance()", getName()), e); //$NON-NLS-1$
 			}
 		}
 
@@ -69,10 +56,11 @@ public class GUID extends StringID {
 		/*
 		 * (non-Javadoc)
 		 * 
-		 * @see org.eclipse.ecf.core.identity.Namespace#getSupportedParameterTypesForCreateInstance()
+		 * @seeorg.eclipse.ecf.core.identity.Namespace#
+		 * getSupportedParameterTypesForCreateInstance()
 		 */
 		public Class[][] getSupportedParameterTypes() {
-			return new Class[][] { {}, {Integer.class}};
+			return new Class[][] { {}, { Integer.class } };
 		}
 
 	}
@@ -96,13 +84,15 @@ public class GUID extends StringID {
 	 * @param byteLength
 	 *            the length of the target number (in bytes)
 	 */
-	protected GUID(Namespace n, String algo, String provider, int byteLength) throws IDCreateException {
+	protected GUID(Namespace n, String algo, String provider, int byteLength)
+			throws IDCreateException {
 		super(n, ""); //$NON-NLS-1$
 		// Get SecureRandom instance for class
 		try {
 			getRandom(algo, provider);
 		} catch (Exception e) {
-			throw new IDCreateException(Messages.GUID_GUID_Creation_Failure + e.getMessage());
+			throw new IDCreateException(Messages.GUID_GUID_Creation_Failure
+					+ e.getMessage());
 		}
 		// make sure we have reasonable byteLength
 		if (byteLength <= 0)
@@ -139,7 +129,8 @@ public class GUID extends StringID {
 	 * @exception Exception
 	 *                thrown if SecureRandom instance cannot be created/accessed
 	 */
-	protected static synchronized SecureRandom getRandom(String algo, String provider) throws Exception {
+	protected static synchronized SecureRandom getRandom(String algo,
+			String provider) throws Exception {
 		// Given algo and provider, get SecureRandom instance
 		if (random == null) {
 			initializeRandom(algo, provider);
@@ -147,11 +138,13 @@ public class GUID extends StringID {
 		return random;
 	}
 
-	protected static synchronized void initializeRandom(String algo, String provider) throws Exception {
+	protected static synchronized void initializeRandom(String algo,
+			String provider) throws Exception {
 		if (provider == null) {
 			if (algo == null) {
 				try {
-					random = SecureRandom.getInstance(Messages.GUID_IBM_SECURE_RANDOM);
+					random = SecureRandom
+							.getInstance(Messages.GUID_IBM_SECURE_RANDOM);
 				} catch (Exception e) {
 					random = SecureRandom.getInstance(Messages.GUID_SHA1);
 				}
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/LongID.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/LongID.java
index d091008..fdd13ce 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/LongID.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/LongID.java
@@ -26,48 +26,37 @@ public class LongID extends BaseID {
 			super(LongID.class.getName(), "LongID Namespace"); //$NON-NLS-1$
 		}
 
-		private String getInitFromExternalForm(Object[] args) {
-			if (args == null || args.length < 1 || args[0] == null)
-				return null;
-			if (args[0] instanceof String) {
-				String arg = (String) args[0];
-				if (arg.startsWith(getScheme() + Namespace.SCHEME_SEPARATOR)) {
-					int index = arg.indexOf(Namespace.SCHEME_SEPARATOR);
-					if (index >= arg.length())
-						return null;
-					return arg.substring(index + 1);
-				}
-			}
-			return null;
-		}
-
 		/**
-		 * @param args must not be <code>null></code>
-		 * @return ID created.  Will not be <code>null</code>.
-		 * @throws IDCreateException never thrown
+		 * @param args
+		 *            must not be <code>null></code>
+		 * @return ID created. Will not be <code>null</code>.
+		 * @throws IDCreateException
+		 *             never thrown
 		 */
 		public ID createInstance(Object[] args) throws IDCreateException {
 			try {
-				String init = getInitFromExternalForm(args);
+				String init = getInitStringFromExternalForm(args);
 				if (init != null)
 					return new LongID(this, Long.decode(init));
 				return new LongID(this, (Long) args[0]);
 			} catch (Exception e) {
-				throw new IDCreateException(NLS.bind("{0} createInstance()", getName()), e); //$NON-NLS-1$
+				throw new IDCreateException(NLS.bind(
+						"{0} createInstance()", getName()), e); //$NON-NLS-1$
 			}
 		}
 
 		public String getScheme() {
-			return LongID.class.toString();
+			return LongID.class.getName();
 		}
 
 		/*
 		 * (non-Javadoc)
 		 * 
-		 * @see org.eclipse.ecf.core.identity.Namespace#getSupportedParameterTypesForCreateInstance()
+		 * @seeorg.eclipse.ecf.core.identity.Namespace#
+		 * getSupportedParameterTypesForCreateInstance()
 		 */
 		public Class[][] getSupportedParameterTypes() {
-			return new Class[][] {{Long.class}};
+			return new Class[][] { { Long.class } };
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/Namespace.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/Namespace.java
index 0378a82..53a31fc 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/Namespace.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/Namespace.java
@@ -88,9 +88,9 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	}
 
 	/**
-	 * Hashcode implementation.  Subclasses should not override.
+	 * Hashcode implementation. Subclasses should not override.
 	 * 
-	 * @return int hashCode for this Namespace.  Should be unique.
+	 * @return int hashCode for this Namespace. Should be unique.
 	 */
 	public int hashCode() {
 		return hashCode;
@@ -98,9 +98,13 @@ public abstract class Namespace implements Serializable, IAdaptable {
 
 	/**
 	 * Test whether two IDs are equal to one another.
-	 * @param first the first ID.  Must not be <code>null</code>.
-	 * @param second the second ID.  Must not be <code>null</code>.
-	 * @return <code>true</code> if this ID is equal to the given ID.  <code>false</code> otherwise.
+	 * 
+	 * @param first
+	 *            the first ID. Must not be <code>null</code>.
+	 * @param second
+	 *            the second ID. Must not be <code>null</code>.
+	 * @return <code>true</code> if this ID is equal to the given ID.
+	 *         <code>false</code> otherwise.
 	 */
 	protected boolean testIDEquals(BaseID first, BaseID second) {
 		// First check that namespaces are the same and non-null
@@ -111,22 +115,26 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	}
 
 	/**
-	 * The default implementation of this method is to call id.namespaceGetName().  Subclasses may
-	 * override.
+	 * The default implementation of this method is to call
+	 * id.namespaceGetName(). Subclasses may override.
 	 * 
-	 * @param id the ID to get the name for.  Must not be <code>null</code>.
-	 * @return String that is the unique name for the given id within this Namespace.
+	 * @param id
+	 *            the ID to get the name for. Must not be <code>null</code>.
+	 * @return String that is the unique name for the given id within this
+	 *         Namespace.
 	 */
 	protected String getNameForID(BaseID id) {
 		return id.namespaceGetName();
 	}
 
 	/**
-	 * The default implementation of this method is to call first.namespaceCompareTo(second).  Subclasses may
-	 * override.
+	 * The default implementation of this method is to call
+	 * first.namespaceCompareTo(second). Subclasses may override.
 	 * 
-	 * @param first the first id to compare.  Must not be <code>null</code>.
-	 * @param second the second id to compare. Must not be <code>null</code>.
+	 * @param first
+	 *            the first id to compare. Must not be <code>null</code>.
+	 * @param second
+	 *            the second id to compare. Must not be <code>null</code>.
 	 * @return int as specified by {@link Comparable}.
 	 */
 	protected int getCompareToForObject(BaseID first, BaseID second) {
@@ -134,24 +142,30 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	}
 
 	/**
-	 * The default implementation of this method is to call id.namespaceHashCode().  Subclasses may
-	 * override.
+	 * The default implementation of this method is to call
+	 * id.namespaceHashCode(). Subclasses may override.
 	 * 
-	 * @param id the id in this Namespace to get the hashcode for. Must not be <code>null</code>.
-	 * @return the hashcode for the given id.  Returned value must be unique within this process.
+	 * @param id
+	 *            the id in this Namespace to get the hashcode for. Must not be
+	 *            <code>null</code>.
+	 * @return the hashcode for the given id. Returned value must be unique
+	 *         within this process.
 	 */
 	protected int getHashCodeForID(BaseID id) {
 		return id.namespaceHashCode();
 	}
 
 	/**
-	 * The default implementation of this method is to call id.namespaceToExternalForm().  Subclasses may
-	 * override.
+	 * The default implementation of this method is to call
+	 * id.namespaceToExternalForm(). Subclasses may override.
 	 * 
-	 * @param id the id in this Namespace to convert to external form.
-	 * @return String that represents the given id in an external form.  Note that
-	 * this external form may at some later time be passed to {@link #createInstance(Object[])} as a single
-	 * String parameter, and should result in a valid ID instance of the appropriate Namespace.
+	 * @param id
+	 *            the id in this Namespace to convert to external form.
+	 * @return String that represents the given id in an external form. Note
+	 *         that this external form may at some later time be passed to
+	 *         {@link #createInstance(Object[])} as a single String parameter,
+	 *         and should result in a valid ID instance of the appropriate
+	 *         Namespace.
 	 */
 	protected String toExternalForm(BaseID id) {
 		return id.namespaceToExternalForm();
@@ -160,8 +174,9 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	/**
 	 * Get the name of this namespace. Must not return <code>null</code>.
 	 * 
-	 * @return String name of Namespace instance.  Must not return <code>null</code>, and
-	 * the returned value should be a globally unique name for this Namespace subclass.
+	 * @return String name of Namespace instance. Must not return
+	 *         <code>null</code>, and the returned value should be a globally
+	 *         unique name for this Namespace subclass.
 	 * 
 	 */
 	public String getName() {
@@ -172,7 +187,8 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	 * Get the description, associated with this Namespace. The returned value
 	 * may be <code>null</code>.
 	 * 
-	 * @return the description associated with this Namespace.  May be <code>null</code>.
+	 * @return the description associated with this Namespace. May be
+	 *         <code>null</code>.
 	 */
 	public String getDescription() {
 		return description;
@@ -198,13 +214,14 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	 * @throws IDCreateException
 	 *             if construction fails
 	 */
-	public abstract ID createInstance(Object[] parameters) throws IDCreateException;
+	public abstract ID createInstance(Object[] parameters)
+			throws IDCreateException;
 
 	/**
 	 * Get the primary scheme associated with this namespace. Subclasses must
 	 * provide an implementation that returns a non-<code>null</code> scheme
-	 * identifier.  Note that the returned scheme should <b>not</b> contain the
-	 * Namespace.SCHEME_SEPARATOR (\":\").  
+	 * identifier. Note that the returned scheme should <b>not</b> contain the
+	 * Namespace.SCHEME_SEPARATOR (\":\").
 	 * 
 	 * @return a String scheme identifier. Must not be <code>null</code>.
 	 */
@@ -250,8 +267,8 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	 * </pre>
 	 * 
 	 * The above means that there are two acceptable values for the Object []
-	 * passed into {@link #createInstance(Object[])}: 1) a single String, and
-	 * 2) two Strings. These would therefore be acceptable as input to
+	 * passed into {@link #createInstance(Object[])}: 1) a single String, and 2)
+	 * two Strings. These would therefore be acceptable as input to
 	 * createInstance:
 	 * 
 	 * <pre>
@@ -266,10 +283,12 @@ public abstract class Namespace implements Serializable, IAdaptable {
 	 *         parameters to {@link #createInstance(Object[])} will be ignored.
 	 */
 	public Class[][] getSupportedParameterTypes() {
-		return new Class[][] {{}};
+		return new Class[][] { {} };
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
 	 */
 	public Object getAdapter(Class adapter) {
@@ -282,6 +301,24 @@ public abstract class Namespace implements Serializable, IAdaptable {
 		return manager.loadAdapter(this, adapter.getName());
 	}
 
+	/**
+	 * @since 3.1
+	 */
+	protected String getInitStringFromExternalForm(Object[] args) {
+		if (args == null || args.length < 1 || args[0] == null)
+			return null;
+		if (args[0] instanceof String) {
+			final String arg = (String) args[0];
+			if (arg.startsWith(getScheme() + SCHEME_SEPARATOR)) {
+				final int index = arg.indexOf(SCHEME_SEPARATOR);
+				if (index >= arg.length())
+					return null;
+				return arg.substring(index + 1);
+			}
+		}
+		return null;
+	}
+
 	public String toString() {
 		StringBuffer b = new StringBuffer("Namespace["); //$NON-NLS-1$
 		b.append("name=").append(name).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/StringID.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/StringID.java
index 9e4a3b4..2b00e87 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/StringID.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/StringID.java
@@ -28,29 +28,17 @@ public class StringID extends BaseID {
 			super(StringID.class.getName(), "StringID Namespace"); //$NON-NLS-1$
 		}
 
-		private String getInitFromExternalForm(Object[] args) {
-			if (args == null || args.length < 1 || args[0] == null)
-				return null;
-			if (args[0] instanceof String) {
-				String arg = (String) args[0];
-				if (arg.startsWith(getScheme() + Namespace.SCHEME_SEPARATOR)) {
-					int index = arg.indexOf(Namespace.SCHEME_SEPARATOR);
-					if (index >= arg.length())
-						return null;
-					return arg.substring(index + 1);
-				}
-			}
-			return null;
-		}
-
 		public ID createInstance(Object[] parameters) throws IDCreateException {
 			try {
-				String init = getInitFromExternalForm(parameters);
+				String init = getInitStringFromExternalForm(parameters);
 				if (init != null)
 					return new StringID(this, init);
 				return new StringID(this, (String) parameters[0]);
 			} catch (Exception e) {
-				throw new IDCreateException(NLS.bind("{0} createInstance()", StringIDNamespace.this.getName()), e); //$NON-NLS-1$
+				throw new IDCreateException(
+						NLS
+								.bind(
+										"{0} createInstance()", StringIDNamespace.this.getName()), e); //$NON-NLS-1$
 			}
 		}
 
@@ -61,10 +49,11 @@ public class StringID extends BaseID {
 		/*
 		 * (non-Javadoc)
 		 * 
-		 * @see org.eclipse.ecf.core.identity.Namespace#getSupportedParameterTypesForCreateInstance()
+		 * @seeorg.eclipse.ecf.core.identity.Namespace#
+		 * getSupportedParameterTypesForCreateInstance()
 		 */
 		public Class[][] getSupportedParameterTypes() {
-			return new Class[][] {{String.class}};
+			return new Class[][] { { String.class } };
 		}
 	}
 
@@ -143,7 +132,8 @@ public class StringID extends BaseID {
 
 	protected synchronized void setEmptyNamespace() {
 		if (namespace == null) {
-			namespace = IDFactory.getDefault().getNamespaceByName(StringID.class.getName());
+			namespace = IDFactory.getDefault().getNamespaceByName(
+					StringID.class.getName());
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/IDFactoryTracker.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/IDFactoryTracker.java
new file mode 100644
index 0000000..9cbd45e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/IDFactoryTracker.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   EclipseSource - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.core.util;
+
+import org.eclipse.ecf.core.identity.IIDFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * Service tracker customized to handle tracking the ECF id factory service
+ * (singleton).
+ * 
+ * @since 3.1
+ * 
+ */
+public class IDFactoryTracker extends ServiceTracker {
+
+	public IDFactoryTracker(BundleContext context) {
+		super(context, IIDFactory.class.getName(), null);
+	}
+
+	public IIDFactory getIDFactory() {
+		return (IIDFactory) getService();
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
index 401b218..344a29f 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
@@ -119,8 +119,8 @@ public class Activator implements BundleActivator {
 		plugin = this;
 		this.context = ctxt;
 		// Register IIDFactory service
-		idFactoryServiceRegistration = context.registerService(IIDFactory.class
-				.getName(), IDFactory.getDefault(), null);
+		idFactoryServiceRegistration = context.registerService(
+				IIDFactory.class.getName(), IDFactory.getDefault(), null);
 
 		final IExtensionRegistry reg = getExtensionRegistry();
 		if (reg != null) {
@@ -223,8 +223,8 @@ public class Activator implements BundleActivator {
 			logService = getLogService();
 
 		if (logService != null)
-			logService.log(LogHelper.getLogCode(status), LogHelper
-					.getLogMessage(status), status.getException());
+			logService.log(LogHelper.getLogCode(status),
+					LogHelper.getLogMessage(status), status.getException());
 	}
 
 	/**
@@ -263,17 +263,10 @@ public class Activator implements BundleActivator {
 					// Now add to known namespaces
 					IDFactory.addNamespace0(ns);
 					org.eclipse.ecf.core.util.Trace
-							.trace(
-									Activator.PLUGIN_ID,
+							.trace(Activator.PLUGIN_ID,
 									IdentityDebugOptions.DEBUG,
 									"addNamespaceExtensions.addedNamespaceToFactory(" + ns //$NON-NLS-1$
 											+ ")"); //$NON-NLS-1$
-				} else {
-					getDefault().log(
-							new Status(IStatus.WARNING, Activator.PLUGIN_ID,
-									IStatus.WARNING,
-									"Namespace collision for name=" + nsName,
-									null));
 				}
 			} catch (final CoreException e) {
 				getDefault().log(e.getStatus());
@@ -282,17 +275,16 @@ public class Activator implements BundleActivator {
 						Activator.class, "addNamespaceExtensions", e); //$NON-NLS-1$
 			} catch (final Exception e) {
 				getDefault()
-						.log(
-								new Status(
-										IStatus.ERROR,
-										bundleName,
-										FACTORY_NAME_COLLISION_ERRORCODE,
-										"name=" //$NON-NLS-1$
-												+ nsName
-												+ ";extension point id=" //$NON-NLS-1$
-												+ extension
-														.getExtensionPointUniqueIdentifier(),
-										null));
+						.log(new Status(
+								IStatus.ERROR,
+								bundleName,
+								FACTORY_NAME_COLLISION_ERRORCODE,
+								"name=" //$NON-NLS-1$
+										+ nsName
+										+ ";extension point id=" //$NON-NLS-1$
+										+ extension
+												.getExtensionPointUniqueIdentifier(),
+								null));
 				org.eclipse.ecf.core.util.Trace.catching(Activator.PLUGIN_ID,
 						IdentityDebugOptions.EXCEPTIONS_CATCHING,
 						Activator.class, "addNamespaceExtensions", e); //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Messages.java b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Messages.java
index eff592d..bf3a8b2 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Messages.java
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Messages.java
@@ -18,8 +18,6 @@ import org.eclipse.osgi.util.NLS;
  */
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.core.identity.messages"; //$NON-NLS-1$
-	public static String Base64_Input_Data_Not_Null;
-	public static String Base64_Invalid_Value;
 	public static String GUID_GUID_Creation_Failure;
 	public static String GUID_GUID_Namespace_Description_Default;
 	public static String GUID_IBM_SECURE_RANDOM;
diff --git a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/messages.properties b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/messages.properties
index 1a55598..aed6ada 100644
--- a/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/messages.properties
+++ b/eclipse/plugins/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/messages.properties
@@ -2,6 +2,4 @@ GUID_GUID_Namespace_Description_Default=GUID Namespace
 GUID_IBM_SECURE_RANDOM=IBMSECURERANDOM
 GUID_SHA1=SHA1PRNG
 Trace_Date_Time_Format=[MM/dd/yy;HH:mm:ss:SSS]
-Base64_Input_Data_Not_Null=Input data cannot be null
-Base64_Invalid_Value=Invalid value "{0}" in base64 string
 GUID_GUID_Creation_Failure=GUID creation failure: 
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.jdt.core.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.jdt.core.prefs
index e074f31..e41acc5 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Mon May 04 19:10:49 PDT 2009
+#Fri Jan 29 14:31:46 PST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -24,7 +24,7 @@ org.eclipse.jdt.core.compiler.problem.deadCode=warning
 org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -32,7 +32,7 @@ org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore
 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
@@ -54,6 +54,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.prefs
index 6686ccd..8a5c74e 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.prefs
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.prefs
@@ -1,3 +1,27 @@
-#Thu Apr 19 20:30:05 GMT-08:00 2007
+#Fri Jan 29 14:34:04 PST 2010
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=2
+compilers.p.build.missing.output=2
+compilers.p.deprecated=1
+compilers.p.discouraged-class=0
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+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.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/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/META-INF/MANIFEST.MF
index 3a9f532..8e5edc2 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/META-INF/MANIFEST.MF
@@ -8,5 +8,4 @@ Fragment-Host: org.eclipse.ecf.provider.filetransfer.httpclient
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
 Bundle-Localization: plugin
-Import-Package: org.apache.commons.httpclient.protocol
 
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/build.properties b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/build.properties
index 01e33c5..1906b12 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/build.properties
@@ -5,6 +5,6 @@ bin.includes = META-INF/,\
                about.html,\
                asl-v20.txt,\
                plugin.properties
-src.includes = plugin.properties,\
-               asl-v20.txt,\
+src.includes = asl-v20.txt,\
                about.html
+jre.compilation.profile = J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
index 899955f..b26dd94 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Mon May 04 15:22:38 PDT 2009
+#Fri Jan 29 14:30:16 PST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -32,7 +32,7 @@ org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore
 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
@@ -54,6 +54,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
@@ -70,7 +71,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..92c8333
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,91 @@
+#Fri Jan 29 14:31:15 PST 2010
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Ignore
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
index 6686ccd..05ef9da 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
@@ -1,3 +1,27 @@
-#Thu Apr 19 20:30:05 GMT-08:00 2007
+#Fri Jan 29 14:33:19 PST 2010
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=2
+compilers.p.build.missing.output=2
+compilers.p.deprecated=1
+compilers.p.discouraged-class=0
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+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.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/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
index 5278cc1..95b0aee 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient;singleton:=true
-Bundle-Version: 3.0.1.qualifier
+Bundle-Version: 4.0.0.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator
 Require-Bundle: org.eclipse.equinox.common,
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/build.properties b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/build.properties
index c60ae16..1eb488b 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/build.properties
@@ -7,5 +7,5 @@ bin.includes = META-INF/,\
                plugin.properties,\
                asl-v20.txt
 src.includes = about.html,\
-               plugin.properties,\
                asl-v20.txt
+jre.compilation.profile = J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
index 92a18dd..b34d342 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
@@ -119,4 +119,12 @@ public class Activator implements BundleActivator {
 		}
 		return (SSLSocketFactory) sslSocketFactoryTracker.getService();
 	}
+
+	public static void logNoProxyWarning(Throwable e) {
+		Activator a = getDefault();
+		if (a != null) {
+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, IStatus.ERROR, "Warning: Platform proxy API not available", e)); //$NON-NLS-1$
+		}
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/HttpClientProxyCredentialProvider.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/HttpClientProxyCredentialProvider.java
index 8606dc8..d0e0956 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/HttpClientProxyCredentialProvider.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/HttpClientProxyCredentialProvider.java
@@ -10,6 +10,9 @@
  *******************************************************************************/
 package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
 import org.apache.commons.httpclient.auth.AuthScheme;
@@ -23,6 +26,20 @@ public abstract class HttpClientProxyCredentialProvider implements CredentialsPr
 
 	abstract protected Credentials getNTLMCredentials(Proxy proxy);
 
+	private Collection provided;
+
+	public HttpClientProxyCredentialProvider() {
+		provided = new HashSet();
+	}
+
+	private Object makeProvidedKey(AuthScheme scheme, String host, int port, boolean isProxyAuthenticating) {
+		ArrayList list = new ArrayList(3);
+		list.add(host);
+		list.add(new Integer(port));
+		list.add(Boolean.valueOf(isProxyAuthenticating));
+		return list;
+	}
+
 	/**
 	 * @throws CredentialsNotAvailableException  
 	 */
@@ -34,6 +51,16 @@ public abstract class HttpClientProxyCredentialProvider implements CredentialsPr
 		if (proxy == null) {
 			return null;
 		}
+
+		Object provideKey = makeProvidedKey(scheme, host, port, isProxyAuthenticating);
+		if (provided.contains(provideKey)) {
+			// HttpClient asks about credentials only once.
+			// If already provided don't use them again.
+			return null;
+		}
+
+		provided.add(provideKey);
+
 		if ("ntlm".equalsIgnoreCase(scheme.getSchemeName())) { //$NON-NLS-1$
 			return getNTLMCredentials(proxy);
 		} else if ("basic".equalsIgnoreCase(scheme.getSchemeName()) || //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
index 75cacb5..8c44535 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008, 2009 Composent, Inc., IBM and others.
+ * Copyright (c) 2008, 2010 Composent, Inc., IBM and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -52,6 +52,7 @@ import org.eclipse.ecf.provider.filetransfer.browse.URLRemoteFile;
 import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource;
 import org.eclipse.ecf.provider.filetransfer.httpclient.HttpClientRetrieveFileTransfer.HostConfigHelper;
 import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper;
+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;
 import org.eclipse.osgi.util.NLS;
 
 /**
@@ -60,7 +61,9 @@ import org.eclipse.osgi.util.NLS;
 public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser {
 
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
-	protected static final int DEFAULT_CONNECTION_TIMEOUT = 120000;
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.browse.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	protected static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.BROWSE_DEFAULT_CONNECTION_TIMEOUT;
 
 	private static final String USERNAME_PREFIX = "Username:"; //$NON-NLS-1$
 
@@ -156,6 +159,26 @@ public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser {
 		return (System.getProperties().getProperty(HttpClientOptions.FORCE_NTLM_PROP) != null);
 	}
 
+	protected void setupProxies() {
+		// If it's been set directly (via ECF API) then this overrides platform settings
+		if (proxy == null) {
+			try {
+				// give SOCKS priority see https://bugs.eclipse.org/bugs/show_bug.cgi?id=295030#c61
+				proxy = ProxySetupHelper.getSocksProxy(directoryOrFile);
+				if (proxy == null) {
+					proxy = ProxySetupHelper.getProxy(directoryOrFile.toExternalForm());
+				}
+			} catch (NoClassDefFoundError e) {
+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+				// If that happens then we just want to continue on.
+				Activator.logNoProxyWarning(e);
+
+			}
+		}
+		if (proxy != null)
+			setupProxy(proxy);
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest()
 	 */
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientOptions.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientOptions.java
index 6a030df..9081b42 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientOptions.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientOptions.java
@@ -9,6 +9,9 @@
 ******************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
+/**
+ * @since 4.0
+ */
 public interface HttpClientOptions {
 	// HttpClient response code that indicates that NTLM proxy is asking for authentication
 	// and httpclient cannot handle NTLMv2 proxies
@@ -17,4 +20,28 @@ public interface HttpClientOptions {
 	// The property key is:  org.eclipse.ecf.provider.filetransfer.httpclient.options.ForceNTLMProxy
 	// The value of the property must be non-null, but is not otherwise used.
 	public String FORCE_NTLM_PROP = "org.eclipse.ecf.provider.filetransfer.httpclient.options.ForceNTLMProxy"; //$NON-NLS-1$
+
+	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	/**
+	 * @since 4.0
+	 */
+	public static final int RETRIEVE_DEFAULT_CONNECTION_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$
+	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	/**
+	 * @since 4.0
+	 */
+	public static final int RETRIEVE_DEFAULT_READ_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$
+
+	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.browse.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	/**
+	 * @since 4.0
+	 */
+	public static final int BROWSE_DEFAULT_CONNECTION_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient.browse.connectTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$;
+
 }
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
index fc13fbc..5bb12eb 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 Composent, Inc., IBM All rights reserved. This
+ * Copyright (c) 2004, 2010 Composent, Inc., IBM All rights reserved. This
  * program and the accompanying materials are made available under the terms of
  * the Eclipse Public License v1.0 which accompanies this distribution, and is
  * available at http://www.eclipse.org/legal/epl-v10.html
@@ -16,6 +16,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
 import java.net.Socket;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import javax.net.SocketFactory;
@@ -58,6 +60,7 @@ import org.eclipse.ecf.filetransfer.FileTransferJob;
 import org.eclipse.ecf.filetransfer.IFileRangeSpecification;
 import org.eclipse.ecf.filetransfer.IFileTransferPausable;
 import org.eclipse.ecf.filetransfer.IFileTransferRunnable;
+import org.eclipse.ecf.filetransfer.IRetrieveFileTransferOptions;
 import org.eclipse.ecf.filetransfer.IncomingFileTransferException;
 import org.eclipse.ecf.filetransfer.InvalidFileRangeSpecificationException;
 import org.eclipse.ecf.filetransfer.events.IFileTransferConnectStartEvent;
@@ -77,6 +80,7 @@ import org.eclipse.ecf.provider.filetransfer.identity.FileTransferID;
 import org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer;
 import org.eclipse.ecf.provider.filetransfer.retrieve.HttpHelper;
 import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper;
+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;
 import org.eclipse.osgi.util.NLS;
 
 public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer {
@@ -264,9 +268,13 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 	private static final String USERNAME_PREFIX = Messages.HttpClientRetrieveFileTransfer_Username_Prefix;
 
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
-	protected static final int DEFAULT_CONNECTION_TIMEOUT = 120000;
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	protected static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_CONNECTION_TIMEOUT;
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
-	protected static final int DEFAULT_READ_TIMEOUT = 120000;
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	protected static final int DEFAULT_READ_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_READ_TIMEOUT;
 
 	protected static final int HTTP_PORT = 80;
 
@@ -411,6 +419,25 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		return new UsernamePasswordCredentials(username, password);
 	}
 
+	protected void setupProxies() {
+		// If it's been set directly (via ECF API) then this overrides platform settings
+		if (proxy == null) {
+			try {
+				// give SOCKS priority see https://bugs.eclipse.org/bugs/show_bug.cgi?id=295030#c61
+				proxy = ProxySetupHelper.getSocksProxy(getRemoteFileURL());
+				if (proxy == null) {
+					proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm());
+				}
+			} catch (NoClassDefFoundError e) {
+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+				// If that happens then we just want to continue on.
+				Activator.logNoProxyWarning(e);
+			}
+		}
+		if (proxy != null)
+			setupProxy(proxy);
+	}
+
 	protected void setupAuthentication(String urlString) throws UnsupportedCallbackException, IOException {
 		Credentials credentials = null;
 		if (username == null) {
@@ -444,6 +471,23 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		}
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
 		getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		setRequestHeaderValuesFromOptions();
+	}
+
+	private void setRequestHeaderValuesFromOptions() {
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			Object o = localOptions.get(IRetrieveFileTransferOptions.REQUEST_HEADERS);
+			if (o != null && o instanceof Map) {
+				Map requestHeaders = (Map) o;
+				for (Iterator i = requestHeaders.keySet().iterator(); i.hasNext();) {
+					Object n = i.next();
+					Object v = requestHeaders.get(n);
+					if (n != null && n instanceof String && v != null && v instanceof String)
+						getMethod.addRequestHeader((String) n, (String) v);
+				}
+			}
+		}
 	}
 
 	private void setRangeHeader(String value) {
@@ -559,6 +603,61 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		return (System.getProperties().getProperty(HttpClientOptions.FORCE_NTLM_PROP) != null);
 	}
 
+	protected int getSocketReadTimeout() {
+		int result = DEFAULT_READ_TIMEOUT;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * @since 4.0
+	 */
+	protected int getConnectTimeout() {
+		int result = DEFAULT_CONNECTION_TIMEOUT;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#openStreams()
 	 */
@@ -571,9 +670,10 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_READ_TIMEOUT);
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
-			httpClient.getParams().setConnectionManagerTimeout(DEFAULT_CONNECTION_TIMEOUT);
+			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
+			int connectTimeout = getConnectTimeout();
+			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
+			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
 
 			setupAuthentication(urlString);
 
@@ -618,6 +718,9 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 			}
 
 			code = responseCode;
+
+			responseHeaders = getResponseHeaders();
+
 			Trace.trace(Activator.PLUGIN_ID, "retrieve resp=" + code); //$NON-NLS-1$
 
 			// Check for NTLM proxy in response headers 
@@ -661,6 +764,23 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreams"); //$NON-NLS-1$
 	}
 
+	private Map getResponseHeaders() {
+		if (getMethod == null)
+			return null;
+		Header[] headers = getMethod.getResponseHeaders();
+		Map result = null;
+		if (headers != null && headers.length > 0) {
+			result = new HashMap();
+			for (int i = 0; i < headers.length; i++) {
+				String name = headers[i].getName();
+				String val = headers[i].getValue();
+				if (name != null && val != null)
+					result.put(name, val);
+			}
+		}
+		return Collections.unmodifiableMap(result);
+	}
+
 	private boolean checkAndHandleDone() {
 		if (isDone()) {
 			// for cancel the done event should have been fired always.
@@ -785,6 +905,7 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
 		getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		setRequestHeaderValuesFromOptions();
 	}
 
 	private boolean openStreamsForResume() {
@@ -796,9 +917,10 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_READ_TIMEOUT);
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
-			httpClient.getParams().setConnectionManagerTimeout(DEFAULT_CONNECTION_TIMEOUT);
+			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
+			int connectTimeout = getConnectTimeout();
+			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
+			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
 
 			CredentialsProvider credProvider = new ECFCredentialsProvider();
 			setupAuthentication(urlString);
@@ -835,6 +957,9 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 			}
 
 			code = responseCode;
+
+			responseHeaders = getResponseHeaders();
+
 			Trace.trace(Activator.PLUGIN_ID, "retrieve resp=" + code); //$NON-NLS-1$
 
 			if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {
@@ -844,19 +969,19 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 				fireReceiveResumedEvent();
 			} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
 				getMethod.releaseConnection();
-				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", urlString), code); //$NON-NLS-1$
+				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", urlString), code, responseHeaders); //$NON-NLS-1$
 			} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {
 				getMethod.releaseConnection();
-				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized, code);
+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized, code, responseHeaders);
 			} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {
 				getMethod.releaseConnection();
-				throw new IncomingFileTransferException("Forbidden", code); //$NON-NLS-1$
+				throw new IncomingFileTransferException("Forbidden", code, responseHeaders); //$NON-NLS-1$
 			} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {
 				getMethod.releaseConnection();
-				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required, code);
+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required, code, responseHeaders);
 			} else {
 				getMethod.releaseConnection();
-				throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE, new Integer(code)), code);
+				throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE, new Integer(code)), code, responseHeaders);
 			}
 			Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreamsForResume", Boolean.TRUE); //$NON-NLS-1$
 			return true;
@@ -867,7 +992,7 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
 					setDoneException(e);
 				}
 			} else {
-				setDoneException((e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, urlString), e, code));
+				setDoneException((e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, urlString), e, code, responseHeaders));
 			}
 			fireTransferReceiveDoneEvent();
 			Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreamsForResume", Boolean.FALSE); //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.ssl/build.properties b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.ssl/build.properties
index fca2093..cdd2db7 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.ssl/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.ssl/build.properties
@@ -4,5 +4,4 @@ bin.includes = META-INF/,\
                .,\
                about.html,\
                plugin.properties
-src.includes = plugin.properties,\
-               about.html
+src.includes = about.html
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
index e9ecb61..279c140 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Wed Feb 18 10:08:46 PST 2009
+#Thu Mar 18 13:43:03 PDT 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -21,7 +21,7 @@ org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
 org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
 org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
@@ -54,6 +54,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
@@ -69,8 +70,9 @@ 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=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
@@ -85,6 +87,7 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverridin
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
 org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
index 7e1affd..477c9ac 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer;singleton:=true
-Bundle-Version: 3.0.1.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/build.properties b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/build.properties
index 1f4914e..a608177 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/build.properties
@@ -6,7 +6,7 @@ bin.includes = .,\
                plugin.properties,\
                schema/
 src.includes = about.html,\
-               schema/,\
-               plugin.properties
+               schema/
 jars.compile.order = .
 source.. = src/
+jre.compilation.profile = J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java
index 9478ae5..b254937 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java
@@ -208,7 +208,10 @@ public class Activator implements BundleActivator, IFileTransferProtocolToFactor
 	}
 
 	public static void logNoProxyWarning(Throwable e) {
-		getDefault().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, IStatus.ERROR, "Warning: Platform proxy API not available", e)); //$NON-NLS-1$
+		Activator a = getDefault();
+		if (a != null) {
+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, IStatus.ERROR, "Warning: Platform proxy API not available", e)); //$NON-NLS-1$
+		}
 	}
 
 	public void log(IStatus status) {
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java
index 328a1f0..7b60558 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java
@@ -53,7 +53,6 @@ public class Messages extends NLS {
 	public static String UrlConnectionRetrieveFileTransfer_USERNAME_PROMPT;
 	public static String UrlConnectionOutgoingFileTransfer_EXCEPTION_COULD_NOT_CONNECT;
 	public static String FileSystemBrowser_EXCEPTION_DIRECTORY_DOES_NOT_EXIST;
-	public static String FileTransferNamespace_Exception_Args_Null;
 	public static String FileTransferNamespace_Exception_Create_Instance;
 	public static String FileTransferNamespace_Exception_Create_Instance_Failed;
 	public static String FileTransferNamespace_File_Protocol;
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties
index b3d5566..1523ad4 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties
@@ -52,7 +52,6 @@ FileTransferNamespace_Jar_Protocol=jar
 FileTransferNamespace_Https_Protocol=https
 FileTransferNamespace_Mailto_Protocol=mailto
 FileTransferNamespace_Gopher_Protocol=mailto
-FileTransferNamespace_Exception_Args_Null=FileTransferID<init> arguments are empty
 FileTransferNamespace_Exception_Create_Instance=Exception in createInstance
 FileTransferNamespace_Exception_Create_Instance_Failed=arguments not correct to create instance of FileTransferNamespace
 FileTransferID_Exception_Url_Not_Null=FileTransferID<init> URL cannot be null
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java
index 331bedc..0a911a2 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007, 2009 Composent, Inc., IBM and others.
+ * Copyright (c) 2007, 2010 Composent, Inc., IBM and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,12 +12,10 @@
 
 package org.eclipse.ecf.provider.filetransfer.browse;
 
-import java.net.URI;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.List;
 import org.eclipse.core.net.proxy.IProxyData;
-import org.eclipse.core.net.proxy.IProxyService;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -25,7 +23,6 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.ecf.core.security.IConnectContext;
 import org.eclipse.ecf.core.util.Proxy;
-import org.eclipse.ecf.core.util.ProxyAddress;
 import org.eclipse.ecf.filetransfer.IRemoteFile;
 import org.eclipse.ecf.filetransfer.IRemoteFileSystemListener;
 import org.eclipse.ecf.filetransfer.IRemoteFileSystemRequest;
@@ -35,6 +32,7 @@ import org.eclipse.ecf.filetransfer.events.IRemoteFileSystemEvent;
 import org.eclipse.ecf.filetransfer.identity.IFileID;
 import org.eclipse.ecf.internal.provider.filetransfer.Activator;
 import org.eclipse.ecf.internal.provider.filetransfer.Messages;
+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;
 
 /**
  * Abstract class for browsing an efs file system.
@@ -211,48 +209,24 @@ public abstract class AbstractFileSystemBrowser {
 	 * @return proxy data selected from the proxies provided.  
 	 */
 	protected IProxyData selectProxyFromProxies(String protocol, IProxyData[] proxies) {
-		if (proxies == null || proxies.length == 0)
+		try {
+			return ProxySetupHelper.selectProxyFromProxies(protocol, proxies);
+		} catch (NoClassDefFoundError e) {
+			// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+			// If that happens then we just want to continue on.
+			Activator.logNoProxyWarning(e);
 			return null;
-		// If only one proxy is available, then use that
-		if (proxies.length == 1)
-			return proxies[0];
-		// If more than one proxy is available, then if http/https protocol then look for that
-		// one...if not found then use first
-		if (protocol.equalsIgnoreCase("http")) { //$NON-NLS-1$
-			for (int i = 0; i < proxies.length; i++) {
-				if (proxies[i].getType().equals(IProxyData.HTTP_PROXY_TYPE))
-					return proxies[i];
-			}
-		} else if (protocol.equalsIgnoreCase("https")) { //$NON-NLS-1$
-			for (int i = 0; i < proxies.length; i++) {
-				if (proxies[i].getType().equals(IProxyData.HTTPS_PROXY_TYPE))
-					return proxies[i];
-			}
 		}
-		// If we haven't found it yet, then return the first one.
-		return proxies[0];
 	}
 
 	protected void setupProxies() {
 		// If it's been set directly (via ECF API) then this overrides platform settings
 		if (proxy == null) {
 			try {
-				IProxyService proxyService = Activator.getDefault().getProxyService();
-				// Only do this if platform service exists
-				if (proxyService != null && proxyService.isProxiesEnabled()) {
-					// Setup via proxyService entry
-					URI target = new URI(directoryOrFile.toExternalForm());
-					final IProxyData[] proxies = proxyService.select(target);
-					IProxyData selectedProxy = selectProxyFromProxies(target.getScheme(), proxies);
-					if (selectedProxy != null) {
-						proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword());
-					}
-				}
-			} catch (Exception e) {
-				// If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available)
-				// then we simply log and ignore
-				Activator.logNoProxyWarning(e);
+				proxy = ProxySetupHelper.getProxy(directoryOrFile.toExternalForm());
 			} catch (NoClassDefFoundError e) {
+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+				// If that happens then we just want to continue on.
 				Activator.logNoProxyWarning(e);
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
index 4f00dc7..8cd9640 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
@@ -46,11 +46,15 @@ public class URLFileSystemBrowser extends AbstractFileSystemBrowser {
 
 	private static final String JRE_CONNECT_TIMEOUT_PROPERTY = "sun.net.client.defaultConnectTimeout"; //$NON-NLS-1$
 
-	private static final String DEFAULT_CONNECT_TIMEOUT = "30000"; //$NON-NLS-1$
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.browse.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	private static final String DEFAULT_CONNECT_TIMEOUT = System.getProperty("org.eclipse.ecf.provider.filetransfer.browse.connectTimeout", "30000"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	private static final String JRE_READ_TIMEOUT_PROPERTY = "sun.net.client.defaultReadTimeout"; //$NON-NLS-1$
 
-	private static final String DEFAULT_READ_TIMEOUT = "30000"; //$NON-NLS-1$
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.browse.readTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	private static final String DEFAULT_READ_TIMEOUT = System.getProperty("org.eclipse.ecf.provider.filetransfer.browse.readTimeout", "30000"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	private JREProxyHelper proxyHelper = null;
 
@@ -87,7 +91,7 @@ public class URLFileSystemBrowser extends AbstractFileSystemBrowser {
 			setupProxies();
 			setupAuthentication();
 			setupTimeouts();
-			URLConnection urlConnection = (URLConnection) directoryOrFile.openConnection();
+			URLConnection urlConnection = directoryOrFile.openConnection();
 			// set cache to off if using jar protocol
 			// this is for addressing bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=235933
 			if (directoryOrFile.getProtocol().equalsIgnoreCase("jar")) { //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
index fca6b41..6e2ca6b 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
@@ -1,11 +1,12 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 Composent, Inc. All rights reserved. This
+ * Copyright (c) 2004, 2010 Composent, Inc. All rights reserved. This
  * program and the accompanying materials are made available under the terms of
  * the Eclipse Public License v1.0 which accompanies this distribution, and is
  * available at http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors: Composent, Inc. - initial API and implementation
  *               Cloudsmith, Inc. - additional API and implementation
+ *               Henrich Kraemer - bug 295030, Update Manager doesn't work with SOCKS proxy  
  ******************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.outgoing;
 
@@ -14,11 +15,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.net.URL;
 import java.util.Map;
 import org.eclipse.core.net.proxy.IProxyData;
-import org.eclipse.core.net.proxy.IProxyService;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -30,7 +29,6 @@ import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.security.IConnectContext;
 import org.eclipse.ecf.core.util.Proxy;
-import org.eclipse.ecf.core.util.ProxyAddress;
 import org.eclipse.ecf.filetransfer.FileTransferInfo;
 import org.eclipse.ecf.filetransfer.FileTransferJob;
 import org.eclipse.ecf.filetransfer.IFileTransferInfo;
@@ -48,6 +46,7 @@ import org.eclipse.ecf.filetransfer.service.ISendFileTransfer;
 import org.eclipse.ecf.internal.provider.filetransfer.Activator;
 import org.eclipse.ecf.internal.provider.filetransfer.Messages;
 import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace;
+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;
 import org.eclipse.osgi.util.NLS;
 
 /**
@@ -57,8 +56,6 @@ public abstract class AbstractOutgoingFileTransfer implements IOutgoingFileTrans
 
 	public static final int DEFAULT_BUF_LENGTH = 4096;
 
-	private static final int FILETRANSFER_ERRORCODE = 1001;
-
 	protected Job job;
 
 	protected URL remoteFileURL;
@@ -151,12 +148,7 @@ public abstract class AbstractOutgoingFileTransfer implements IOutgoingFileTrans
 	}
 
 	protected IStatus getFinalStatus(Throwable exception1) {
-		if (exception1 == null)
-			return new Status(IStatus.OK, Activator.getDefault().getBundle().getSymbolicName(), 0, Messages.AbstractOutgoingFileTransfer_Status_Transfer_Completed_OK, null);
-		else if (exception1 instanceof UserCancelledException)
-			return new Status(IStatus.CANCEL, Activator.PLUGIN_ID, FILETRANSFER_ERRORCODE, Messages.AbstractOutgoingFileTransfer_Exception_User_Cancelled, exception1);
-		else
-			return new Status(IStatus.ERROR, Activator.PLUGIN_ID, FILETRANSFER_ERRORCODE, Messages.AbstractOutgoingFileTransfer_Status_Transfer_Exception, exception1);
+		return Status.OK_STATUS;
 	}
 
 	protected void hardClose() {
@@ -365,28 +357,10 @@ public abstract class AbstractOutgoingFileTransfer implements IOutgoingFileTrans
 		// If it's been set directly (via ECF API) then this overrides platform settings
 		if (proxy == null) {
 			try {
-				IProxyService proxyService = Activator.getDefault().getProxyService();
-				// Only do this if platform service exists
-				if (proxyService != null && proxyService.isProxiesEnabled()) {
-					// Setup via proxyService entry
-					URI target = new URI(getRemoteFileURL().toExternalForm());
-					String type = IProxyData.SOCKS_PROXY_TYPE;
-					if (target.getScheme().equalsIgnoreCase(IProxyData.HTTP_PROXY_TYPE)) {
-						type = IProxyData.HTTP_PROXY_TYPE;
-					} else if (target.getScheme().equalsIgnoreCase(IProxyData.HTTPS_PROXY_TYPE)) {
-						type = IProxyData.HTTPS_PROXY_TYPE;
-					}
-					final IProxyData[] proxyDatas = proxyService.select(target);
-					final IProxyData proxyData = selectProxyFromProxies(target.getScheme(), proxyDatas);
-					if (proxyData != null) {
-						proxy = new Proxy(((type.equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(proxyData.getHost(), proxyData.getPort()), proxyData.getUserId(), proxyData.getPassword());
-					}
-				}
-			} catch (Exception e) {
-				// If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available)
-				// then we simply log and ignore
-				Activator.logNoProxyWarning(e);
+				proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm());
 			} catch (NoClassDefFoundError e) {
+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+				// If that happens then we just want to continue on.
 				Activator.logNoProxyWarning(e);
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
index c19179d..6924d3b 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 Composent, Inc. and others.
+ * Copyright (c) 2004, 2010 Composent, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *    Benjamin Cabe <benjamin.cabe at anyware-tech.com> - bug 220258
+ *    Henrich Kraemer - bug 295030, Update Manager doesn't work with SOCKS proxy  
  ******************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.retrieve;
 
@@ -18,13 +19,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.net.URL;
 import java.text.DecimalFormat;
 import java.util.Date;
 import java.util.Map;
 import org.eclipse.core.net.proxy.IProxyData;
-import org.eclipse.core.net.proxy.IProxyService;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.core.runtime.IPath;
@@ -39,13 +38,13 @@ import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.security.IConnectContext;
 import org.eclipse.ecf.core.util.Proxy;
-import org.eclipse.ecf.core.util.ProxyAddress;
 import org.eclipse.ecf.filetransfer.FileTransferJob;
 import org.eclipse.ecf.filetransfer.IFileRangeSpecification;
 import org.eclipse.ecf.filetransfer.IFileTransferListener;
 import org.eclipse.ecf.filetransfer.IFileTransferPausable;
 import org.eclipse.ecf.filetransfer.IFileTransferRunnable;
 import org.eclipse.ecf.filetransfer.IIncomingFileTransfer;
+import org.eclipse.ecf.filetransfer.IRetrieveFileTransferOptions;
 import org.eclipse.ecf.filetransfer.IncomingFileTransferException;
 import org.eclipse.ecf.filetransfer.UserCancelledException;
 import org.eclipse.ecf.filetransfer.events.IIncomingFileTransferReceiveDataEvent;
@@ -59,6 +58,7 @@ import org.eclipse.ecf.internal.provider.filetransfer.Activator;
 import org.eclipse.ecf.internal.provider.filetransfer.Messages;
 import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace;
 import org.eclipse.ecf.provider.filetransfer.util.PollingInputStream;
+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;
 import org.eclipse.ecf.provider.filetransfer.util.TimeoutInputStream;
 import org.eclipse.osgi.util.NLS;
 
@@ -66,15 +66,25 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 
 	public static final int DEFAULT_BUF_LENGTH = 4096;
 
-	private static final int FILETRANSFER_ERRORCODE = 1001;
-
-	protected static final int POLLING_RETRY_ATTEMPTS = 20;
+	protected static final int POLLING_RETRY_ATTEMPTS = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts", "30")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$;;
 
 	protected static final int TIMEOUT_INPUTSTREAM_BUFFER_SIZE = 8192;
 
-	protected static final int READ_TIMEOUT = 1000;
+	protected static final int READ_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.retrieve.readTimeout", "1000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$;
+
+	protected static final int CLOSE_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout", "1000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$;
 
-	protected static final int CLOSE_TIMEOUT = 1000;
+	private static final String readTimeoutMessage = "Timeout while reading input stream.\n" + //$NON-NLS-1$
+			"The following system properties can be used to adjust the readTimeout, retryAttempts, and closeTimeout\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.readTimeout=<default:1000>\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts=<default:30>\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout=<default:1000>\n"; //$NON-NLS-1$
+
+	private static final String closeTimeoutMessage = "Timeout while closing input stream.\n" + //$NON-NLS-1$
+			"The following system properties can be used to adjust the readTimeout, retryAttempts, and closeTimeout\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.readTimeout=<default:1000>\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts=<default:30>\n" + //$NON-NLS-1$
+			"\torg.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout=<default:1000>\n"; //$NON-NLS-1$
 
 	protected Object jobLock = new Object();
 	protected Job job;
@@ -117,12 +127,34 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 
 	protected double downloadRateBytesPerSecond = 0L;
 
+	/**
+	 * @since 3.1
+	 */
+	protected Map responseHeaders;
+
 	public AbstractRetrieveFileTransfer() {
 		//
 	}
 
 	protected InputStream wrapTransferReadInputStream(InputStream inputStream, IProgressMonitor monitor) {
-		return new PollingInputStream(remoteFileContents, POLLING_RETRY_ATTEMPTS, monitor);
+		return new PollingInputStream(remoteFileContents, getRetryAttempts(), monitor, readTimeoutMessage, closeTimeoutMessage);
+	}
+
+	private int getRetryAttempts() {
+		int result = POLLING_RETRY_ATTEMPTS;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the property is present, if so set
+			Object o = localOptions.get("org.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
 	}
 
 	private IFileTransferRunnable fileTransferRunnable = new IFileTransferRunnable() {
@@ -179,8 +211,51 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 		return remoteFileURL;
 	}
 
+	protected int getSocketReadTimeout() {
+		int result = READ_TIMEOUT;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
+	protected int getSocketCloseTimeout() {
+		int result = CLOSE_TIMEOUT;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the property is present, if so set
+			Object o = localOptions.get("org.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
 	protected void setInputStream(InputStream ins) {
-		remoteFileContents = new TimeoutInputStream(ins, TIMEOUT_INPUTSTREAM_BUFFER_SIZE, READ_TIMEOUT, CLOSE_TIMEOUT);
+		remoteFileContents = new TimeoutInputStream(ins, TIMEOUT_INPUTSTREAM_BUFFER_SIZE, getSocketReadTimeout(), getSocketCloseTimeout());
 	}
 
 	protected void setOutputStream(OutputStream outs) {
@@ -247,12 +322,7 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 	}
 
 	protected IStatus getFinalStatus(Throwable exception1) {
-		if (exception1 == null)
-			return new Status(IStatus.OK, Activator.PLUGIN_ID, 0, Messages.AbstractRetrieveFileTransfer_Status_Transfer_Completed_OK, null);
-		else if (exception1 instanceof UserCancelledException)
-			return new Status(IStatus.CANCEL, Activator.PLUGIN_ID, FILETRANSFER_ERRORCODE, Messages.AbstractRetrieveFileTransfer_Exception_User_Cancelled, exception1);
-		else
-			return new Status(IStatus.ERROR, Activator.PLUGIN_ID, FILETRANSFER_ERRORCODE, Messages.AbstractRetrieveFileTransfer_Status_Transfer_Exception, exception1);
+		return Status.OK_STATUS;
 	}
 
 	protected void hardClose() {
@@ -690,6 +760,10 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 				return sb.toString();
 			}
 
+			public Map getResponseHeaders() {
+				return responseHeaders;
+			}
+
 		});
 	}
 
@@ -755,6 +829,10 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 				return sb.toString();
 			}
 
+			public Map getResponseHeaders() {
+				return responseHeaders;
+			}
+
 		});
 	}
 
@@ -777,6 +855,9 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 	 * org.eclipse.ecf.filetransfer.IFileRangeSpecification,
 	 * org.eclipse.ecf.filetransfer.IFileTransferListener, java.util.Map)
 	 */
+	/**
+	 * @throws IncomingFileTransferException  
+	 */
 	public void sendRetrieveRequest(IFileID rFileID, IFileRangeSpecification rangeSpec, IFileTransferListener transferListener, Map ops) throws IncomingFileTransferException {
 		Assert.isNotNull(rFileID, Messages.AbstractRetrieveFileTransfer_RemoteFileID_Not_Null);
 		Assert.isNotNull(transferListener, Messages.AbstractRetrieveFileTransfer_TransferListener_Not_Null);
@@ -872,23 +953,10 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans
 		// settings
 		if (proxy == null) {
 			try {
-				IProxyService proxyService = Activator.getDefault().getProxyService();
-				// Only do this if platform service exists
-				if (proxyService != null && proxyService.isProxiesEnabled()) {
-					// Setup via proxyService entry
-					URI target = new URI(getRemoteFileURL().toExternalForm());
-					final IProxyData[] proxies = proxyService.select(target);
-					IProxyData selectedProxy = selectProxyFromProxies(target.getScheme(), proxies);
-					if (selectedProxy != null) {
-						proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword());
-					}
-				}
-			} catch (Exception e) {
-				// If we don't even have the classes for this (i.e. the
-				// org.eclipse.core.net plugin not available)
-				// then we simply log and ignore
-				Activator.logNoProxyWarning(e);
+				proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm());
 			} catch (NoClassDefFoundError e) {
+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.
+				// If that happens then we just want to continue on.
 				Activator.logNoProxyWarning(e);
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
index c205bcc..72e8e10 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
@@ -18,6 +18,11 @@ import java.net.HttpURLConnection;
 import java.net.PasswordAuthentication;
 import java.net.URL;
 import java.net.URLConnection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.ecf.core.security.Callback;
@@ -29,6 +34,7 @@ import org.eclipse.ecf.core.security.UnsupportedCallbackException;
 import org.eclipse.ecf.core.util.Proxy;
 import org.eclipse.ecf.filetransfer.IFileRangeSpecification;
 import org.eclipse.ecf.filetransfer.IFileTransferPausable;
+import org.eclipse.ecf.filetransfer.IRetrieveFileTransferOptions;
 import org.eclipse.ecf.filetransfer.IncomingFileTransferException;
 import org.eclipse.ecf.filetransfer.InvalidFileRangeSpecificationException;
 import org.eclipse.ecf.internal.provider.filetransfer.Activator;
@@ -47,12 +53,12 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 
 	private static final String JRE_CONNECT_TIMEOUT_PROPERTY = "sun.net.client.defaultConnectTimeout"; //$NON-NLS-1$
 
-	private static final String DEFAULT_CONNECT_TIMEOUT = "15000"; //$NON-NLS-1$
+	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.connectTimeout
+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
+	private static final String DEFAULT_CONNECT_TIMEOUT = System.getProperty("org.eclipse.ecf.provider.filetransfer.retrieve.connectTimeout", "15000"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	private static final String JRE_READ_TIMEOUT_PROPERTY = "sun.net.client.defaultReadTimeout"; //$NON-NLS-1$
 
-	private static final String DEFAULT_READ_TIMEOUT = "1000"; //$NON-NLS-1$
-
 	protected URLConnection urlConnection;
 
 	protected int httpVersion = 1;
@@ -111,6 +117,23 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 		// set max-age for cache control to 0 for bug
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
 		urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		setRequestHeaderValuesFromOptions();
+	}
+
+	private void setRequestHeaderValuesFromOptions() {
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			Object o = localOptions.get(IRetrieveFileTransferOptions.REQUEST_HEADERS);
+			if (o != null && o instanceof Map) {
+				Map requestHeaders = (Map) o;
+				for (Iterator i = requestHeaders.keySet().iterator(); i.hasNext();) {
+					Object n = i.next();
+					Object v = requestHeaders.get(n);
+					if (n != null && n instanceof String && v != null && v instanceof String)
+						urlConnection.addRequestProperty((String) n, (String) v);
+				}
+			}
+		}
 	}
 
 	protected void setRequestHeaderValues() throws InvalidFileRangeSpecificationException {
@@ -134,6 +157,7 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 		// set max-age for cache control to 0 for bug
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
 		urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		setRequestHeaderValuesFromOptions();
 	}
 
 	private void setRangeHeader(String value) {
@@ -287,19 +311,20 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 			setCompressionRequestHeader();
 			setInputStream(getDecompressedStream());
 			code = getResponseCode();
+			responseHeaders = getResponseHeaders();
 			if (isHTTP()) {
 				if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {
 					fireReceiveStartEvent();
 				} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
-					throw new IncomingFileTransferException(NLS.bind("File not found: {0}", getRemoteFileURL().toString()), code); //$NON-NLS-1$
+					throw new IncomingFileTransferException(NLS.bind("File not found: {0}", getRemoteFileURL().toString()), code, responseHeaders); //$NON-NLS-1$
 				} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {
-					throw new IncomingFileTransferException("Unauthorized", code); //$NON-NLS-1$
+					throw new IncomingFileTransferException("Unauthorized", code, responseHeaders); //$NON-NLS-1$
 				} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {
-					throw new IncomingFileTransferException("Forbidden", code); //$NON-NLS-1$
+					throw new IncomingFileTransferException("Forbidden", code, responseHeaders); //$NON-NLS-1$
 				} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {
-					throw new IncomingFileTransferException("Proxy authentication required", code); //$NON-NLS-1$
+					throw new IncomingFileTransferException("Proxy authentication required", code, responseHeaders); //$NON-NLS-1$
 				} else {
-					throw new IncomingFileTransferException(NLS.bind("General connection error with response code={0}", new Integer(code)), code); //$NON-NLS-1$
+					throw new IncomingFileTransferException(NLS.bind("General connection error with response code={0}", new Integer(code)), code, responseHeaders); //$NON-NLS-1$
 				}
 			} else {
 				fireReceiveStartEvent();
@@ -307,12 +332,34 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 		} catch (final FileNotFoundException e) {
 			throw new IncomingFileTransferException(NLS.bind("File not found: {0}", getRemoteFileURL().toString()), 404); //$NON-NLS-1$
 		} catch (final Exception e) {
-			IncomingFileTransferException except = (e instanceof IncomingFileTransferException) ? (IncomingFileTransferException) e : new IncomingFileTransferException(NLS.bind(Messages.UrlConnectionRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, getRemoteFileURL().toString()), e, code);
+			IncomingFileTransferException except = (e instanceof IncomingFileTransferException) ? (IncomingFileTransferException) e : new IncomingFileTransferException(NLS.bind(Messages.UrlConnectionRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, getRemoteFileURL().toString()), e, code, responseHeaders);
 			hardClose();
 			throw except;
 		}
 	}
 
+	private Map getResponseHeaders() {
+		if (responseHeaders != null)
+			return responseHeaders;
+		if (urlConnection == null)
+			return null;
+		Map headerFields = urlConnection.getHeaderFields();
+		if (headerFields == null)
+			return null;
+		Map result = new HashMap();
+		for (Iterator i = headerFields.keySet().iterator(); i.hasNext();) {
+			String name = (String) i.next();
+			List listValue = (List) headerFields.get(name);
+			String val = null;
+			if (listValue != null && listValue.size() > 0) {
+				val = (String) ((listValue.size() > 1) ? listValue.get(listValue.size() - 1) : listValue.get(0));
+			}
+			if (name != null && val != null)
+				result.put(name, val);
+		}
+		return Collections.unmodifiableMap(result);
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -372,14 +419,40 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 		return super.getAdapter(adapter);
 	}
 
+	protected String getConnectTimeout() {
+		String result = DEFAULT_CONNECT_TIMEOUT;
+		Map localOptions = getOptions();
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).toString();
+				} else if (o instanceof String) {
+					result = (String) o;
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).toString();
+				} else if (o instanceof String) {
+					result = (String) o;
+				}
+			}
+		}
+		return result;
+	}
+
 	private void setupTimeouts() {
 		String existingTimeout = System.getProperty(JRE_CONNECT_TIMEOUT_PROPERTY);
 		if (existingTimeout == null) {
-			System.setProperty(JRE_CONNECT_TIMEOUT_PROPERTY, DEFAULT_CONNECT_TIMEOUT);
+			System.setProperty(JRE_CONNECT_TIMEOUT_PROPERTY, getConnectTimeout());
 		}
 		existingTimeout = System.getProperty(JRE_READ_TIMEOUT_PROPERTY);
 		if (existingTimeout == null) {
-			System.setProperty(JRE_READ_TIMEOUT_PROPERTY, DEFAULT_READ_TIMEOUT);
+			System.setProperty(JRE_READ_TIMEOUT_PROPERTY, "" + getSocketReadTimeout()); //$NON-NLS-1$
 		}
 	}
 
@@ -398,24 +471,25 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
 			// Make actual GET request
 			setInputStream(urlConnection.getInputStream());
 			code = getResponseCode();
+			responseHeaders = getResponseHeaders();
 			if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {
 				getResumeResponseHeaderValues();
 				this.paused = false;
 				fireReceiveResumedEvent();
 				return true;
 			} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
-				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", getRemoteFileURL().toString()), code); //$NON-NLS-1$
+				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", getRemoteFileURL().toString()), code, responseHeaders); //$NON-NLS-1$
 			} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {
-				throw new IncomingFileTransferException("Unauthorized", code); //$NON-NLS-1$
+				throw new IncomingFileTransferException("Unauthorized", code, responseHeaders); //$NON-NLS-1$
 			} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {
-				throw new IncomingFileTransferException("Forbidden", code); //$NON-NLS-1$
+				throw new IncomingFileTransferException("Forbidden", code, responseHeaders); //$NON-NLS-1$
 			} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {
-				throw new IncomingFileTransferException("Proxy authentication required", code); //$NON-NLS-1$
+				throw new IncomingFileTransferException("Proxy authentication required", code, responseHeaders); //$NON-NLS-1$
 			} else {
-				throw new IncomingFileTransferException(NLS.bind("General connection error with response code={0}", new Integer(code)), code); //$NON-NLS-1$
+				throw new IncomingFileTransferException(NLS.bind("General connection error with response code={0}", new Integer(code)), code, responseHeaders); //$NON-NLS-1$
 			}
 		} catch (final Exception e) {
-			this.exception = (e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.UrlConnectionRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, getRemoteFileURL().toString()), e, code);
+			this.exception = (e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.UrlConnectionRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, getRemoteFileURL().toString()), e, code, responseHeaders);
 			this.done = true;
 			hardClose();
 			fireTransferReceiveDoneEvent();
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/JREProxyHelper.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/JREProxyHelper.java
index 611a32e..3d7414e 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/JREProxyHelper.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/JREProxyHelper.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 Composent, Inc. and others.
+ * Copyright (c) 2007, 2010 Composent, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - bug 295030, Update Manager doesn't work with SOCKS proxy  
  *****************************************************************************/
 
 package org.eclipse.ecf.provider.filetransfer.util;
@@ -48,6 +49,7 @@ public class JREProxyHelper {
 		if (proxyPort != -1)
 			systemProperties.setProperty(proxyPortProperty, proxyPort + ""); //$NON-NLS-1$
 		final String username = proxy2.getUsername();
+		boolean setAuthenticator = false;
 		if (username != null && !username.equals("")) { //$NON-NLS-1$
 			final String password = (proxy2.getPassword() == null) ? "" : proxy2.getPassword(); //$NON-NLS-1$
 			if (proxy2.hasCredentials()) {
@@ -59,8 +61,19 @@ public class JREProxyHelper {
 						return new PasswordAuthentication(username, password.toCharArray());
 					}
 				});
+				setAuthenticator = true;
 			}
 		}
+		if (!setAuthenticator) {
+			Authenticator.setDefault(new Authenticator() {
+				/* (non-Javadoc)
+				 * @see java.net.Authenticator#getPasswordAuthentication()
+				 */
+				protected PasswordAuthentication getPasswordAuthentication() {
+					return null;
+				}
+			});
+		}
 	}
 
 	public void dispose() {
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/PollingInputStream.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/PollingInputStream.java
index a21ff68..a66ba05 100644
--- a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/PollingInputStream.java
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/PollingInputStream.java
@@ -39,6 +39,9 @@ public class PollingInputStream extends FilterInputStream {
 	private IProgressMonitor monitor;
 	private boolean cancellable;
 
+	private String readTimeoutMessage = "Timeout while reading input stream"; //$NON-NLS-1$
+	private String closeTimeoutMessage = "Timeout while closing input stream"; //$NON-NLS-1$
+
 	/**
 	 * Creates a new polling input stream.
 	 * 
@@ -59,6 +62,32 @@ public class PollingInputStream extends FilterInputStream {
 	}
 
 	/**
+	 * Creates a new polling input stream.
+	 * 
+	 * @param in
+	 *            the underlying input stream
+	 * @param numAttempts
+	 *            the number of attempts before issuing an
+	 *            InterruptedIOException, if 0, retries indefinitely until
+	 *            canceled
+	 * @param monitor
+	 *            the progress monitor to be polled for cancellation
+	 * @param readTimeoutMessage message to go with InteruptedIOException if read timeout
+	 * @param closeTimeoutMessage message to go with InteruptedIOException if close timeout
+	 * @since 3.1
+	 */
+	public PollingInputStream(InputStream in, int numAttempts, IProgressMonitor monitor, String readTimeoutMessage, String closeTimeoutMessage) {
+		super(in);
+		this.numAttempts = numAttempts;
+		this.monitor = monitor;
+		this.cancellable = true;
+		if (readTimeoutMessage != null)
+			this.readTimeoutMessage = readTimeoutMessage;
+		if (closeTimeoutMessage != null)
+			this.closeTimeoutMessage = closeTimeoutMessage;
+	}
+
+	/**
 	 * Wraps the underlying stream's method. It may be important to wait for an
 	 * input stream to be closed because it holds an implicit lock on a system
 	 * resource (such as a file) while it is open. Closing a stream may take
@@ -89,7 +118,7 @@ public class PollingInputStream extends FilterInputStream {
 					if (checkCancellation())
 						throw new OperationCanceledException();
 					if (++attempts == numAttempts)
-						throw new InterruptedIOException("Timeout while closing input stream"); //$NON-NLS-1$
+						throw new InterruptedIOException(closeTimeoutMessage);
 				} catch (IOException e) {
 					// ignore it - see
 					// https://bugs.eclipse.org/bugs/show_bug.cgi?id=203423#c10
@@ -99,7 +128,9 @@ public class PollingInputStream extends FilterInputStream {
 	}
 
 	private void logError(String message, IOException e) {
-		Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, message, e));
+		Activator a = Activator.getDefault();
+		if (a != null)
+			a.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, message, e));
 	}
 
 	/**
@@ -123,7 +154,7 @@ public class PollingInputStream extends FilterInputStream {
 				return in.read();
 			} catch (InterruptedIOException e) {
 				if (++attempts == numAttempts)
-					throw new InterruptedIOException("Timeout while reading input stream"); //$NON-NLS-1$
+					throw new InterruptedIOException(readTimeoutMessage);
 			}
 		}
 	}
@@ -158,7 +189,7 @@ public class PollingInputStream extends FilterInputStream {
 				if (e.bytesTransferred != 0)
 					return e.bytesTransferred; // keep partial transfer
 				if (++attempts == numAttempts)
-					throw new InterruptedIOException("Timeout while reading input stream"); //$NON-NLS-1$
+					throw new InterruptedIOException(readTimeoutMessage);
 			}
 		}
 	}
@@ -188,7 +219,7 @@ public class PollingInputStream extends FilterInputStream {
 				if (e.bytesTransferred != 0)
 					return e.bytesTransferred; // keep partial transfer
 				if (++attempts == numAttempts)
-					throw new InterruptedIOException("Timeout while reading input stream"); //$NON-NLS-1$
+					throw new InterruptedIOException(readTimeoutMessage);
 			}
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/ProxySetupHelper.java b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/ProxySetupHelper.java
new file mode 100644
index 0000000..680b029
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/util/ProxySetupHelper.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+* Copyright (c) 2010 IBM, and others. 
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   IBM Corporation - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.provider.filetransfer.util;
+
+import java.net.URI;
+import java.net.URL;
+import org.eclipse.core.net.proxy.IProxyData;
+import org.eclipse.core.net.proxy.IProxyService;
+import org.eclipse.ecf.core.util.Proxy;
+import org.eclipse.ecf.core.util.ProxyAddress;
+import org.eclipse.ecf.internal.provider.filetransfer.Activator;
+
+/**
+ * Proxy setup utilities.  
+ *
+ * NOTE:  Use of this class implies the presence of the core.net.proxy
+ * API...this class will not load (NoClassDefFoundError will be thrown if load/use is attempted)
+ * if the core.net.proxy bundle is not present in the runtime.  
+ * 
+ * @noextend This class is not intended to be extended by clients.
+ * @since 3.1
+ */
+public class ProxySetupHelper {
+	public static Proxy getProxy(String url) {
+		Proxy proxy = null;
+		try {
+			IProxyService proxyService = Activator.getDefault().getProxyService();
+			// Only do this if platform service exists
+			if (proxyService != null && proxyService.isProxiesEnabled()) {
+				// Setup via proxyService entry
+				URI uri = new URI(url);
+				final IProxyData[] proxies = proxyService.select(uri);
+				IProxyData selectedProxy = selectProxyFromProxies(uri.getScheme(), proxies);
+				if (selectedProxy != null) {
+					proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword());
+				}
+			}
+		} catch (Exception e) {
+			// If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available)
+			// then we simply log and ignore
+			Activator.logNoProxyWarning(e);
+		} catch (NoClassDefFoundError e) {
+			Activator.logNoProxyWarning(e);
+		}
+		return proxy;
+	}
+
+	public static Proxy getSocksProxy(URL url) {
+		String host = url.getHost();
+		int port = url.getPort();
+		String strURL = IProxyData.SOCKS_PROXY_TYPE + "://" + host; //$NON-NLS-1$
+		if (port != -1) {
+			strURL += ":" + port; //$NON-NLS-1$
+		}
+		return ProxySetupHelper.getProxy(strURL);
+	}
+
+	/**
+	 * Select a single proxy from a set of proxies available for the given host.  This implementation
+	 * selects in the following manner:  1) If proxies provided is null or array of 0 length, null 
+	 * is returned.  If only one proxy is available (array of length 1) then the entry is returned.
+	 * If proxies provided is length > 1, then if the type of a proxy in the array matches the given
+	 * protocol (e.g. http, https), then the first matching proxy is returned.  If the protocol does
+	 * not match any of the proxies, then the *first* proxy (i.e. proxies[0]) is returned.  
+	 * 
+	 * @param protocol the target protocol (e.g. http, https, scp, etc).  Will not be <code>null</code>.
+	 * @param proxies the proxies to select from.  May be <code>null</code> or array of length 0.
+	 * @return proxy data selected from the proxies provided.  
+	 */
+	public static IProxyData selectProxyFromProxies(String protocol, IProxyData[] proxies) {
+		if (proxies == null || proxies.length == 0)
+			return null;
+		// If only one proxy is available, then use that
+		if (proxies.length == 1)
+			return proxies[0];
+		// If more than one proxy is available, then if http/https protocol then look for that
+		// one...if not found then use first
+		if (protocol.equalsIgnoreCase("http")) { //$NON-NLS-1$
+			for (int i = 0; i < proxies.length; i++) {
+				if (proxies[i].getType().equals(IProxyData.HTTP_PROXY_TYPE))
+					return proxies[i];
+			}
+		} else if (protocol.equalsIgnoreCase("https")) { //$NON-NLS-1$
+			for (int i = 0; i < proxies.length; i++) {
+				if (proxies[i].getType().equals(IProxyData.HTTPS_PROXY_TYPE))
+					return proxies[i];
+			}
+		}
+		// If we haven't found it yet, then return the first one.
+		return proxies[0];
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.ecf.ssl/build.properties b/eclipse/plugins/org.eclipse.ecf.ssl/build.properties
index fca2093..cdd2db7 100644
--- a/eclipse/plugins/org.eclipse.ecf.ssl/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf.ssl/build.properties
@@ -4,5 +4,4 @@ bin.includes = META-INF/,\
                .,\
                about.html,\
                plugin.properties
-src.includes = plugin.properties,\
-               about.html
+src.includes = about.html
diff --git a/eclipse/plugins/org.eclipse.ecf/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ecf/META-INF/MANIFEST.MF
index 130352e..83c8123 100644
--- a/eclipse/plugins/org.eclipse.ecf/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ecf/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.ECFPlugin
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.ecf/build.properties b/eclipse/plugins/org.eclipse.ecf/build.properties
index 3737b77..1d5a543 100644
--- a/eclipse/plugins/org.eclipse.ecf/build.properties
+++ b/eclipse/plugins/org.eclipse.ecf/build.properties
@@ -22,5 +22,5 @@ bin.includes = META-INF/,\
 src.includes = about.html,\
                schema/,\
                about.properties,\
-               plugin.properties,\
                about.ini
+jre.compilation.profile = J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.ecf/javadoc.xml b/eclipse/plugins/org.eclipse.ecf/javadoc.xml
index 29a700f..2d19741 100644
--- a/eclipse/plugins/org.eclipse.ecf/javadoc.xml
+++ b/eclipse/plugins/org.eclipse.ecf/javadoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <project default="javadoc">
     <target name="javadoc">
-        <javadoc access="protected" additionalparam="-J-Xmx256m  -tag model:a:Model -tag generated:a:Generated -tag noreference:tcmf:DoNotReference -tag ordered:a:Ordered " author="false" classpath="../org.eclipse.ecf.remoteservice/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.concurrent_1.0.0.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.security_1.0.100.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.filebuffers_3.5.0.v20090526-2000.jar;../org.eclipse.ecf.presence.ui/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.workbench_3.5.0.I20090603-2000.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.views_3.4.0.I20090525-2000.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.objectweb.asm_3.1.0.v200803061910.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800\runtime_registry_compatibility.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.osgi_3.5.0.v20090520.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.forms_3.4.0.v20090526.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.apache.commons.logging_1.0.4.v200904062259.jar;../org.eclipse.emf.ecore.change/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.ide_3.5.0.I20090525-2000.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.editors_3.5.0.v20090527-2000.jar;../org.eclipse.ecf.provider.remoteservice/bin;../org.eclipse.ecf.presence/bin;../org.eclipse.ecf.provider.xmpp/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.app_1.2.0.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.osgi.services_3.2.0.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.jobs_3.4.100.v20090429-1800.jar;bin;../org.apache.commons.httpclient;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui_3.5.0.I20090604-2000.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.jface.text_3.5.0.v20090602.jar;../org.eclipse.ecf.provider.datashare/bin;../org.eclipse.ecf.discovery.ui.edit/bin;../org.eclipse.ecf.sync/bin;../org.jivesoftware.smack/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.console_3.4.0.v20090513.jar;../org.apache.commons.codec;../org.eclipse.ecf.provider.filetransfer/bin;../org.eclipse.ecf.identity/bin;../org.eclipse.emf.ecore/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.ui.workbench.texteditor_3.5.0.v20090603.jar;../org.eclipse.ecf.ui/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.filesystem_1.2.0.v20090507.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.preferences_3.2.300.v20090520-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.contenttype_3.4.0.v20090429-1800.jar;../org.jivesoftware.smack/jars/xpp.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.expressions_3.4.100.v20090429-1800.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.jface_3.5.0.I20090525-2000.jar;../org.eclipse.emf.edit/bin;../org.eclipse.ecf.telephony.call/bin;../org.eclipse.ecf.sharedobject/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.swt_3.5.0.v3550a.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.resources_3.5.0.v20090512.jar;../org.eclipse.ecf.osgi.services/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.commands_3.5.0.I20090525-2000.jar;../org.eclipse.emf.edit.ui/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.runtime_3.5.0.v20090525.jar;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.core.net_1.2.0.I20090522-1010.jar;../org.eclipse.ecf.filetransfer/bin;../org.eclipse.ecf.provider/bin;../ch.ethz.iks.slp/bin;../org.eclipse.ecf.discovery/bin;../org.eclipse.ecf.datashare/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.text_3.5.0.v20090513-2000.jar;../ch.ethz.iks.r_osgi.remote/bin;../org.eclipse.emf.common.ui/bin;../org.eclipse.ecf.discovery.ui.model/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.equinox.common_3.5.0.v20090520-1800.jar;../org.eclipse.emf.common/bin;../org.eclipse.ecf.discovery.ui/bin;../org.eclipse.ecf.osgi.services.discovery/bin;C:\eclipse3.5.rc4\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.5.0.v3550a.jar" destdir="../ecf documentation/org.eclipse.ecf.docs/api" doctitle="Eclipse Communication Framework (ECF) 3.0.0" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.eclipse.ecf.ui.hyperlink,org.eclipse.ecf.core.sharedobject.util,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.core.sharedobject.provider,org.eclipse.ecf.example.clients,org.eclipse.ecf.presence.im,org.eclipse.ecf.ui.actions,org.eclipse.ecf.telephony.call.ui.actions,org.eclipse.ecf.core.provider,org.eclipse.ecf.discovery.service,org.eclipse.ecf.presence.bot,org.eclipse.ecf.remoteservice,org.eclipse.ecf.provider.remoteservice,org.eclipse.ecf.core.sharedobject.events,org.eclipse.ecf.provider.jslp.identity,org.eclipse.ecf.telephony.call.events,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.core.identity,org.eclipse.ecf.provider.remoteservice.generic,org.eclipse.ecf.docshare,org.eclipse.ecf.presence.collab.ui.url,org.eclipse.ecf.internal.docshare,org.eclipse.ecf.presence.roster,org.eclipse.ecf.core.events,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.provider.filetransfer.events.socket,org.eclipse.ecf.provider.generic.gmm,org.eclipse.ecf.presence.collab.ui.screencapture,org.eclipse.ecf.provider.filetransfer.outgoing,org.eclipse.ecf.filetransfer.events,org.eclipse.ecf.datashare.service,org.eclipse.ecf.filetransfer.ui.actions,org.eclipse.ecf.core.sharedobject,org.eclipse.ecf.filetransfer.events.socket,org.eclipse.ecf.sync.doc,org.eclipse.ecf.ui.util,org.eclipse.ecf.core.sharedobject.security,org.eclipse.ecf.provider.filetransfer.retrieve,org.eclipse.ecf.core.user,org.eclipse.ecf.presence.chatroom,org.eclipse.ecf.provider.filetransfer.identity,org.eclipse.ecf.remoteservices.ui,org.eclipse.ecf.provider.generic,org.eclipse.ecf.presence.ui.dnd,org.eclipse.ecf.presence.bot.application,org.eclipse.ecf.ui.screencapture,org.eclipse.ecf.provider.comm,org.eclipse.ecf.presence.search.message,org.eclipse.ecf.provider.jslp.container,org.eclipse.ecf.provider.ui.wizards,org.eclipse.ecf.ui.dialogs,org.eclipse.ecf.ui.wizards,org.eclipse.ecf.presence.history,org.eclipse.ecf.core.start,org.eclipse.ecf.presence.collab.ui.view,org.eclipse.ecf.osgi.services.distribution,org.eclipse.ecf.docshare.messages,org.eclipse.ecf.provider.filetransfer.browse,org.eclipse.ecf.core.security,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.discovery.ui.model.resource,org.eclipse.ecf.presence.ui.menu,org.eclipse.ecf.protocol.msn.events,org.eclipse.ecf.presence.search,org.eclipse.ecf.ui,org.eclipse.ecf.provider.comm.tcp,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.remoteservice.util.tracker,org.eclipse.ecf.presence.bot.impl,org.eclipse.ecf.presence.ui,org.eclipse.ecf.storage,org.eclipse.ecf.osgi.services.discovery,org.eclipse.ecf.filetransfer.events.socketfactory,org.eclipse.ecf.presence.ui.chatroom,org.eclipse.ecf.server.generic,org.eclipse.ecf.provider.xmpp.identity,org.eclipse.ecf.docshare.menu,org.eclipse.ecf.datashare.events,org.eclipse.ecf.example.clients.applications,org.eclipse.ecf.provider.jmdns.identity,org.eclipse.ecf.telephony.call.service,org.eclipse.ecf.filetransfer.identity,org.eclipse.ecf.telephony.call,org.eclipse.ecf.server.generic.app,org.eclipse.ecf.datashare,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.discovery.ui.model.provider,org.eclipse.ecf.provider.r_osgi.identity,org.eclipse.ecf.remoteservice.util,org.eclipse.ecf.sync,org.eclipse.ecf.discovery.ui.model.impl,org.eclipse.ecf.presence.collab.ui.console,org.eclipse.ecf.provider.jmdns.container,org.eclipse.ecf.datashare.mergeable,org.eclipse.ecf.discovery.identity,org.eclipse.ecf.provider.util,org.eclipse.ecf.presence.ui.roster,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.filetransfer.service,org.eclipse.ecf.discovery.ui.model.util,org.eclipse.ecf.presence.service,org.eclipse.ecf.core.util,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.provider.filetransfer.util,org.eclipse.ecf.core.jobs,org.eclipse.ecf.remoteservice.events,org.eclipse.ecf.core.status" source="1.4" sourcefiles="../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryPropertyTesterUtil.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRunnable.java,src/org/eclipse/ecf/core/ContainerTypeDescription.java,src/org/eclipse/ecf/core/IContainerManager.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceProperties.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMMessage.java,src/org/eclipse/ecf/core/IContainerFactory.java,../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IFQID.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFile.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceProperties.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferPausable.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClientManager.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/InvalidFileRangeSpecificationException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/UserCancelledException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/BrowseFileTransferException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransferRequestListener.java,src/org/eclipse/ecf/core/BaseContainer.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java,src/org/eclipse/ecf/core/AbstractContainerAdapterFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransfer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/SendFileTransferException.java,src/org/eclipse/ecf/core/ContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferContainerAdapter.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java,src/org/eclipse/ecf/core/ContainerCreateException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRateControl.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemRequest.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresence.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/RemoteFileSystemException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/AbstractPresenceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileAttributes.java,src/org/eclipse/ecf/core/IContainerManagerListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceInfo.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IOutgoingFileTransfer.java,src/org/eclipse/ecf/core/AbstractContainer.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceInfo.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileRangeSpecification.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageEvent.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferInfo.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/Presence.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransfer.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessage.java,src/org/eclipse/ecf/core/IReliableContainer.java,src/org/eclipse/ecf/core/IContainerListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferInfo.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClient.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IContainerServiceInfoAdapter.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceHost.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemBrowserContainerAdapter.java,src/org/eclipse/ecf/core/ContainerAuthenticationException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/DiscoveryContainerConfig.java,src/org/eclipse/ecf/core/IContainer.java,src/org/eclipse/ecf/core/ContainerConnectException.java" sourcepath="../org.eclipse.ecf.provider.jslp/src;../org.eclipse.ecf.provider.ui/src;../org.eclipse.ecf.provider/src;../org.eclipse.ecf.identity/src;../org.eclipse.ecf.datashare/src;../org.eclipse.ecf.ui/src;../org.eclipse.ecf.presence.bot/src;src;../org.eclipse.ecf.osgi.services.discovery/src;../org.eclipse.ecf.presence.collab.ui/src;../org.eclipse.ecf.storage/src;../org.eclipse.ecf.examples.provider.trivial/src;../org.eclipse.ecf.discovery.ui.edit/src;../org.eclipse.ecf.telephony.call/src;../org.eclipse.ecf.presence.ui/src;../org.eclipse.ecf.sharedobject/src;../org.eclipse.ecf.sync/src;../org.eclipse.ecf.provider.discovery/src;../org.eclipse.ecf.remoteservice.ui/src;../org.eclipse.ecf.server/src;../org.eclipse.ecf.docshare/src;../org.eclipse.ecf.provider.datashare/src;../org.eclipse.ecf.provider.r_osgi/src;../org.eclipse.ecf.discovery/src;../org.eclipse.ecf.provider.remoteservice/src;../org.eclipse.ecf.protocol.bittorrent/src;../org.eclipse.ecf.provider.jmdns/jmdns;../org.eclipse.ecf.osgi.services.distribution/src;../org.eclipse.ecf.provider.filetransfer/src;../org.eclipse.ecf.presence/src;../org.eclipse.ecf.filetransfer.ui/src;../org.eclipse.ecf.telephony.call.ui/src;../org.eclipse.ecf.provider.xmpp/src;../org.eclipse.ecf.example.clients/src;../org.eclipse.ecf.discovery.ui.model/src;../org.eclipse.ecf.protocol.msn/src;../org.eclipse.ecf.server.generic/src;../org.eclipse.ecf.provider.filetransfer.httpclient/src;../org.eclipse.ecf.filetransfer/src;../org.eclipse.ecf.discovery.ui/src;../org.eclipse.ecf.remoteservice/src;../org.eclipse.ecf.provider.jmdns/src" splitindex="true" use="true" version="true"/>
+        <javadoc access="protected" additionalparam="-J-Xmx256m  -tag model:a:Model -tag generated:a:Generated -tag noreference:tcmf:DoNotReference -tag ordered:a:Ordered -tag noimplement:a:NoImplement -tag noextend:a:NoExtend" author="false" classpath="../org.apache.log4j;../org.eclipse.ecf.remoteservice/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.views_3.5.0.I20090914-0830.jar;../org.eclipse.ecf.presence.ui/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.text_3.5.0.v20100513-0800.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.preferences_3.3.0.v20100503.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.app_1.3.0.v20100512.jar;C:\eclipse3.6rc1\eclipse\plugins\org.objectweb.asm_3.2.0.v200909071300.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.security_1.0.200.v20100503.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.jobs_3.5.0.v20100510.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.runtime_3.6.0.v20100505.jar;../org.eclipse.emf.ecore.change/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.commands_3.6.0.I20100512-1500.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.forms_3.5.0.v20100427.jar;../org.eclipse.ecf.provider.remoteservice/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.net_1.2.100.I20100511-0800.jar;../org.eclipse.ecf.presence/bin;../org.eclipse.ecf.provider.xmpp/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.swt_3.6.0.v3647a.jar;bin;../org.eclipse.ecf.provider.datashare/bin;../org.eclipse.ecf.discovery.ui.edit/bin;../org.jivesoftware.smack/bin;../org.eclipse.ecf.sync/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.editors_3.6.0.v20100513-0800.jar;../org.eclipse.ecf.provider.filetransfer/bin;../org.eclipse.ecf.identity/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.filebuffers_3.5.100.v20100513-0800.jar;../org.eclipse.emf.ecore/bin;../org.eclipse.ecf.ui/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.common_3.6.0.v20100503.jar;../org.jivesoftware.smack/jars/xpp.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.registry_3.5.0.v20100503.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.expressions_3.4.200.v20100505.jar;../org.eclipse.emf.edit/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.workbench.texteditor_3.6.0.v20100513-0800.jar;../org.eclipse.ecf.telephony.call/bin;C:\eclipse3.6rc1\eclipse\plugins\org.apache.commons.httpclient_3.1.0.v201005080502.jar;../org.eclipse.ecf.sharedobject/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.console_3.5.0.v20100503.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.equinox.concurrent_1.0.100.v20100503.jar;../org.apache.zookeeper/zookeeper-3.3.0.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100505\runtime_registry_compatibility.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.6.0.v3647a.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.jface_3.6.0.I20100512-1930.jar;../org.eclipse.emf.edit.ui/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.workbench_3.6.0.I20100512-1500.jar;../org.eclipse.ecf.filetransfer/bin;../org.eclipse.ecf.provider/bin;../ch.ethz.iks.slp/bin;../org.eclipse.ecf.discovery/bin;../org.eclipse.ecf.datashare/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.resources_3.6.0.V20100513-0800.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.core.filesystem_1.3.0.v20100505.jar;../ch.ethz.iks.r_osgi.remote/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.osgi.services_3.2.100.v20100503.jar;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui.ide_3.6.0.I20100513-0500.jar;../org.eclipse.emf.common.ui/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.osgi_3.6.0.v20100512.jar;../org.eclipse.ecf.discovery.ui.model/bin;../org.eclipse.emf.common/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.jface.text_3.6.0.v20100513-0800.jar;../org.eclipse.ecf.discovery.ui/bin;C:\eclipse3.6rc1\eclipse\plugins\org.eclipse.ui_3.6.0.I20100513-0800.jar;../org.eclipse.ecf.osgi.services.discovery/bin" destdir="../ecf documentation/org.eclipse.ecf.docs/api" doctitle="Eclipse Communication Framework (ECF) 3.3.0" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.eclipse.ecf.ui.hyperlink,org.eclipse.ecf.core.sharedobject.util,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.core.sharedobject.provider,org.eclipse.ecf.example.clients,org.eclipse.ecf.presence.im,org.eclipse.ecf.ui.actions,org.eclipse.ecf.telephony.call.ui.actions,org.eclipse.ecf.core.provider,org.eclipse.ecf.discovery.service,org.eclipse.ecf.presence.bot,org.eclipse.ecf.provider.zookeeper,org.eclipse.ecf.provider.remoteservice,org.eclipse.ecf.core.sharedobject.events,org.eclipse.ecf.provider.jslp.identity,org.eclipse.ecf.remoteservice.soap.identity,org.eclipse.ecf.telephony.call.events,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.core.identity,org.eclipse.ecf.provider.remoteservice.generic,org.eclipse.ecf.remoteservice.soap.client,org.eclipse.ecf.docshare,org.eclipse.ecf.presence.collab.ui.url,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.internal.docshare,org.eclipse.ecf.presence.roster,org.eclipse.ecf.core.events,org.eclipse.ecf.provider.zookeeper.node.internal,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.provider.filetransfer.events.socket,org.eclipse.ecf.provider.generic.gmm,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.ecf.presence.collab.ui.screencapture,org.eclipse.ecf.provider.zookeeper.core,org.eclipse.ecf.provider.filetransfer.outgoing,org.eclipse.ecf.filetransfer.events,org.eclipse.ecf.datashare.service,org.eclipse.ecf.filetransfer.ui.actions,org.eclipse.ecf.core.sharedobject,org.eclipse.ecf.filetransfer.events.socket,org.eclipse.ecf.sync.doc,org.eclipse.ecf.ui.util,org.eclipse.ecf.core.sharedobject.security,org.eclipse.ecf.provider.zookeeper.core.internal,org.eclipse.ecf.remoteservice.client,org.eclipse.ecf.provider.filetransfer.retrieve,org.eclipse.ecf.core.user,org.eclipse.ecf.presence.chatroom,org.eclipse.ecf.provider.filetransfer.identity,org.eclipse.ecf.remoteservices.ui,org.eclipse.ecf.provider.generic,org.eclipse.ecf.presence.ui.dnd,org.eclipse.ecf.presence.bot.application,org.eclipse.ecf.ui.screencapture,org.eclipse.ecf.provider.comm,org.eclipse.ecf.presence.search.message,org.eclipse.ecf.provider.jslp.container,org.eclipse.ecf.provider.ui.wizards,org.eclipse.ecf.ui.dialogs,org.eclipse.ecf.ui.wizards,org.eclipse.ecf.presence.history,org.eclipse.ecf.core.start,org.eclipse.ecf.presence.collab.ui.view,org.eclipse.ecf.osgi.services.distribution,org.eclipse.ecf.docshare.messages,org.eclipse.ecf.provider.filetransfer.browse,org.eclipse.ecf.provider.localdiscovery,org.eclipse.ecf.remoteservice.rest.util,org.eclipse.ecf.core.security,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.discovery.ui.model.resource,org.eclipse.ecf.remoteservice.rest.client,org.eclipse.ecf.presence.ui.menu,org.eclipse.ecf.protocol.msn.events,org.eclipse.ecf.presence.search,org.eclipse.ecf.provider.zookeeper.util,org.eclipse.ecf.ui,org.eclipse.ecf.provider.comm.tcp,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.remoteservice.util.tracker,org.eclipse.ecf.presence.bot.impl,org.eclipse.ecf.presence.ui,org.eclipse.ecf.storage,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.filetransfer.events.socketfactory,org.eclipse.ecf.presence.ui.chatroom,org.eclipse.ecf.server.generic,org.eclipse.ecf.provider.xmpp.identity,org.eclipse.ecf.docshare.menu,org.eclipse.ecf.datashare.events,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.example.clients.applications,org.eclipse.ecf.examples.remoteservices.hello.impl,org.eclipse.ecf.provider.jmdns.identity,org.eclipse.ecf.telephony.call.service,org.eclipse.ecf.filetransfer.identity,org.eclipse.ecf.telephony.call,org.eclipse.ecf.server.generic.app,org.eclipse.ecf.datashare,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.discovery.ui.model.provider,org.eclipse.ecf.provider.r_osgi.identity,org.eclipse.ecf.remoteservice.util,org.eclipse.ecf.sync,org.eclipse.ecf.discovery.ui.model.impl,org.eclipse.ecf.presence.collab.ui.console,org.eclipse.ecf.provider.jmdns.container,org.eclipse.ecf.datashare.mergeable,org.eclipse.ecf.provider.util,org.eclipse.ecf.discovery.identity,org.eclipse.ecf.presence.ui.roster,org.eclipse.ecf.remoteservice.rest.identity,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.filetransfer.service,org.eclipse.ecf.discovery.ui.model.util,org.eclipse.ecf.presence.service,org.eclipse.ecf.core.util,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.provider.filetransfer.util,org.eclipse.ecf.core.jobs,org.eclipse.ecf.osgi.services.discovery.local,org.eclipse.ecf.remoteservice.events,org.eclipse.ecf.core.status" source="1.5" sourcefiles="../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryPropertyTesterUtil.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceRegistration.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceHelper.java,src/org/eclipse/ecf/core/ContainerTypeDescription.java,src/org/eclipse/ecf/core/IContainerManager.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceProperties.java,src/org/eclipse/ecf/core/IContainerFactory.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IFQID.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFile.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceProperties.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferPausable.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClientManager.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceReference.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/UserCancelledException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/BrowseFileTransferException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransferRequestListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IAsyncRemoteServiceProxy.java,src/org/eclipse/ecf/core/AbstractContainerAdapterFactory.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/SharedObjectDatashareContainerAdapter.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteCallListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceProxy.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransfer.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java,src/org/eclipse/ecf/core/ContainerCreateException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteFilter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRateControl.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AsyncService.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainer.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceID.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileAttributes.java,src/org/eclipse/ecf/core/IContainerManagerListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceInfo.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileRangeSpecification.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageEvent.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferInfo.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/Presence.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AsyncMethod.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java,src/org/eclipse/ecf/core/IReliableContainer.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/CallbackRemoteCallListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceListener.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java,src/org/eclipse/ecf/core/ContainerAuthenticationException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/DiscoveryContainerConfig.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCallListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRunnable.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IAsyncCallback.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMMessage.java,../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCall.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/InvalidFileRangeSpecificationException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferListener.java,src/org/eclipse/ecf/core/BaseContainer.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapterFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/SendFileTransferException.java,src/org/eclipse/ecf/core/ContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferContainerAdapter.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceID.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerConfig.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemRequest.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresence.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/RemoteFileSystemException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/AbstractPresenceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IOutgoingFileTransfer.java,src/org/eclipse/ecf/core/AbstractContainer.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceInfo.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransfer.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessage.java,src/org/eclipse/ecf/core/IContainerListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IContainerServiceInfoAdapter.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClient.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceHost.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemBrowserContainerAdapter.java,src/org/eclipse/ecf/core/IContainer.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java,src/org/eclipse/ecf/core/ContainerConnectException.java" sourcepath="../org.eclipse.ecf.provider.jslp/src;../org.eclipse.ecf.provider.ui/src;../org.eclipse.ecf.identity/src;../org.eclipse.ecf.ui/src;../org.eclipse.ecf.presence.collab.ui/src;../org.eclipse.ecf.osgi.services.discovery/src;../org.eclipse.ecf.examples.provider.trivial/src;../org.eclipse.ecf.storage/src;../org.eclipse.ecf.remoteservice.ui/src;../org.eclipse.ecf.server/src;../org.eclipse.ecf.osgi.services.discovery.local/src;../org.eclipse.ecf.provider.r_osgi/src;../org.eclipse.ecf.provider.zookeeper/src;../org.eclipse.ecf.remoteservice.eventadmin/src;../org.eclipse.ecf.protocol.bittorrent/src;../org.eclipse.ecf.provider.datashare.nio/src;../org.eclipse.ecf.osgi.services.distribution/src;../org.eclipse.ecf.provider.filetransfer/src;../org.eclipse.ecf.filetransfer.ui/src;../org.eclipse.ecf.remoteservice.rest/src;../org.eclipse.ecf.protocol.msn/src;../org.eclipse.ecf.provider.filetransfer.httpclient/src;../org.eclipse.ecf.discovery.ui/src;../org.eclipse.ecf.remoteservice/src;../org.eclipse.ecf.provider.localdiscovery/src;../org.eclipse.ecf.provider/src;../org.eclipse.ecf.datashare/src;../org.eclipse.ecf.presence.bot/src;src;../org.eclipse.ecf.discovery.ui.edit/src;../org.eclipse.ecf.presence.ui/src;../org.eclipse.ecf.telephony.call/src;../org.eclipse.ecf.sharedobject/src;../org.eclipse.ecf.sync/src;../org.eclipse.ecf.provider.discovery/src;../org.eclipse.ecf.provider.datashare/src;../org.eclipse.ecf.docshare/src;../org.eclipse.ecf.remoteservice.soap/src;../org.eclipse.ecf.discovery/src;../org.eclipse.ecf.provider.remoteservice/src;../org.eclipse.ecf.provider.jmdns/jmdns;../org.eclipse.ecf.presence/src;../org.eclipse.ecf.telephony.call.ui/src;../org.eclipse.ecf.examples.remoteservices.hello/src;../org.eclipse.ecf.provider.xmpp/src;../org.eclipse.ecf.discovery.ui.model/src;../org.eclipse.ecf.example.clients/src;../org.eclipse.ecf.server.generic/src;../org.eclipse.ecf.filetransfer/src;../org.eclipse.ecf.provider.jmdns/src" splitindex="true" use="true" version="true"/>
     </target>
 </project>
diff --git a/eclipse/plugins/org.eclipse.ecf/plugin.properties b/eclipse/plugins/org.eclipse.ecf/plugin.properties
index aba5caa..b019fea 100644
--- a/eclipse/plugins/org.eclipse.ecf/plugin.properties
+++ b/eclipse/plugins/org.eclipse.ecf/plugin.properties
@@ -1,10 +1,10 @@
 ############################################################################
-# Copyright (c) 2007 Composent Inc., IBM Corp. and others.
+# Copyright (c) 2010 Composent Inc., IBM and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=Eclipse Communication Framework (ECF)
+plugin.name=ECF Core API
 plugin.provider=Eclipse.org - ECF
diff --git a/eclipse/plugins/org.eclipse.ecf/plugin.xml b/eclipse/plugins/org.eclipse.ecf/plugin.xml
index 33208f5..ec04495 100644
--- a/eclipse/plugins/org.eclipse.ecf/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ecf/plugin.xml
@@ -3,6 +3,7 @@
 <plugin>
    <extension-point id="containerFactory" name="ECF Container Factory" schema="schema/containerFactory.exsd"/>
    <extension-point id="start" name="ECF start" schema="schema/start.exsd"/>
+   <extension-point id="container" name="ECF container" schema="schema/container.exsd"/>
    <extension
          point="org.eclipse.ecf.containerFactory">
       <containerFactory
diff --git a/eclipse/plugins/org.eclipse.ecf/schema/container.exsd b/eclipse/plugins/org.eclipse.ecf/schema/container.exsd
new file mode 100644
index 0000000..c424608
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf/schema/container.exsd
@@ -0,0 +1,174 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.ecf" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.ecf" id="container" name="container"/>
+      </appInfo>
+      <documentation>
+         This extension point allows extensions to specify the creation of a container instance of a given type.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="container" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="container">
+      <annotation>
+         <documentation>
+            The container extension point.  Extensions may define new containers created upon ECF core initialization.
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="0" maxOccurs="1">
+            <element ref="parameter" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="factoryName" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The required containerFactoryName (e.g. ecf.generic.client or ecf.r_osgi.peer) that defines the type of container to create.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="containerId" type="string">
+            <annotation>
+               <documentation>
+                  Optional containerId that defines the id for the new container instance.
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="parameter">
+      <annotation>
+         <documentation>
+            Parameter for container instance creation.  The name value pairs defined by the parameter element name and value attributes are added to a Map that is then passed to the container factory instance creation.
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="name" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The name for the container parameter.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="value" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The value for the container parameter.
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         ECF core bundle v 3.1.0.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         &lt;pre&gt;
+   &lt;extension
+         point=&quot;org.eclipse.ecf.container&quot;&gt;
+      &lt;container
+            containerId=&quot;foo1&quot;
+            factoryName=&quot;ecf.generic.client&quot;&gt;
+         &lt;parameter
+               name=&quot;name1&quot;
+               value=&quot;value1&quot;&gt;
+         &lt;/parameter&gt;
+         &lt;parameter
+               name=&quot;name2&quot;
+               value=&quot;value2&quot;&gt;
+         &lt;/parameter&gt;
+      &lt;/container&gt;
+      &lt;container
+            containerId=&quot;adfasdf&quot;
+            factoryName=&quot;bogus.factory.name&quot;&gt;
+      &lt;/container&gt;
+      &lt;container
+            containerId=&quot;ecftcp://localhost:32111/server&quot;
+            factoryName=&quot;ecf.generic.server&quot;&gt;
+      &lt;/container&gt;
+      &lt;container
+            factoryName=&quot;ecf.generic.client&quot;&gt;
+      &lt;/container&gt;
+   &lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiinfo"/>
+      </appInfo>
+      <documentation>
+         No API available.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         The ECF core v3.1.0 bundle supplies the implementation of this extension point.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2009 Composent, Inc. and others.
+All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html.  Contributors:  Composent, Inc. - initial API and implementation.
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/eclipse/plugins/org.eclipse.ecf/schema/containerFactory.exsd b/eclipse/plugins/org.eclipse.ecf/schema/containerFactory.exsd
index 17c88c5..95a1091 100644
--- a/eclipse/plugins/org.eclipse.ecf/schema/containerFactory.exsd
+++ b/eclipse/plugins/org.eclipse.ecf/schema/containerFactory.exsd
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.ecf">
+<schema targetNamespace="org.eclipse.ecf" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
       <appInfo>
          <meta.schema plugin="org.eclipse.ecf" id="containerFactory" name="ECF Container Factory"/>
@@ -12,6 +12,11 @@
    </annotation>
 
    <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
       <complexType>
          <sequence>
             <element ref="containerFactory" minOccurs="1" maxOccurs="unbounded"/>
@@ -43,7 +48,7 @@
    <element name="containerFactory">
       <annotation>
          <documentation>
-            The container factory extension point.  Can optionally contain a list of &apos;defaultargument&apos; elements that describe the arguments (and provide default values) to be passed to provider implementation
+            The container factory extension point.  Can optionally contain a list of &apos;defaultargument&apos; elements that describe the arguments to be passed to provider implementation
          </documentation>
       </annotation>
       <complexType>
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
index 7601da0..07d931e 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java
@@ -69,7 +69,10 @@ public abstract class AbstractContainer implements IContainer {
 		if (serviceType.isInstance(this)) {
 			return this;
 		}
-		IAdapterManager adapterManager = ECFPlugin.getDefault().getAdapterManager();
+		ECFPlugin plugin = ECFPlugin.getDefault();
+		if (plugin == null)
+			return null;
+		IAdapterManager adapterManager = plugin.getAdapterManager();
 		return (adapterManager == null) ? null : adapterManager.loadAdapter(this, serviceType.getName());
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java
index b742b25..28ed6f6 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java
@@ -35,6 +35,7 @@ import org.eclipse.ecf.internal.core.*;
  * 
  * @see IContainer
  * @see IContainerFactory
+ * @since 3.1
  */
 public class ContainerFactory implements IContainerFactory, IContainerManager {
 
@@ -234,7 +235,7 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 	 */
 	public IContainer createContainer(ID containerID) throws ContainerCreateException {
 		if (containerID == null)
-			throw new ContainerCreateException(Messages.ContainerFactory_EXCEPTION_CONTAINERID_NOT_NULL);
+			return createContainer();
 		return createContainer(BASE_CONTAINER_NAME, new Object[] {containerID});
 	}
 
@@ -311,7 +312,7 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID, Object[] parameters) throws ContainerCreateException {
 		if (containerID == null)
-			throw new ContainerCreateException(Messages.ContainerFactory_EXCEPTION_CONTAINERID_NOT_NULL);
+			return createContainer(containerTypeDescription, parameters);
 		Object[] params = (parameters == null || parameters.length == 0) ? new Object[1] : new Object[parameters.length + 1];
 		params[0] = containerID;
 		if (parameters != null && parameters.length != 0)
@@ -324,7 +325,7 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 	 */
 	public IContainer createContainer(String containerTypeDescriptionName, ID containerID, Object[] parameters) throws ContainerCreateException {
 		if (containerID == null)
-			throw new ContainerCreateException(Messages.ContainerFactory_EXCEPTION_CONTAINERID_NOT_NULL);
+			return createContainer(containerTypeDescriptionName, parameters);
 		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), containerID, parameters);
 	}
 
@@ -333,7 +334,7 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID) throws ContainerCreateException {
 		if (containerID == null)
-			throw new ContainerCreateException(Messages.ContainerFactory_EXCEPTION_CONTAINERID_NOT_NULL);
+			return createContainer(containerTypeDescription);
 		return createContainer(containerTypeDescription, new Object[] {containerID});
 	}
 
@@ -344,6 +345,40 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), new Object[] {containerID});
 	}
 
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId) throws ContainerCreateException {
+		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), containerId);
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId, Object[] parameters) throws ContainerCreateException {
+		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), containerId, parameters);
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId) throws ContainerCreateException {
+		return createContainer(containerTypeDescription, containerId, (Object[]) null);
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId, Object[] parameters) throws ContainerCreateException {
+		if (containerId == null)
+			return createContainer(containerTypeDescription, parameters);
+		Object[] params = (parameters == null || parameters.length == 0) ? new Object[1] : new Object[parameters.length + 1];
+		params[0] = containerId;
+		if (parameters != null && parameters.length != 0)
+			System.arraycopy(parameters, 0, params, 1, parameters.length);
+		return createContainer(containerTypeDescription, params);
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -503,4 +538,59 @@ public class ContainerFactory implements IContainerFactory, IContainerManager {
 			}
 		}
 	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID, Map parameters) throws ContainerCreateException {
+		if (containerID == null)
+			return createContainer(containerTypeDescription, parameters);
+		if (parameters == null)
+			return createContainer(containerTypeDescription, containerID);
+		return createContainer(containerTypeDescription, new Object[] {containerID, parameters});
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId, Map parameters) throws ContainerCreateException {
+		if (containerId == null)
+			return createContainer(containerTypeDescription, parameters);
+		if (parameters == null)
+			return createContainer(containerTypeDescription, containerId);
+		return createContainer(containerTypeDescription, new Object[] {containerId, parameters});
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, ID containerID, Map parameters) throws ContainerCreateException {
+		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), containerID, parameters);
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId, Map parameters) throws ContainerCreateException {
+		return createContainer(getDescriptionByNameWithException(containerTypeDescriptionName), containerId, parameters);
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, Map parameters) throws ContainerCreateException {
+		if (parameters == null)
+			return createContainer(containerTypeDescription);
+		return createContainer(containerTypeDescription, new Object[] {parameters});
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, Map parameters) throws ContainerCreateException {
+		if (parameters == null)
+			return createContainer(containerTypeDescriptionName);
+		return createContainer(containerTypeDescriptionName, new Object[] {parameters});
+	}
+
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
index cd2b09f..c8cd256 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
@@ -8,10 +8,10 @@
  ******************************************************************************/
 package org.eclipse.ecf.core;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.provider.IContainerInstantiator;
+import org.eclipse.ecf.core.provider.IRemoteServiceContainerInstantiator;
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.internal.core.ECFDebugOptions;
 import org.eclipse.ecf.internal.core.ECFPlugin;
@@ -217,16 +217,62 @@ public class ContainerTypeDescription {
 	public String[] getSupportedIntents() {
 		String method = "getSupportedIntents"; //$NON-NLS-1$
 		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, this.getClass(), method);
-		String[] result = new String[0];
 		try {
-			String[] r = getInstantiator().getSupportedIntents(this);
-			if (r != null)
-				result = r;
+			IContainerInstantiator ci = getInstantiator();
+			return (ci instanceof IRemoteServiceContainerInstantiator) ? ((IRemoteServiceContainerInstantiator) ci).getSupportedIntents(this) : null;
 		} catch (Exception e) {
 			traceAndLogException(IStatus.ERROR, method, e);
+			return null;
+		}
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public String[] getSupportedConfigs() {
+		String method = "getSupportedConfigs"; //$NON-NLS-1$
+		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, this.getClass(), method);
+		try {
+			IContainerInstantiator ci = getInstantiator();
+			return (ci instanceof IRemoteServiceContainerInstantiator) ? ((IRemoteServiceContainerInstantiator) ci).getSupportedConfigs(this) : null;
+		} catch (Exception e) {
+			traceAndLogException(IStatus.ERROR, method, e);
+			return null;
+		}
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public String[] getImportedConfigs(String[] exporterSupportedConfigs) {
+		String method = "getImportedConfigs"; //$NON-NLS-1$
+		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, this.getClass(), method);
+		if (exporterSupportedConfigs == null)
+			return null;
+		try {
+			IContainerInstantiator ci = getInstantiator();
+			return (ci instanceof IRemoteServiceContainerInstantiator) ? ((IRemoteServiceContainerInstantiator) ci).getImportedConfigs(this, exporterSupportedConfigs) : null;
+		} catch (Exception e) {
+			traceAndLogException(IStatus.ERROR, method, e);
+			return null;
+		}
+	}
+
+	/**
+	 * @since 3.1
+	 */
+	public Dictionary getPropertiesForImportedConfigs(String[] importedConfigs, Dictionary exportedProperties) {
+		String method = "getPropertiesForImportedConfigs"; //$NON-NLS-1$
+		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, this.getClass(), method);
+		if (importedConfigs == null)
+			return null;
+		try {
+			IContainerInstantiator ci = getInstantiator();
+			return (ci instanceof IRemoteServiceContainerInstantiator) ? ((IRemoteServiceContainerInstantiator) ci).getPropertiesForImportedConfigs(this, importedConfigs, exportedProperties) : null;
+		} catch (Exception e) {
+			traceAndLogException(IStatus.ERROR, method, e);
+			return null;
 		}
-		Trace.exiting(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_EXITING, this.getClass(), method, result);
-		return result;
 	}
 
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java
index b8fe32c..8787f12 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java
@@ -9,6 +9,7 @@
 package org.eclipse.ecf.core;
 
 import java.util.List;
+import java.util.Map;
 import org.eclipse.ecf.core.identity.ID;
 
 /**
@@ -78,12 +79,12 @@ public interface IContainerFactory {
 	 * Make a base IContainer instance.
 	 * 
 	 * @return IContainer instance.  A non-<code>null</code> instance will be returned.
-	 * @throws ContainerCreateException if some problem creating a base IContainer instance.
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer() throws ContainerCreateException;
 
 	/**
-	 * Make a base IContainer instance.
+	 * Create a new container.
 	 * 
 	 * @param containerID the container's new ID.  Must not be <code>null</code>.
 	 * @return IContainer instance.  A non-<code>null</code>. instance will be returned.
@@ -92,35 +93,17 @@ public interface IContainerFactory {
 	public IContainer createContainer(ID containerID) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescription
-	 *            the ContainerTypeDescription name to use. Must not be <code>null</code>.
+	 *            the ContainerTypeDescription to use. Must not be <code>null</code>.
 	 * @return a valid instance of IContainer. Will not be <code>null</code>.
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription name, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescriptionName
 	 *            the ContainerTypeDescription name to lookup. Must not be <code>null</code>.
@@ -130,39 +113,20 @@ public interface IContainerFactory {
 	public IContainer createContainer(String containerTypeDescriptionName) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription object, a
-	 * String [] of argument types, and an Object [] of parameters, this method
-	 * will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescription
 	 *            the ContainerTypeDescription to use to create the instance. Must not be <code>null</code>.
 	 * @param parameters
 	 *            an Object [] of parameters passed to the createInstance method
-	 *            of the IContainerInstantiator
-	 * @return a valid instance of IContainer. A non-<code>null</code>. instance will be returned.
-	 * @throws ContainerCreateException
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer. A non-<code>null</code> instance will be returned.
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, Object[] parameters) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription name, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescriptionName
 	 *            the ContainerTypeDescription name to lookup. Must not be <code>null</code>.
@@ -170,95 +134,200 @@ public interface IContainerFactory {
 	 *            the Object [] of parameters passed to the
 	 *            IContainerInstantiator.createInstance method.  May be <code>null</code>.
 	 * @return a valid instance of IContainer. Will not be <code>null</code>.
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(String containerTypeDescriptionName, Object[] parameters) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription object, a
-	 * String [] of argument types, and an Object [] of parameters, this method
-	 * will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescriptionName
+	 *            the ContainerTypeDescription name to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescriptionName
+	 *            the ContainerTypeDescription name to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
+	 * @param parameters
+	 *            an Object [] of parameters passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId, Object[] parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescription
 	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
-	 * @param containerID the container's new ID.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescription
+	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
 	 * @param parameters
 	 *            an Object [] of parameters passed to the createInstance method
-	 *            of the IContainerInstantiator
+	 *            of the IContainerInstantiator. May be <code>null</code>.
 	 * @return a valid instance of IContainer
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId, Object[] parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescription
+	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerID the container's new ID.  May be <code>null</code>.
+	 * @param parameters
+	 *            an Object [] of parameters passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID, Object[] parameters) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription name, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
 	 * @param containerTypeDescriptionName
 	 *            the ContainerTypeDescription name to lookup. Must not be <code>null</code>.
-	 * @param containerID the new container's id.  Must not be <code>null</code>.
+	 * @param containerID the new container's id.  May be <code>null</code>.
 	 * @param parameters
 	 *            the Object [] of parameters passed to the
 	 *            IContainerInstantiator.createInstance method.  May be <code>null</code>.
 	 * @return a valid instance of IContainer. Will not be <code>null</code>.
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(String containerTypeDescriptionName, ID containerID, Object[] parameters) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
-	 * @param containerID the new container's id.  Must not be <code>null</code>.
 	 * @param containerTypeDescription
 	 *            the ContainerTypeDescription to lookup.  Must not be <code>null</code>.
+	 * @param containerID the new container's id.  May be <code>null</code>.
 	 * @return a valid instance of IContainer.  Will not be <code>null</code>.
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID) throws ContainerCreateException;
 
 	/**
-	 * Make IContainer instance. Given a ContainerTypeDescription name, this
-	 * method will
-	 * <p>
-	 * <ul>
-	 * <li>lookup the known ContainerDescriptions to find one of matching name</li>
-	 * <li>if found, will retrieve or create an IContainerInstantiator for that
-	 * description</li>
-	 * <li>Call the IContainerInstantiator.createInstance method to return an
-	 * instance of IContainer</li>
-	 * </ul>
+	 * Create a new container. 
 	 * 
-	 * @param containerID the new container's id.  Must not be <code>null</code>.
 	 * @param containerTypeDescriptionName
 	 *            the ContainerTypeDescription name to lookup.  Must not be <code>null</code>.
+	 * @param containerID the new container's id.  May be <code>null</code>.
 	 * @return a valid instance of IContainer.  Will not be <code>null</code>.
-	 * @throws ContainerCreateException
+	 * @throws ContainerCreateException if some problem creating the instance.
 	 */
 	public IContainer createContainer(String containerTypeDescriptionName, ID containerID) throws ContainerCreateException;
 
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescription
+	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerID the container's new ID.  Must not be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, ID containerID, Map parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescription
+	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, String containerId, Map parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescriptionName
+	 *            the ContainerTypeDescription name to lookup.  Must not be <code>null</code>.
+	 * @param containerID the container's new ID.  May be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, ID containerID, Map parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescriptionName
+	 *            the ContainerTypeDescription name to lookup.  Must not be <code>null</code>.
+	 * @param containerId the container's new ID.  May be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, String containerId, Map parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescription
+	 *            the ContainerTypeDescription to use to create the instance.  Must not be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(ContainerTypeDescription containerTypeDescription, Map parameters) throws ContainerCreateException;
+
+	/**
+	 * Create a new container. 
+	 * 
+	 * @param containerTypeDescriptionName
+	 *            the ContainerTypeDescription name to lookup.  Must not be <code>null</code>.
+	 * @param parameters
+	 *            a Map of parameters (name/value pairs) passed to the createInstance method
+	 *            of the IContainerInstantiator. May be <code>null</code>.
+	 * @return a valid instance of IContainer
+	 * @throws ContainerCreateException if some problem creating the instance.
+	 * @since 3.1
+	 */
+	public IContainer createContainer(String containerTypeDescriptionName, Map parameters) throws ContainerCreateException;
+
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
index 41c7a48..0919097 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
@@ -18,7 +18,8 @@ import org.eclipse.ecf.internal.core.ECFPlugin;
 import org.eclipse.ecf.internal.core.Messages;
 
 /**
- *
+ *  Default implemenation of {@link IContainerInstantiator}.  ECF provider implementers
+ *  may subclass as desired.
  */
 public class BaseContainerInstantiator implements IContainerInstantiator {
 
@@ -57,28 +58,20 @@ public class BaseContainerInstantiator implements IContainerInstantiator {
 		return (String[]) result.toArray(new String[] {});
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.core.provider.IContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[])
-	 */
 	public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException {
 		throw new ContainerCreateException(Messages.BaseContainerInstantiator_EXCEPTION_CREATEINSTANCE_NOT_SUPPORTED);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.core.provider.IContainerInstantiator#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)
-	 */
 	public String[] getSupportedAdapterTypes(ContainerTypeDescription description) {
 		return NO_ADAPTERS_ARRAY;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.core.provider.IContainerInstantiator#getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)
-	 */
 	public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) {
 		return EMPTY_CLASS_ARRAY;
 	}
 
 	public String[] getSupportedIntents(ContainerTypeDescription description) {
-		return EMPTY_STRING_ARRAY;
+		return null;
 	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseRemoteServiceContainerInstantiator.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseRemoteServiceContainerInstantiator.java
new file mode 100644
index 0000000..3602254
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseRemoteServiceContainerInstantiator.java
@@ -0,0 +1,36 @@
+/****************************************************************************
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.core.provider;
+
+import java.util.Dictionary;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+
+/**
+ *  Default implementation of {@link IRemoteServiceContainerInstantiator}.  ECF provider implementers
+ *  may subclass as desired.
+ * @since 3.1
+ */
+public class BaseRemoteServiceContainerInstantiator extends BaseContainerInstantiator implements IRemoteServiceContainerInstantiator {
+
+	public String[] getSupportedConfigs(ContainerTypeDescription description) {
+		return new String[] {description.getName()};
+	}
+
+	public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) {
+		return new String[] {description.getName()};
+	}
+
+	public Dictionary getPropertiesForImportedConfigs(ContainerTypeDescription description, String[] importedConfigTypes, Dictionary exportedProperties) {
+		return null;
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IContainerInstantiator.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IContainerInstantiator.java
index 9987b40..bd2ca12 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IContainerInstantiator.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IContainerInstantiator.java
@@ -11,8 +11,7 @@ package org.eclipse.ecf.core.provider;
 import org.eclipse.ecf.core.*;
 
 /**
- * Interface that must be implemented by extensions of the containerFactory
- * extension point
+ * Interface that must be implemented by ECF provider implementations.
  * 
  */
 public interface IContainerInstantiator {
@@ -120,13 +119,6 @@ public interface IContainerInstantiator {
 	 */
 	public Class[][] getSupportedParameterTypes(ContainerTypeDescription description);
 
-	/**
-	 * Get supported intents for the container instantiated by this instantiator.
-	 * 
-	 * @param description the ContainerTypeDescription to return the intents for
-	 * @return String[] supported intents.  <code>null</code> may be returned by
-	 *         the provider if no intents are supported for this description.	 
-	 */
 	public String[] getSupportedIntents(ContainerTypeDescription description);
 
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IRemoteServiceContainerInstantiator.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IRemoteServiceContainerInstantiator.java
new file mode 100644
index 0000000..7588fd4
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/IRemoteServiceContainerInstantiator.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+* Copyright (c) 2009 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.core.provider;
+
+import java.util.Dictionary;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+
+/**
+ * Interface that must be implemented by ECF remote service provider implementations.
+ * @since 3.1
+ * 
+ */
+public interface IRemoteServiceContainerInstantiator {
+
+	// Remote Service Exporter
+	/**
+	 * Get supported configs for the given ContainerTypeDescription.  This method
+	 * will be called to determine what the OSGi remote service supported config types are for the given description during
+	 * the search for the service exporter provider/containers upon remote service registration.
+	 * 
+	 * @param description the ContainerTypeDescription to return the supported configs for.  
+	 * Will not be <code>null</code>.
+	 * @return String[] the supported config types.  <code>null</code> may be returned if the 
+	 * given description does not support any config types.
+	 */
+	public String[] getSupportedConfigs(ContainerTypeDescription description);
+
+	/**
+	 * Get supported intents for the given ContainerTypeDescription.  This method
+	 * will be called to determine what the OSGi remote service supported intents are for the given description during
+	 * the search for the service exporter provider/containers upon remote service registration.
+	 * 
+	 * @param description the ContainerTypeDescription to return the supported intents for.  
+	 * Will not be <code>null</code>.
+	 * @return String[] the supported intents.  <code>null</code> may be returned if the 
+	 * given description does not support any intents.
+	 */
+	public String[] getSupportedIntents(ContainerTypeDescription description);
+
+	// Remote Service Importer
+	/**
+	 * <p>Get the imported config types for a given ContainerTypeDescription for the given exporter supported config types.  This
+	 * method will be called to determine what the local container imported configs are for the given description and
+	 * exporterSupportedConfigTypes.  The local provider can decide which (if any) imported config types should be 
+	 * returned and return them. </p>
+	 * <p></p>
+	 * <p>As an example, consider the config types for the ECF generic provider.  A generic server has a config type
+	 * of 'ecf.generic.server', and the client has 'ecf.generic.server'.  If the generic server exports a given
+	 * service, the exportersSupportedConfigTypes will be '[ecf.generic.server]'.  When this method is called
+	 * with the ecf.generic.client description (i.e. the container type description named 'ecf.generic.client'), it
+	 * should respond with a non-null, non-empty array...e.g.:  [ecf.generic.client].  This indicates that the
+	 * ecf.generic.client can serve as an importer for the given exporter config type.  All, other descriptions
+	 * should return <code>null<code>, to indicate that they cannot import a remote service exported by the given
+	 * exporterSupportedConfigTypes. </p>
+	 * 
+	 * @param description the container type description under consideration.
+	 * @param exporterSupportedConfigs the exporter supported config types under consideration.
+	 * @return String[] indicating the importer's supported config types.  Should be <code>null</code>, unless
+	 * one or more of the exporterSupportedConfigTypes is recognized for the given description.
+	 */
+	public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs);
+
+	/**
+	 * Get the properties associated with the given description, with the given importedConfigTypes, via the given exportedProperties.
+	 * 
+	 * @param description the container type description under consideration.
+	 * @param importedConfigs the imported config types for the given properties.  Will not be <code>null</code>, and
+	 * should be the same values as returned from {@link #getImportedConfigs(ContainerTypeDescription, String[])}.
+	 * @param exportedProperties the properties from the exported service.  Will not be <code>null</code>.
+	 * @return Dictionary that has all of the properties for the importedConfigTypes.  May be <code>null</code> if 
+	 * no properties are associated with the given description, importedConfigTypes, exportedProperties.
+	 */
+	public Dictionary getPropertiesForImportedConfigs(ContainerTypeDescription description, String[] importedConfigs, Dictionary exportedProperties);
+
+}
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/start/IECFStart.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/start/IECFStart.java
index 7e91952..6e36cd7 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/start/IECFStart.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/start/IECFStart.java
@@ -19,6 +19,7 @@ import org.eclipse.core.runtime.IStatus;
 public interface IECFStart {
 	/**
 	 * Run some startup task.
+	 * @param monitor 
 	 * 
 	 * @return IStatus the status of the start
 	 */
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableMultiStatus.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableMultiStatus.java
index 61c9578..a903a07 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableMultiStatus.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableMultiStatus.java
@@ -124,6 +124,7 @@ public class SerializableMultiStatus extends SerializableStatus {
 	/**
 	 * Returns a string representation of the status, suitable for debugging
 	 * purposes only.
+	 * @return String
 	 */
 	public String toString() {
 		StringBuffer buf = new StringBuffer(super.toString());
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableStatus.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableStatus.java
index fbf1e34..367ef9e 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableStatus.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/status/SerializableStatus.java
@@ -250,6 +250,7 @@ public class SerializableStatus implements IStatus, Serializable {
 	/**
 	 * Returns a string representation of the status, suitable for debugging
 	 * purposes only.
+	 * @return String
 	 */
 	public String toString() {
 		StringBuffer buf = new StringBuffer();
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/user/IUser.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/user/IUser.java
index 501c9a3..7c249bd 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/user/IUser.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/user/IUser.java
@@ -22,6 +22,7 @@ import org.eclipse.ecf.core.identity.IIdentifiable;
 public interface IUser extends IIdentifiable, Serializable, IAdaptable {
 	/**
 	 * Get basic name for user. Will not return <code>null</.
+	 * @return String
 	 */
 	public String getName();
 
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
new file mode 100644
index 0000000..51aefc6
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   EclipseSource - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.core.util;
+
+import org.eclipse.ecf.core.IContainerFactory;
+import org.eclipse.ecf.core.IContainerManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * Service tracker customized to handle tracking the ECF container factory service (singleton).
+ * @since 3.1
+ *
+ */
+public class ContainerFactoryTracker extends ServiceTracker {
+
+	public ContainerFactoryTracker(BundleContext context) {
+		super(context, IContainerManager.class.getName(), null);
+	}
+
+	public IContainerFactory getContainerFactory() {
+		return (IContainerFactory) getService();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerManagerTracker.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerManagerTracker.java
new file mode 100644
index 0000000..5ffb3b0
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerManagerTracker.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   EclipseSource - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.core.util;
+
+import org.eclipse.ecf.core.IContainerManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * Service tracker customized to handle tracking the ECF container manager service (singleton).
+ * @since 3.1
+ *
+ */
+public class ContainerManagerTracker extends ServiceTracker {
+
+	public ContainerManagerTracker(BundleContext context) {
+		super(context, IContainerManager.class.getName(), null);
+	}
+
+	public IContainerManager getContainerManager() {
+		return (IContainerManager) getService();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
index 0646517..3f7422b 100644
--- a/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
+++ b/eclipse/plugins/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
@@ -50,6 +50,20 @@ public class ECFPlugin implements BundleActivator {
 
 	public static final String ASYNCH_ATTRIBUTE = "asynchronous"; //$NON-NLS-1$
 
+	public static final String CONTAINER_NAME = "container"; //$NON-NLS-1$
+
+	public static final String CONTAINER_EPOINT = ECFNAMESPACE + "." + CONTAINER_NAME; //$NON-NLS-1$
+
+	public static final String FACTORY_ATTRIBUTE = "factoryName"; //$NON-NLS-1$
+
+	public static final String ID_ATTRIBUTE = "containerId"; //$NON-NLS-1$
+
+	public static final String PARAMETER_ELEMENT = "parameter"; //$NON-NLS-1$
+
+	public static final String PARAMETER_NAME = "name"; //$NON-NLS-1$
+
+	public static final String PARAMETER_VALUE = "value"; //$NON-NLS-1$
+
 	// The shared instance.
 	private static ECFPlugin plugin;
 
@@ -73,26 +87,85 @@ public class ECFPlugin implements BundleActivator {
 
 	private BundleActivator ecfTrustManager;
 
-	public IAdapterManager getAdapterManager() {
-		// First, try to get the adapter manager via
-		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
-			adapterManagerTracker.open();
+	/**
+	 * Returns the shared instance.
+	 * @return ECFPlugin
+	 */
+	public synchronized static ECFPlugin getDefault() {
+		if (plugin == null) {
+			plugin = new ECFPlugin();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return plugin;
 	}
 
 	public ECFPlugin() {
 		// null constructor
 	}
 
+	public void start(BundleContext ctxt) throws Exception {
+		plugin = this;
+		this.context = ctxt;
+
+		// initialize the default ssl socket factory 
+		try {
+			Class ecfSocketFactoryClass = Class.forName("org.eclipse.ecf.internal.ssl.ECFTrustManager"); //$NON-NLS-1$
+			ecfTrustManager = (BundleActivator) ecfSocketFactoryClass.newInstance();
+			ecfTrustManager.start(ctxt);
+		} catch (ClassNotFoundException e) {
+			// will occur if fragment is not installed or not on proper execution environment
+		} catch (Throwable t) {
+			log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), "Unexpected Error in ECFPlugin.start", t)); //$NON-NLS-1$
+		}
+
+		this.extensionRegistryTracker = new ServiceTracker(ctxt, IExtensionRegistry.class.getName(), null);
+		this.extensionRegistryTracker.open();
+		final IExtensionRegistry registry = getExtensionRegistry();
+		if (registry != null) {
+			this.registryManager = new ECFRegistryManager();
+			registry.addRegistryChangeListener(registryManager);
+		}
+		containerFactoryServiceRegistration = ctxt.registerService(IContainerFactory.class.getName(), ContainerFactory.getDefault(), null);
+		containerManagerServiceRegistration = ctxt.registerService(IContainerManager.class.getName(), ContainerFactory.getDefault(), null);
+		setupContainerFactoryExtensionPoint(ctxt);
+		setupContainerExtensionPoint(ctxt);
+		setupStartExtensionPoint(ctxt);
+	}
+
+	public void stop(BundleContext ctxt) throws Exception {
+		fireDisposables();
+		this.disposables = null;
+		final IExtensionRegistry reg = getExtensionRegistry();
+		if (reg != null)
+			reg.removeRegistryChangeListener(registryManager);
+		this.registryManager = null;
+		if (ecfTrustManager != null) {
+			ecfTrustManager.stop(ctxt);
+			ecfTrustManager = null;
+		}
+		if (logServiceTracker != null) {
+			logServiceTracker.close();
+			logServiceTracker = null;
+			logService = null;
+		}
+		if (extensionRegistryTracker != null) {
+			extensionRegistryTracker.close();
+			extensionRegistryTracker = null;
+		}
+		if (containerFactoryServiceRegistration != null) {
+			containerFactoryServiceRegistration.unregister();
+			containerFactoryServiceRegistration = null;
+		}
+		if (containerManagerServiceRegistration != null) {
+			containerManagerServiceRegistration.unregister();
+			containerManagerServiceRegistration = null;
+		}
+		if (adapterManagerTracker != null) {
+			adapterManagerTracker.close();
+			adapterManagerTracker = null;
+		}
+		this.context = null;
+	}
+
 	public void addDisposable(IDisposable disposable) {
 		disposables.put(disposable, null);
 	}
@@ -173,6 +246,37 @@ public class ECFPlugin implements BundleActivator {
 		}
 	}
 
+	void removeContainerExtensions(IConfigurationElement[] members) {
+		final String method = "removeContainerExtensions"; //$NON-NLS-1$
+		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, ECFPlugin.class, method, members);
+		// For each configuration element
+		for (int m = 0; m < members.length; m++) {
+			final IConfigurationElement member = members[m];
+			// The only required attribute is "factoryName"
+			String factoryName = member.getAttribute(FACTORY_ATTRIBUTE);
+			// Skip over if factory name is invalid
+			if (factoryName == null || "".equals(factoryName))continue; //$NON-NLS-1$
+			IContainerManager manager = (IContainerManager) ContainerFactory.getDefault();
+			IContainer[] containers = manager.getAllContainers();
+			if (containers == null)
+				continue;
+			for (int i = 0; i < containers.length; i++) {
+				ContainerTypeDescription containerTypeDescription = manager.getContainerTypeDescription(containers[i].getID());
+				if (containerTypeDescription != null && containerTypeDescription.getName().equals(factoryName)) {
+					// Remove from manager
+					IContainer removedContainer = manager.removeContainer(containers[i]);
+					if (removedContainer != null) {
+						try {
+							containers[i].dispose();
+						} catch (Exception e) {
+							logException(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Unexpected exception disposing container with factoryName=" + factoryName + " and id=" + containers[i].getID(), null), method, e); //$NON-NLS-1$ //$NON-NLS-2$
+						}
+					}
+				}
+			}
+		}
+	}
+
 	/**
 	 * Add container factory extension point extensions
 	 * 
@@ -228,6 +332,50 @@ public class ECFPlugin implements BundleActivator {
 		}
 	}
 
+	void addContainerExtensions(IConfigurationElement[] members) {
+		final String method = "addContainerExtensions"; //$NON-NLS-1$
+		Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, ECFPlugin.class, method, members);
+		// For each configuration element
+		for (int m = 0; m < members.length; m++) {
+			final IConfigurationElement member = members[m];
+			String factory = null;
+			String id = null;
+			try {
+				// The only required attribute is "factoryName"
+				factory = member.getAttribute(FACTORY_ATTRIBUTE);
+				// Skip over if factory name is invalid
+				if (factory == null || "".equals(factory))continue; //$NON-NLS-1$
+				// get id attribute
+				id = member.getAttribute(ID_ATTRIBUTE);
+				id = (id == null || "".equals(id)) ? null : id; //$NON-NLS-1$
+				Map parameters = getParametersForContainer(member);
+				ContainerFactory.getDefault().createContainer(factory, id, parameters);
+				Trace.trace(ECFPlugin.PLUGIN_ID, ECFDebugOptions.DEBUG, method + ".added container with factoryName=" + factory + " and id=" + id); //$NON-NLS-1$ //$NON-NLS-2$
+			} catch (final CoreException e) {
+				logException(e.getStatus(), method, e);
+			} catch (final Exception e) {
+				logException(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Unexpected exception creating container with factoryName=" + factory + " and id=" + id, null), method, e); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		}
+	}
+
+	Map getParametersForContainer(IConfigurationElement member) {
+		IConfigurationElement[] elements = member.getChildren(PARAMETER_ELEMENT);
+		if (elements == null)
+			return null;
+		Map results = null;
+		for (int i = 0; i < elements.length; i++) {
+			String name = elements[i].getAttribute(PARAMETER_NAME);
+			String value = elements[i].getAttribute(PARAMETER_VALUE);
+			if (name != null && !"".equals(name) && value != null && !"".equals(value)) { //$NON-NLS-1$ //$NON-NLS-2$
+				if (results == null)
+					results = new Properties();
+				results.put(name, value);
+			}
+		}
+		return results;
+	}
+
 	/**
 	 * Setup container factory extension point
 	 * 
@@ -245,6 +393,17 @@ public class ECFPlugin implements BundleActivator {
 		}
 	}
 
+	protected void setupContainerExtensionPoint(BundleContext bc) {
+		final IExtensionRegistry reg = getExtensionRegistry();
+		if (reg != null) {
+			final IExtensionPoint extensionPoint = reg.getExtensionPoint(CONTAINER_EPOINT);
+			if (extensionPoint == null) {
+				return;
+			}
+			addContainerExtensions(extensionPoint.getConfigurationElements());
+		}
+	}
+
 	public IExtensionRegistry getExtensionRegistry() {
 		return (IExtensionRegistry) extensionRegistryTracker.getService();
 	}
@@ -253,7 +412,7 @@ public class ECFPlugin implements BundleActivator {
 	 * Setup start extension point
 	 * 
 	 * @param bc
-	 *            the BundleContext fro this bundle
+	 *            the BundleContext for this bundle
 	 */
 	protected void setupStartExtensionPoint(BundleContext bc) {
 		final IExtensionRegistry reg = getExtensionRegistry();
@@ -302,98 +461,47 @@ public class ECFPlugin implements BundleActivator {
 		}
 	}
 
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext ctxt) throws Exception {
-		plugin = this;
-		this.context = ctxt;
-
-		// initialize the default ssl socket factory 
-		try {
-			Class ecfSocketFactoryClass = Class.forName("org.eclipse.ecf.internal.ssl.ECFTrustManager"); //$NON-NLS-1$
-			ecfTrustManager = (BundleActivator) ecfSocketFactoryClass.newInstance();
-			ecfTrustManager.start(ctxt);
-		} catch (ClassNotFoundException e) {
-			// will occur if fragment is not installed or not on proper execution environment
-		} catch (Throwable t) {
-			log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), "Unexpected Error in ECFPlugin.start", t)); //$NON-NLS-1$
-		}
-
-		this.extensionRegistryTracker = new ServiceTracker(ctxt, IExtensionRegistry.class.getName(), null);
-		this.extensionRegistryTracker.open();
-		final IExtensionRegistry registry = getExtensionRegistry();
-		if (registry != null) {
-			this.registryManager = new ECFRegistryManager();
-			registry.addRegistryChangeListener(registryManager);
-		}
-		containerFactoryServiceRegistration = ctxt.registerService(IContainerFactory.class.getName(), ContainerFactory.getDefault(), null);
-		containerManagerServiceRegistration = ctxt.registerService(IContainerManager.class.getName(), ContainerFactory.getDefault(), null);
-		setupContainerFactoryExtensionPoint(ctxt);
-		setupStartExtensionPoint(ctxt);
-	}
-
 	protected class ECFRegistryManager implements IRegistryChangeListener {
 		public void registryChanged(IRegistryChangeEvent event) {
-			final IExtensionDelta delta[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_FACTORY_NAME);
-			for (int i = 0; i < delta.length; i++) {
-				switch (delta[i].getKind()) {
+			final IExtensionDelta factoryDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_FACTORY_NAME);
+			for (int i = 0; i < factoryDeltas.length; i++) {
+				switch (factoryDeltas[i].getKind()) {
 					case IExtensionDelta.ADDED :
-						addContainerFactoryExtensions(delta[i].getExtension().getConfigurationElements());
+						addContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
 						break;
 					case IExtensionDelta.REMOVED :
-						removeContainerFactoryExtensions(delta[i].getExtension().getConfigurationElements());
+						removeContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
+						break;
+				}
+			}
+			final IExtensionDelta containerDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_NAME);
+			for (int i = 0; i < containerDeltas.length; i++) {
+				switch (containerDeltas[i].getKind()) {
+					case IExtensionDelta.ADDED :
+						addContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
+						break;
+					case IExtensionDelta.REMOVED :
+						removeContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
 						break;
 				}
 			}
 		}
 	}
 
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext ctxt) throws Exception {
-		fireDisposables();
-		this.disposables = null;
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null)
-			reg.removeRegistryChangeListener(registryManager);
-		this.registryManager = null;
-		if (ecfTrustManager != null) {
-			ecfTrustManager.stop(ctxt);
-			ecfTrustManager = null;
-		}
-		if (logServiceTracker != null) {
-			logServiceTracker.close();
-			logServiceTracker = null;
-			logService = null;
-		}
-		if (extensionRegistryTracker != null) {
-			extensionRegistryTracker.close();
-			extensionRegistryTracker = null;
-		}
-		if (containerFactoryServiceRegistration != null) {
-			containerFactoryServiceRegistration.unregister();
-			containerFactoryServiceRegistration = null;
-		}
-		if (containerManagerServiceRegistration != null) {
-			containerManagerServiceRegistration.unregister();
-			containerManagerServiceRegistration = null;
-		}
-		if (adapterManagerTracker != null) {
-			adapterManagerTracker.close();
-			adapterManagerTracker = null;
+	public IAdapterManager getAdapterManager() {
+		// First, try to get the adapter manager via
+		if (adapterManagerTracker == null) {
+			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker.open();
 		}
-		this.context = null;
+		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
+		// Then, if the service isn't there, try to get from Platform class via
+		// PlatformHelper class
+		if (adapterManager == null)
+			adapterManager = PlatformHelper.getPlatformAdapterManager();
+		if (adapterManager == null)
+			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
+		return adapterManager;
 	}
 
-	/**
-	 * Returns the shared instance.
-	 */
-	public synchronized static ECFPlugin getDefault() {
-		if (plugin == null) {
-			plugin = new ECFPlugin();
-		}
-		return plugin;
-	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppContainer.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppContainer.java
index 53a0354..55e2f23 100644
--- a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppContainer.java
+++ b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppContainer.java
@@ -325,7 +325,7 @@ public class EclipseAppContainer implements IRegistryEventListener, SynchronousB
 						defaultMainThreadAppHandle = appHandle;
 						return;
 					}
-					throw new ApplicationException(ApplicationException.APPLICATION_INTERNAL_ERROR);
+					throw new ApplicationException(ApplicationException.APPLICATION_INTERNAL_ERROR, NLS.bind(Messages.application_error_noMainThread, appHandle.getInstanceId()));
 				}
 				curDefaultApplicationListener = defaultAppListener;
 				curMissingAppLauncher = missingAppLauncher;
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
index 4f2eab8..dd53d48 100755
--- a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@ public class Messages extends NLS {
 	public static String application_error_stopping;
 	public static String application_error_state_stopped;
 	public static String application_error_starting;
+	public static String application_error_noMainThread;
 	public static String application_instance_stopped;
 
 	// product
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
index 280e5c1..66bdefb 100755
--- a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 #  All rights reserved. This program and the accompanying materials
 #  are made available under the terms of the Eclipse Public License v1.0
 #  which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@ application_errorStartDefault=An error occurred while starting the application
 application_error_stopping=An error occurred while stopping the application: {0}
 application_error_state_stopped=This instance of the application has been stopped:  {0}
 application_error_starting=An error occurred while starting the application: {0}
+application_error_noMainThread = The main thread is not available to launch the application: {0}
 application_instance_stopped=The application instance has been stopped before it could be started: {0}
 ### product
 provider_invalid_general = Errors while processing the product providers.
diff --git a/eclipse/plugins/org.eclipse.equinox.cm/src/org/eclipse/equinox/internal/cm/ConfigurationImpl.java b/eclipse/plugins/org.eclipse.equinox.cm/src/org/eclipse/equinox/internal/cm/ConfigurationImpl.java
index 3af8b62..630dc89 100644
--- a/eclipse/plugins/org.eclipse.equinox.cm/src/org/eclipse/equinox/internal/cm/ConfigurationImpl.java
+++ b/eclipse/plugins/org.eclipse.equinox.cm/src/org/eclipse/equinox/internal/cm/ConfigurationImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 Cognos Incorporated, IBM Corporation and others.
+ * Copyright (c) 2005, 2010 Cognos Incorporated, IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -228,6 +228,7 @@ class ConfigurationImpl implements Configuration {
 			checkDeleted();
 			configurationAdminFactory.checkConfigurationPermission();
 			this.bundleLocation = bundleLocation;
+			boundBundle = null; // always reset the boundBundle when setBundleLocation is called
 		} finally {
 			unlock();
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/InstanceProcess.java b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/InstanceProcess.java
index 334f822..02c8472 100644
--- a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/InstanceProcess.java
+++ b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/InstanceProcess.java
@@ -53,8 +53,14 @@ public class InstanceProcess {
 	//specifies the maximum time that a thread must wait for the building thread to complete the building of the SCP
 	static int waitTime = Activator.getInteger("equinox.scr.waitTimeOnBlock", 10000); //$NON-NLS-1$
 
-	//key - the SPC;   value - the SCPLock object
-	Hashtable scpLocks = new Hashtable(5);
+	//a flag used for synchronization of build/dispose operations
+	boolean busyBuilding = false;
+	//the working thread that performs the current build/dispose operation
+	Thread workingThread;
+	//an object used for synchronization when changing the status of busyBuilding flag
+	Object lock = new Object();
+	//used to count the number of times a lock is held when required recursively 
+	int lockCounter = 0;
 
 	/**
 	 * Handle Instance processing building and disposing.
@@ -76,40 +82,31 @@ public class InstanceProcess {
 		factoryRegistrations = null;
 	}
 
-	// gets the SCP synch lock to perform some build/release work
-	void getLock(ServiceComponentProp scp) {
-		SCPLock scpLock;
-		synchronized (scp) {
-			scpLock = (SCPLock) scpLocks.get(scp);
-			if (scpLock == null) {
-				scpLock = new SCPLock();
-				scpLocks.put(scp, scpLock);
-			}
-		}
-		synchronized (scpLock.lock) {
+	// gets the synch lock to perform some build/release work
+	void getLock() {
+		synchronized (lock) {
 			Thread currentThread = Thread.currentThread();
-			if (!scpLock.busyBuilding) {
-				scpLock.busyBuilding = true;
-				scpLock.lockCounter++;
-				scpLock.workingThread = currentThread;
-			} else if (scpLock.workingThread == currentThread) {
+			if (!busyBuilding) {
+				busyBuilding = true;
+				lockCounter++;
+				workingThread = currentThread;
+			} else if (workingThread == currentThread) {
 				//increase the lock counter - the lock is required recursively
-				scpLock.lockCounter++;
-			} else if (scpLock.workingThread != currentThread) {
+				lockCounter++;
+			} else if (workingThread != currentThread) {
 				long start = System.currentTimeMillis();
 				long timeToWait = waitTime;
 				boolean lockSucceeded = false;
 				do {
 					try {
-						scpLock.lock.wait(timeToWait);
+						lock.wait(timeToWait);
 					} catch (InterruptedException e) {
 						// do nothing
 					}
-					if (!scpLock.busyBuilding) {
-						scpLock.busyBuilding = true;
-						scpLock.lockCounter++;
-						scpLock.workingThread = currentThread;
-						scpLocks.put(scp, scpLock);
+					if (!busyBuilding) {
+						busyBuilding = true;
+						lockCounter++;
+						workingThread = currentThread;
 						lockSucceeded = true;
 						break;
 					}
@@ -125,21 +122,19 @@ public class InstanceProcess {
 		}
 	}
 
-	// free the SCP synch lock 
-	void freeLock(ServiceComponentProp scp) {
-		SCPLock scpLock = (SCPLock) scpLocks.get(scp);
-		synchronized (scpLock.lock) {
-			if (scpLock.busyBuilding) {
-				if (scpLock.workingThread == Thread.currentThread()) {
+	// free the synch lock 
+	void freeLock() {
+		synchronized (lock) {
+			if (busyBuilding) {
+				if (workingThread == Thread.currentThread()) {
 					//only the thread holding the lock can release it
-					scpLock.lockCounter--;
+					lockCounter--;
 				}
 				// release the lock in case the lock counter has decreased to 0
-				if (scpLock.lockCounter == 0) {
-					scpLock.busyBuilding = false;
-					scpLock.workingThread = null;
-					scpLock.lock.notify();
-					scpLocks.remove(scp);
+				if (lockCounter == 0) {
+					busyBuilding = false;
+					workingThread = null;
+					lock.notify();
 				}
 			}
 		}
@@ -160,15 +155,28 @@ public class InstanceProcess {
 
 		// loop through SCP list of enabled
 		if (list != null) {
+			getLock();
+			Vector listToBuild = new Vector();
 			for (int i = 0; i < list.size(); i++) {
 				scp = (ServiceComponentProp) list.elementAt(i);
-				getLock(scp);
-				int componentState = scp.getState();
-				if (componentState != Component.STATE_UNSATISFIED) {
+				if (scp.getState() != Component.STATE_UNSATISFIED) {
 					//no need to build the component:
 					// 1) it is disposed or about to be disposed
 					// 2) it is already built or being built
-					freeLock(scp);
+					continue;
+				}
+				scp.setState(Component.STATE_ACTIVATING);
+				listToBuild.addElement(scp);
+			}
+			freeLock();
+			for (int i = 0; i < listToBuild.size(); i++) {
+				scp = (ServiceComponentProp) listToBuild.elementAt(i);
+				getLock();
+				if (scp.getState() != Component.STATE_ACTIVATING) {
+					//no need to build the component:
+					// 1) it is disposed or about to be disposed
+					// 2) it is already built or being built
+					freeLock();
 					continue;
 				}
 				long start = 0l;
@@ -178,7 +186,6 @@ public class InstanceProcess {
 						start = System.currentTimeMillis();
 						Activator.log.info("[DS perf] Start building component " + scp); //$NON-NLS-1$
 					}
-					scp.setState(Component.STATE_ACTIVATING);
 					sc = scp.serviceComponent;
 					if (sc.immediate || (sc.factory == null && Activator.INSTANTIATE_ALL)) {
 						if (Activator.DEBUG) {
@@ -187,7 +194,8 @@ public class InstanceProcess {
 						if (scp.instances.isEmpty()) {
 							try {
 								buildComponent(null, scp, null, security);
-							} catch (Exception e) {
+							} catch (Throwable e) {
+								resolver.reorderSCP(scp);
 								successfullyBuilt = false;
 								if (!(e instanceof ComponentException)) {
 									Activator.log(null, LogService.LOG_ERROR, NLS.bind(Messages.CANNOT_BUILD_COMPONENT, scp), e);
@@ -257,7 +265,7 @@ public class InstanceProcess {
 					if (!successfullyBuilt) {
 						scp.setState(Component.STATE_UNSATISFIED);
 					}
-					freeLock(scp);
+					freeLock();
 					if (Activator.PERF) {
 						start = System.currentTimeMillis() - start;
 						Activator.log.info("[DS perf] The component " + scp + " is built for " + Long.toString(start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
@@ -281,10 +289,10 @@ public class InstanceProcess {
 		if (scpList != null) {
 			for (int i = 0; i < scpList.size(); i++) {
 				ServiceComponentProp scp = (ServiceComponentProp) scpList.elementAt(i);
-				getLock(scp);
+				getLock();
 				if (scp.isUnsatisfied()) {
 					//it is already deactivated
-					freeLock(scp);
+					freeLock();
 					continue;
 				}
 				long start = 0l;
@@ -299,7 +307,7 @@ public class InstanceProcess {
 					Activator.log(null, LogService.LOG_ERROR, NLS.bind(Messages.ERROR_DISPOSING_INSTANCES, scp), t);
 				} finally {
 					resolver.componentDisposed(scp);
-					freeLock(scp);
+					freeLock();
 					if (Activator.PERF) {
 						start = System.currentTimeMillis() - start;
 						Activator.log.info("[DS perf] The component " + scp + " is disposed for " + Long.toString(start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -404,8 +412,8 @@ public class InstanceProcess {
 					if (compInstance != null) {
 						try {
 							scp.bindReference(ref, compInstance);
-						} catch (Exception ex) {
-							// ex.printStackTrace();
+						} catch (Throwable t) {
+							Activator.log(scp.bc, LogService.LOG_ERROR, NLS.bind(Messages.ERROR_BINDING_REFERENCE, ref.reference), t);
 						}
 					}
 				}
@@ -509,7 +517,7 @@ public class InstanceProcess {
 		if (Activator.DEBUG) {
 			Activator.log.debug("InstanceProcess.buildComponent(): building component " + scp.name, null); //$NON-NLS-1$
 		}
-		getLock(scp);
+		getLock();
 		Counter counter;
 		Thread curThread = Thread.currentThread();
 		synchronized (scp) {
@@ -536,7 +544,7 @@ public class InstanceProcess {
 
 					//check if the timeout has passed or the scp is actually built	
 					if (buildingThreads.get(scp) != null) {
-						freeLock(scp);
+						freeLock();
 						// The SCP is not yet built
 						// We have two options here:
 						// 1 - Return the instance (if already created) nevertheless it is not finished its binding and activation phase
@@ -603,7 +611,7 @@ public class InstanceProcess {
 				buildingThreads.remove(scp);
 				scp.notify();
 			}
-			freeLock(scp);
+			freeLock();
 		}
 	}
 
@@ -611,7 +619,7 @@ public class InstanceProcess {
 		if (Activator.DEBUG) {
 			Activator.log.debug("Modifying component " + scp.name, null); //$NON-NLS-1$
 		}
-		getLock(scp);
+		getLock();
 		long start = 0l;
 		try {
 			if (!scp.isBuilt()) {
@@ -637,7 +645,7 @@ public class InstanceProcess {
 				}
 			}
 		} finally {
-			freeLock(scp);
+			freeLock();
 		}
 	}
 
@@ -768,15 +776,4 @@ public class InstanceProcess {
 		int count = 0;
 	}
 
-	static class SCPLock {
-		//a flag used for synchronization of build/dispose operations
-		boolean busyBuilding = false;
-		//the working thread that performs the current build/dispose operation
-		Thread workingThread;
-		//an object used for synchronization when changing the status of busyBuilding flag
-		Object lock = new Object();
-		//used to count the number of times a lock is held when required recursively 
-		int lockCounter = 0;
-	}
-
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java
index 33b0f98..440b412 100644
--- a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java
+++ b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java
@@ -325,35 +325,35 @@ public final class Resolver implements WorkPerformer {
 
 				break;
 			case ServiceEvent.UNREGISTERING :
+				Vector componentsToDispose;
+				synchronized (syncLock) {
+					//check for components with static reference to this service
+					componentsToDispose = selectStaticUnBind(scpEnabled, event.getServiceReference(), false);
+				}
+				//dispose instances from staticUnbind
+				if (componentsToDispose != null) {
+					instanceProcess.disposeInstances(componentsToDispose, ComponentConstants.DEACTIVATION_REASON_REFERENCE);
+				}
+
 				Vector newlyUnsatisfiedSCPs;
 				synchronized (syncLock) {
 					serviceReferenceTable.remove(event.getServiceReference());
 					if (scpEnabled.isEmpty())
 						return; // check for any enabled configurations
 
-					newlyUnsatisfiedSCPs = selectNewlyUnsatisfied();
+					newlyUnsatisfiedSCPs = selectNewlyUnsatisfied(event.getServiceReference());
 				}
 				if (!newlyUnsatisfiedSCPs.isEmpty()) {
 					// synchronously dispose newly unsatisfied components
 					instanceProcess.disposeInstances(newlyUnsatisfiedSCPs, ComponentConstants.DEACTIVATION_REASON_REFERENCE);
 				}
 
-				Vector componentsToDispose;
-				synchronized (syncLock) {
-					//check for components with static reference to this service
-					componentsToDispose = selectStaticUnBind(scpEnabled, event.getServiceReference(), false);
-				}
-				//dispose instances from staticUnbind
-				if (componentsToDispose != null) {
-					instanceProcess.disposeInstances(componentsToDispose, ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED);
-				}
-
 				synchronized (syncLock) {
 					// Pass in the set of currently resolved components, check each one -
 					// do we need to unbind
 					target = selectDynamicUnBind(scpEnabled, event.getServiceReference(), false);
 
-					if (componentsToDispose != null) {
+					if (componentsToDispose != null || !newlyUnsatisfiedSCPs.isEmpty()) {
 						// some components with static references were disposed. Try to build them again
 						// get list of newly satisfied SCPs and build them
 						resolvedComponents = getComponentsToBuild();
@@ -375,7 +375,7 @@ public final class Resolver implements WorkPerformer {
 
 					// check for newly unsatisfied components and synchronously
 					// dispose them
-					newlyUnsatisfiedSCPs = selectNewlyUnsatisfied();
+					newlyUnsatisfiedSCPs = selectNewlyUnsatisfied(event.getServiceReference());
 				}
 
 				if (!newlyUnsatisfiedSCPs.isEmpty()) {
@@ -519,7 +519,7 @@ public final class Resolver implements WorkPerformer {
 						continue;
 					}
 				}
-				if (!scp.isBuilt()) {
+				if (!scp.isBuilt() && !(scp.getState() == Component.STATE_DEACTIVATING)) {
 					scp.setState(Component.STATE_UNSATISFIED);
 				}
 			}
@@ -534,7 +534,7 @@ public final class Resolver implements WorkPerformer {
 		}
 	}
 
-	private Vector selectNewlyUnsatisfied() {
+	private Vector selectNewlyUnsatisfied(ServiceReference serviceRef) {
 		try {
 			Vector result = (Vector) scpEnabled.clone();
 			for (int k = result.size() - 1; k >= 0; k--) {
@@ -547,7 +547,15 @@ public final class Resolver implements WorkPerformer {
 					// scp and re-run the algorithm
 					Reference reference = (Reference) refs.elementAt(i);
 					if (reference != null) {
-						boolean resolved = !reference.isRequiredFor(scp.serviceComponent) || reference.hasProviders(null);
+						if (serviceRef != null && reference.reference.bind != null && scp.getState() == Component.STATE_ACTIVE && !(reference.dynamicUnbindReference(serviceRef) || reference.staticUnbindReference(serviceRef))) {
+							//make quick test - the service reference is not bound to the current component reference
+							continue;
+						}
+						if (serviceRef != null && !isPossibleMatch(reference, serviceRef)) {
+							// the service reference is not a possible match. Skipping further checks 
+							continue;
+						}
+						boolean resolved = !reference.isRequiredFor(scp.serviceComponent) || reference.hasProviders(this.serviceReferenceTable);
 
 						if (!resolved && scp.isBuilt()) {
 							if (Activator.DEBUG) {
@@ -565,10 +573,34 @@ public final class Resolver implements WorkPerformer {
 			return result;
 		} catch (Throwable e) {
 			Activator.log(null, LogService.LOG_ERROR, Messages.UNEXPECTED_EXCEPTION, e);
-			return null;
+			return new Vector(1);
 		}
 	}
 
+	private boolean isPossibleMatch(Reference reference, ServiceReference serviceRef) {
+		String[] serviceNames = (String[]) serviceRef.getProperty(Constants.OBJECTCLASS);
+		boolean hasName = false;
+		for (int i = 0; i < serviceNames.length; i++) {
+			if (serviceNames[i].equals(reference.interfaceName)) {
+				hasName = true;
+				break;
+			}
+		}
+		if (!hasName) {
+			return false;
+		}
+		// check target filter
+		try {
+			Filter filter = FrameworkUtil.createFilter(reference.target);
+			if (!filter.match(serviceRef)) {
+				return false;
+			}
+		} catch (InvalidSyntaxException e) {
+			return false;
+		}
+		return true;
+	}
+
 	// -- begin *disable* component routines
 	/**
 	 * Disable list of ComponentDescriptions
@@ -1011,6 +1043,18 @@ public final class Resolver implements WorkPerformer {
 		scp.setState(Component.STATE_DISPOSED);
 	}
 
+	/**
+	 * Reorder the specified SCP and place it at the end of the enabledSCPs list
+	 * @param scp the SCP to reorder
+	 */
+	protected void reorderSCP(ServiceComponentProp scp) {
+		synchronized (syncLock) {
+			if (scpEnabled.removeElement(scp)) {
+				scpEnabled.addElement(scp);
+			}
+		}
+	}
+
 	public void removeFromSatisfiedList(ServiceComponentProp scp) {
 		Vector tmp = new Vector();
 		tmp.addElement(scp);
diff --git a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java
index 1860ec8..209d49b 100644
--- a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java
+++ b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java
@@ -679,7 +679,7 @@ public class SCRManager implements ServiceListener, SynchronousBundleListener, C
 			Vector componentsToProcess = null;
 
 			if (Activator.DEBUG) {
-				String message = (enable ? "SCRManager.enableComponent(): " : "SCRManager.disableComponent(): ").concat(name != null ? name : "*all*") + " from bundle " + bundle.getSymbolicName(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+				String message = (enable ? "SCRManager.enableComponent(): " : "SCRManager.disableComponent(): ").concat(name != null ? name : "*all*") + " from bundle " + getBundleName(bundle); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 				Activator.log.debug(message, null);
 			}
 			Vector bundleComponents = (Vector) bundleToServiceComponents.get(bundle);
diff --git a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/model/ServiceComponentProp.java b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/model/ServiceComponentProp.java
index 55aff4e..aa653a5 100644
--- a/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/model/ServiceComponentProp.java
+++ b/eclipse/plugins/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/model/ServiceComponentProp.java
@@ -368,7 +368,6 @@ public class ServiceComponentProp implements Component, PrivilegedExceptionActio
 		if (!instances.removeElement(componentInstance)) {
 			return; //the instance is already disposed  
 		}
-		setState(Component.STATE_DEACTIVATING);
 		deactivate(componentInstance, deactivateReason);
 		unbind(componentInstance);
 		if (instances.isEmpty()) {
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
index ee006b9..38eb443 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
index 6142b6d..3fab737 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
index d9623ab..5714483 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
index 39d2937..c23aa94 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
index cd6735c..a96127e 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
index def154f..fba4751 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
index 1dd4943..2453f7b 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
@@ -1,12 +1,13 @@
-/**********************************************************************
- * 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: 
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.equinox.internal.frameworkadmin.equinox;
 
 import org.eclipse.osgi.util.NLS;
diff --git a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
index 72612ca..abde19f 100644
--- a/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
+++ b/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.http.jetty_2.0.0/src/org/eclipse/equinox/http/jetty/JettyConfigurator.java b/eclipse/plugins/org.eclipse.equinox.http.jetty_2.0.0/src/org/eclipse/equinox/http/jetty/JettyConfigurator.java
index 8a5b2a0..45f4490 100644
--- a/eclipse/plugins/org.eclipse.equinox.http.jetty_2.0.0/src/org/eclipse/equinox/http/jetty/JettyConfigurator.java
+++ b/eclipse/plugins/org.eclipse.equinox.http.jetty_2.0.0/src/org/eclipse/equinox/http/jetty/JettyConfigurator.java
@@ -31,7 +31,8 @@ public class JettyConfigurator {
 	private static Permission configurationPermission = new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE); //$NON-NLS-1$
 
 	/**
-	 * Creates an instance of Jetty parameterized with a dictionary of settings
+	 * Creates an instance of Jetty parameterized with a dictionary of settings. If a server with this
+	 * id already exists that server is instead restarted and updated with the new settings
 	 * @param id The identifier for the server instance
 	 * @param settings The dictionary of settings used to configure the server instance
 	 * @throws Exception If the server failed to start for any reason
diff --git a/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java b/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
index 723cd2c..0d99739 100644
--- a/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
+++ b/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 Cognos Incorporated, IBM Corporation and others.
+ * Copyright (c) 2005, 2010 Cognos Incorporated, IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -87,7 +87,7 @@ public class HttpServiceImpl implements HttpService, ExtendedHttpService {
 		if (aliases.remove(alias)) {
 			proxy.unregister(alias, true);
 		} else {
-			throw new IllegalArgumentException("Alias not found."); //$NON-NLS-1$
+			throw new IllegalArgumentException("Alias not found: " + alias); //$NON-NLS-1$
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/ProxyServlet.java b/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/ProxyServlet.java
index fdd6067..dae31f9 100644
--- a/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/ProxyServlet.java
+++ b/eclipse/plugins/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/ProxyServlet.java
@@ -80,7 +80,7 @@ public class ProxyServlet extends HttpServlet {
 
 	private String findExtensionAlias(String alias) {
 		String lastSegment = alias.substring(alias.lastIndexOf('/') + 1);
-		int dot = lastSegment.indexOf('.');
+		int dot = lastSegment.lastIndexOf('.');
 		if (dot == -1)
 			return null;
 		String extension = lastSegment.substring(dot + 1);
diff --git a/eclipse/plugins/org.eclipse.equinox.jsp.jasper.registry/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.jsp.jasper.registry/META-INF/MANIFEST.MF
index 3d28948..4623005 100644
--- a/eclipse/plugins/org.eclipse.equinox.jsp.jasper.registry/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.jsp.jasper.registry/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %bundleName
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-SymbolicName: org.eclipse.equinox.jsp.jasper.registry
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.jsp.jasper.registry.Activator
 Import-Package: org.eclipse.equinox.jsp.jasper,
  org.osgi.framework;version="1.3.0",
diff --git a/eclipse/plugins/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF
index 07a5c7e..d97a24b 100644
--- a/eclipse/plugins/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF
@@ -6,10 +6,10 @@ Bundle-Localization: plugin
 Bundle-SymbolicName: org.eclipse.equinox.jsp.jasper
 Bundle-Version: 1.0.200.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.jsp.jasper.Activator
-Import-Package: javax.servlet;version="2.4",
- javax.servlet.http;version="2.4",
- javax.servlet.jsp;version="2.0",
- org.apache.jasper.servlet,
+Import-Package: javax.servlet;version="[2.4, 3.0)",
+ javax.servlet.http;version="[2.4, 3.0)",
+ javax.servlet.jsp;version="[2.0, 2.1)",
+ org.apache.jasper.servlet;version="[0, 6)",
  org.osgi.framework;version="1.3.0",
  org.osgi.service.http;version="1.2.0",
  org.osgi.service.packageadmin;version="1.2.0",
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
index f715c8b..f81992a 100644
--- a/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.0.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="1.0.0"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390))
 Bundle-Localization: launcher.gtk.linux.s390
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
index f715c8b..f81992a 100644
--- a/eclipse/plugins/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.0.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="1.0.0"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390))
 Bundle-Localization: launcher.gtk.linux.s390
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
index 04167f7..928d34b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.artifact.repository;
 
@@ -130,19 +131,7 @@ public class CompositeArtifactRepository extends AbstractArtifactRepository impl
 	}
 
 	private static URI getActualLocation(URI base, String extension) {
-		final String name = CONTENT_FILENAME + extension;
-		String spec = base.toString();
-		if (spec.endsWith(name))
-			return base;
-		if (spec.endsWith("/")) //$NON-NLS-1$
-			spec += name;
-		else
-			spec += "/" + name; //$NON-NLS-1$
-		try {
-			return new URI(spec);
-		} catch (URISyntaxException e) {
-			return null;
-		}
+		return URIUtil.append(base, CONTENT_FILENAME + extension);
 	}
 
 	private boolean isLocal() {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepositoryFactory.java b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepositoryFactory.java
index a372168..180ed01 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepositoryFactory.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepositoryFactory.java
@@ -7,13 +7,10 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.artifact.repository;
 
-import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactRepositoryFactory;
-
-import org.eclipse.equinox.p2.core.ProvisionException;
-
 import java.io.*;
 import java.net.URI;
 import java.util.Map;
@@ -23,83 +20,94 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
 import org.eclipse.equinox.internal.p2.persistence.CompositeRepositoryIO;
 import org.eclipse.equinox.internal.p2.persistence.CompositeRepositoryState;
-import org.eclipse.equinox.internal.p2.repository.RepositoryTransport;
-import org.eclipse.equinox.internal.p2.repository.Transport;
+import org.eclipse.equinox.internal.p2.repository.CacheManager;
+import org.eclipse.equinox.p2.core.ProvisionException;
 import org.eclipse.equinox.p2.repository.IRepositoryManager;
 import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
 import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
+import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactRepositoryFactory;
 import org.eclipse.osgi.util.NLS;
 
 public class CompositeArtifactRepositoryFactory extends ArtifactRepositoryFactory {
 
+	private static final String JAR_EXTENSION = ".jar"; //$NON-NLS-1$
+	private static final String XML_EXTENSION = ".xml"; //$NON-NLS-1$
+	private static final String PROTOCOL_FILE = "file"; //$NON-NLS-1$
+
 	private IArtifactRepositoryManager getManager() {
 		if (getAgent() != null)
 			return (IArtifactRepositoryManager) getAgent().getService(IArtifactRepositoryManager.SERVICE_NAME);
 		return null;
 	}
 
+	/**
+	 * Returns a file in the local file system that contains the contents of the
+	 * metadata repository at the given location.
+	 */
+	private File getLocalFile(URI location, IProgressMonitor monitor) throws IOException, ProvisionException {
+		File localFile = null;
+		URI jarLocation = CompositeArtifactRepository.getActualLocation(location, true);
+		URI xmlLocation = CompositeArtifactRepository.getActualLocation(location, false);
+		// If the repository is local, we can return the repository file directly
+		if (PROTOCOL_FILE.equals(xmlLocation.getScheme())) {
+			//look for a compressed local file
+			localFile = URIUtil.toFile(jarLocation);
+			if (localFile.exists())
+				return localFile;
+			//look for an uncompressed local file
+			localFile = URIUtil.toFile(xmlLocation);
+			if (localFile.exists())
+				return localFile;
+			String msg = NLS.bind(Messages.io_failedRead, location);
+			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, msg, null));
+		}
+		//file is not local, create a cache of the repository metadata
+		CacheManager cache = (CacheManager) getAgent().getService(CacheManager.SERVICE_NAME);
+		if (cache == null)
+			throw new IllegalArgumentException("Cache manager service not available"); //$NON-NLS-1$
+		localFile = cache.createCache(location, CompositeArtifactRepository.CONTENT_FILENAME, monitor);
+		if (localFile == null) {
+			//there is no remote file in either form
+			String msg = NLS.bind(Messages.io_failedRead, location);
+			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, msg, null));
+		}
+		return localFile;
+	}
+
 	public IArtifactRepository load(URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
-		final String PROTOCOL_FILE = "file"; //$NON-NLS-1$
 		long time = 0;
 		final String debugMsg = "Restoring artifact repository "; //$NON-NLS-1$
 		if (Tracing.DEBUG_METADATA_PARSING) {
 			Tracing.debug(debugMsg + location);
 			time = -System.currentTimeMillis();
 		}
-		File localFile = null;
-		boolean local = false;
+
+		SubMonitor sub = SubMonitor.convert(monitor, 400);
 		try {
-			SubMonitor sub = SubMonitor.convert(monitor, 300);
-			OutputStream artifacts = null;
-			// try with compressed
-			boolean compress = true;
-			if (PROTOCOL_FILE.equals(location.getScheme())) {
-				local = true;
-				localFile = URIUtil.toFile(CompositeArtifactRepository.getActualLocation(location, true));
-				if (!localFile.exists()) {
-					localFile = URIUtil.toFile(CompositeArtifactRepository.getActualLocation(location, false));
-					compress = false;
-				}
-			} else {
-				//not local, return null if the caller wanted a modifiable repo
-				if ((flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0) {
-					return null;
-				}
+			//non local repos are not modifiable
+			if (!PROTOCOL_FILE.equals(location.getScheme()) && (flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0)
+				return null;
 
-				//download to local temp file
-				localFile = File.createTempFile(CompositeArtifactRepository.CONTENT_FILENAME, CompositeArtifactRepository.XML_EXTENSION);
-				try {
-					artifacts = new BufferedOutputStream(new FileOutputStream(localFile));
-					IStatus status = getTransport().download(CompositeArtifactRepository.getActualLocation(location, compress), artifacts, sub.newChild(100));
-					if (!status.isOK()) {
-						// retry uncompressed
-						compress = false;
-						status = getTransport().download(CompositeArtifactRepository.getActualLocation(location, compress), artifacts, sub.newChild(100));
-						if (!status.isOK())
-							throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, status.getMessage(), null));
-					}
-				} finally {
-					if (artifacts != null)
-						artifacts.close();
-				}
-			}
-			InputStream descriptorStream = null;
+			File localFile = getLocalFile(location, sub.newChild(300));
+			InputStream inStream = new BufferedInputStream(new FileInputStream(localFile));
+			JarInputStream jarStream = null;
 			try {
-				descriptorStream = new BufferedInputStream(new FileInputStream(localFile));
-				if (compress) {
-					URI actualLocation = CompositeArtifactRepository.getActualLocation(location, false);
-					JarInputStream jInStream = new JarInputStream(descriptorStream);
-					JarEntry jarEntry = jInStream.getNextJarEntry();
-					String filename = URIUtil.lastSegment(actualLocation);
-					while (jarEntry != null && filename != null && !(filename.equals(jarEntry.getName()))) {
-						jarEntry = jInStream.getNextJarEntry();
-					}
-					if (jarEntry == null) {
-						//there is a jar but the entry is missing or invalid, so treat this as an invalid repository
-						throw new IOException(NLS.bind(Messages.io_invalidLocation, actualLocation.getPath()));
+				//if reading from a jar, obtain a stream on the entry with the actual contents
+				if (localFile.getAbsolutePath().endsWith(JAR_EXTENSION)) {
+					jarStream = new JarInputStream(inStream);
+					JarEntry jarEntry = jarStream.getNextJarEntry();
+					String entryName = CompositeArtifactRepository.CONTENT_FILENAME + XML_EXTENSION;
+					while (jarEntry != null && (!entryName.equals(jarEntry.getName()))) {
+						jarEntry = jarStream.getNextJarEntry();
 					}
-					descriptorStream = jInStream;
+
+					//there is a jar but the entry is missing or invalid, so treat this as an invalid repository
+					if (jarEntry == null)
+						throw new IOException(NLS.bind(Messages.io_invalidLocation, location.getPath()));
 				}
+				//parse the repository descriptor file
+				sub.setWorkRemaining(100);
+				InputStream descriptorStream = jarStream != null ? jarStream : inStream;
 				CompositeRepositoryIO io = new CompositeRepositoryIO();
 				CompositeRepositoryState resultState = io.read(localFile.toURL(), descriptorStream, CompositeArtifactRepository.PI_REPOSITORY_TYPE, sub.newChild(100));
 				if (resultState.getLocation() == null)
@@ -111,8 +119,8 @@ public class CompositeArtifactRepositoryFactory extends ArtifactRepositoryFactor
 				}
 				return result;
 			} finally {
-				if (descriptorStream != null)
-					descriptorStream.close();
+				safeClose(jarStream);
+				safeClose(inStream);
 			}
 		} catch (FileNotFoundException e) {
 			String msg = NLS.bind(Messages.io_failedRead, location);
@@ -121,8 +129,8 @@ public class CompositeArtifactRepositoryFactory extends ArtifactRepositoryFactor
 			String msg = NLS.bind(Messages.io_failedRead, location);
 			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_READ, msg, e));
 		} finally {
-			if (!local && localFile != null && !localFile.delete())
-				localFile.deleteOnExit();
+			if (monitor != null)
+				monitor.done();
 		}
 	}
 
@@ -130,7 +138,16 @@ public class CompositeArtifactRepositoryFactory extends ArtifactRepositoryFactor
 		return new CompositeArtifactRepository(getManager(), location, name, properties);
 	}
 
-	private Transport getTransport() {
-		return RepositoryTransport.getInstance();
+	/**
+	 * Closes a stream, ignoring any secondary exceptions
+	 */
+	private void safeClose(InputStream stream) {
+		if (stream == null)
+			return;
+		try {
+			stream.close();
+		} catch (IOException e) {
+			//ignore
+		}
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
index 1bb37ed..343ec0a 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
@@ -9,6 +9,7 @@
  * 	IBM Corporation - initial API and implementation
  * 	Genuitec, LLC - support for multi-threaded downloads
  *  Cloudsmith Inc. - query indexes
+ *  Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.artifact.repository.simple;
 
@@ -53,6 +54,8 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
 
 	public static final boolean MD5_CHECK_ENABLED = !"false".equals(Activator.getContext().getProperty("eclipse.p2.MD5Check")); //$NON-NLS-1$//$NON-NLS-2$
 
+	public static final String CONTENT_FILENAME = "artifacts"; //$NON-NLS-1$
+
 	/** 
 	 * The key for a integer property controls the maximum number
 	 * of threads that should be used when optimizing downloads from a remote
@@ -192,7 +195,6 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
 	private static final String ARTIFACT_FOLDER = "artifact.folder"; //$NON-NLS-1$
 	private static final String ARTIFACT_UUID = "artifact.uuid"; //$NON-NLS-1$
 	static final private String BLOBSTORE = ".blobstore/"; //$NON-NLS-1$
-	static final private String CONTENT_FILENAME = "artifacts"; //$NON-NLS-1$
 	static final private String[][] PACKED_MAPPING_RULES = { {"(& (classifier=osgi.bundle) (format=packed))", "${repoUrl}/plugins/${id}_${version}.jar.pack.gz"}, //$NON-NLS-1$//$NON-NLS-2$
 			{"(& (classifier=osgi.bundle))", "${repoUrl}/plugins/${id}_${version}.jar"}, //$NON-NLS-1$//$NON-NLS-2$
 			{"(& (classifier=binary))", "${repoUrl}/binary/${id}_${version}"}, //$NON-NLS-1$ //$NON-NLS-2$
@@ -239,24 +241,12 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
 		toDelete.delete();
 	}
 
-	public static URI getActualLocation(URI base, boolean compress) throws IOException {
+	public static URI getActualLocation(URI base, boolean compress) {
 		return getActualLocation(base, compress ? JAR_EXTENSION : XML_EXTENSION);
 	}
 
-	private static URI getActualLocation(URI base, String extension) throws IOException {
-		final String name = CONTENT_FILENAME + extension;
-		String spec = base.toString();
-		if (spec.endsWith(name))
-			return base;
-		if (spec.endsWith("/")) //$NON-NLS-1$
-			spec += name;
-		else
-			spec += "/" + name; //$NON-NLS-1$
-		try {
-			return new URI(spec);
-		} catch (URISyntaxException e) {
-			throw new IOException(NLS.bind(Messages.io_invalidLocation, spec));
-		}
+	private static URI getActualLocation(URI base, String extension) {
+		return URIUtil.append(base, CONTENT_FILENAME + extension);
 	}
 
 	public static URI getBlobStoreLocation(URI base) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryFactory.java b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryFactory.java
index d9cd59a..4ebeb06 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryFactory.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryFactory.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.artifact.repository.simple;
 
@@ -19,8 +20,7 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.artifact.repository.Activator;
 import org.eclipse.equinox.internal.p2.artifact.repository.Messages;
 import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
-import org.eclipse.equinox.internal.p2.repository.RepositoryTransport;
-import org.eclipse.equinox.internal.p2.repository.Transport;
+import org.eclipse.equinox.internal.p2.repository.CacheManager;
 import org.eclipse.equinox.p2.core.ProvisionException;
 import org.eclipse.equinox.p2.repository.IRepositoryManager;
 import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
@@ -28,86 +28,90 @@ import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactRepositoryFactory;
 import org.eclipse.osgi.util.NLS;
 
 public class SimpleArtifactRepositoryFactory extends ArtifactRepositoryFactory {
+	private static final String PROTOCOL_FILE = "file"; //$NON-NLS-1$
+	private static final String JAR_EXTENSION = ".jar"; //$NON-NLS-1$
+	private static final String XML_EXTENSION = ".xml"; //$NON-NLS-1$
+
 	public SimpleArtifactRepositoryFactory() {
 		super();
 	}
 
+	/**
+	 * Returns a file in the local file system that contains the contents of the
+	 * metadata repository at the given location.
+	 */
+	private File getLocalFile(URI location, IProgressMonitor monitor) throws IOException, ProvisionException {
+		File localFile = null;
+		URI jarLocation = SimpleArtifactRepository.getActualLocation(location, true);
+		URI xmlLocation = SimpleArtifactRepository.getActualLocation(location, false);
+		// If the repository is local, we can return the repository file directly
+		if (PROTOCOL_FILE.equals(xmlLocation.getScheme())) {
+			//look for a compressed local file
+			localFile = URIUtil.toFile(jarLocation);
+			if (localFile.exists())
+				return localFile;
+			//look for an uncompressed local file
+			localFile = URIUtil.toFile(xmlLocation);
+			if (localFile.exists())
+				return localFile;
+			String msg = NLS.bind(Messages.io_failedRead, location);
+			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, msg, null));
+		}
+		// file is not local, create a cache of the repository metadata
+		CacheManager cache = (CacheManager) getAgent().getService(CacheManager.SERVICE_NAME);
+		if (cache == null)
+			throw new IllegalArgumentException("Cache manager service not available"); //$NON-NLS-1$
+		localFile = cache.createCache(location, SimpleArtifactRepository.CONTENT_FILENAME, monitor);
+		if (localFile == null) {
+			// there is no remote file in either form - this should not really happen as
+			// createCache should bail out with exception if something is wrong. This is an internal
+			// error.
+			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, Messages.repoMan_internalError, null));
+		}
+		return localFile;
+	}
+
 	public IArtifactRepository load(URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
-		final String PROTOCOL_FILE = "file"; //$NON-NLS-1$
 		long time = 0;
 		final String debugMsg = "Restoring artifact repository "; //$NON-NLS-1$
 		if (Tracing.DEBUG_METADATA_PARSING) {
 			Tracing.debug(debugMsg + location);
 			time = -System.currentTimeMillis();
 		}
-		File localFile = null;
-		boolean local = false;
+		SubMonitor sub = SubMonitor.convert(monitor, 400);
 		try {
-			SubMonitor sub = SubMonitor.convert(monitor, 300);
-			OutputStream artifacts = null;
-			// try with compressed
-			boolean compress = true;
-			if (PROTOCOL_FILE.equals(location.getScheme())) {
-				local = true;
-				localFile = URIUtil.toFile(SimpleArtifactRepository.getActualLocation(location, true));
-				if (!localFile.exists()) {
-					localFile = URIUtil.toFile(SimpleArtifactRepository.getActualLocation(location, false));
-					compress = false;
-				}
-			} else {
-				//not local, return null if the caller wanted a modifiable repo
-				if ((flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0) {
-					return null;
-				}
-
-				//download to local temp file
-				localFile = File.createTempFile("artifacts", ".xml"); //$NON-NLS-1$ //$NON-NLS-2$
-				try {
-					artifacts = new BufferedOutputStream(new FileOutputStream(localFile));
-					IStatus status = getTransport().download(SimpleArtifactRepository.getActualLocation(location, compress), artifacts, sub.newChild(100));
-					if (!status.isOK()) {
-						// not meaningful to continue on an authentication exception (user will likely just be prompted again)
-						if (status.getCode() == ProvisionException.REPOSITORY_FAILED_AUTHENTICATION)
-							throw new ProvisionException(status);
-						// retry uncompressed
-						compress = false;
-						status = getTransport().download(SimpleArtifactRepository.getActualLocation(location, compress), artifacts, sub.newChild(100));
-						if (!status.isOK())
-							throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, status.getMessage(), null));
-					}
-				} finally {
-					if (artifacts != null)
-						artifacts.close();
-				}
-			}
-			InputStream descriptorStream = null;
+			File localFile = getLocalFile(location, sub.newChild(300));
+			InputStream inStream = new BufferedInputStream(new FileInputStream(localFile));
+			JarInputStream jarStream = null;
 			try {
-				descriptorStream = new BufferedInputStream(new FileInputStream(localFile));
-				if (compress) {
-					URI actualLocation = SimpleArtifactRepository.getActualLocation(location, false);
-					JarInputStream jInStream = new JarInputStream(descriptorStream);
-					JarEntry jarEntry = jInStream.getNextJarEntry();
-					String filename = URIUtil.lastSegment(actualLocation);
-					while (jarEntry != null && filename != null && !(filename.equals(jarEntry.getName()))) {
-						jarEntry = jInStream.getNextJarEntry();
+				//if reading from a jar, obtain a stream on the entry with the actual contents
+				if (localFile.getAbsolutePath().endsWith(JAR_EXTENSION)) {
+					jarStream = new JarInputStream(inStream);
+					JarEntry jarEntry = jarStream.getNextJarEntry();
+					String entryName = SimpleArtifactRepository.CONTENT_FILENAME + XML_EXTENSION;
+					while (jarEntry != null && (!entryName.equals(jarEntry.getName()))) {
+						jarEntry = jarStream.getNextJarEntry();
 					}
-					if (jarEntry == null) {
-						//there is a jar but the entry is missing or invalid, so treat this as an invalid repository
-						throw new IOException(NLS.bind(Messages.io_invalidLocation, actualLocation.getPath()));
-					}
-					descriptorStream = jInStream;
+					//if there is a jar but the entry is missing or invalid, treat this as an invalid repository
+					if (jarEntry == null)
+						throw new IOException(NLS.bind(Messages.io_invalidLocation, location));
 				}
+				//parse the repository descriptor file
+				sub.setWorkRemaining(100);
+				InputStream descriptorStream = jarStream != null ? jarStream : inStream;
 				SimpleArtifactRepositoryIO io = new SimpleArtifactRepositoryIO(getAgent());
 				SimpleArtifactRepository result = (SimpleArtifactRepository) io.read(localFile.toURL(), descriptorStream, sub.newChild(100));
 				result.initializeAfterLoad(location);
+				if (result != null && (flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0 && !result.isModifiable())
+					return null;
 				if (Tracing.DEBUG_METADATA_PARSING) {
 					time += System.currentTimeMillis();
 					Tracing.debug(debugMsg + "time (ms): " + time); //$NON-NLS-1$ 
 				}
 				return result;
 			} finally {
-				if (descriptorStream != null)
-					descriptorStream.close();
+				safeClose(jarStream);
+				safeClose(inStream);
 			}
 		} catch (FileNotFoundException e) {
 			String msg = NLS.bind(Messages.io_failedRead, location);
@@ -116,8 +120,8 @@ public class SimpleArtifactRepositoryFactory extends ArtifactRepositoryFactory {
 			String msg = NLS.bind(Messages.io_failedRead, location);
 			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_READ, msg, e));
 		} finally {
-			if (!local && localFile != null && !localFile.delete())
-				localFile.deleteOnExit();
+			if (monitor != null)
+				monitor.done();
 		}
 	}
 
@@ -125,7 +129,16 @@ public class SimpleArtifactRepositoryFactory extends ArtifactRepositoryFactory {
 		return new SimpleArtifactRepository(getAgent(), name, location, properties);
 	}
 
-	private Transport getTransport() {
-		return RepositoryTransport.getInstance();
+	/**
+	 * Closes a stream, ignoring any secondary exceptions
+	 */
+	private void safeClose(InputStream stream) {
+		if (stream == null)
+			return;
+		try {
+			stream.close();
+		} catch (IOException e) {
+			//ignore
+		}
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
index bbbae5e..b19c5c7 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.p2.console;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.p2.console.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.console/pom.xml b/eclipse/plugins/org.eclipse.equinox.p2.console/pom.xml
index bcbcc95..f1d09e2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.console/pom.xml
+++ b/eclipse/plugins/org.eclipse.equinox.p2.console/pom.xml
@@ -9,6 +9,6 @@
   </parent>
   <groupId>org.eclipse</groupId>
   <artifactId>org.eclipse.equinox.p2.console</artifactId>
-  <version>1.0.100.qualifier</version>
+  <version>1.0.200.qualifier</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.core/.options b/eclipse/plugins/org.eclipse.equinox.p2.core/.options
index 92221e7..a4d705b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.core/.options
+++ b/eclipse/plugins/org.eclipse.equinox.p2.core/.options
@@ -35,4 +35,7 @@ org.eclipse.equinox.p2.core/planner/projector=false
 org.eclipse.equinox.p2.core/reconciler=false
 
 #Detailed debugging information about the publisher
-org.eclipse.equinox.p2.core/publisher=false
\ No newline at end of file
+org.eclipse.equinox.p2.core/publisher=false
+
+#Detailed debugging information about event clients
+org.eclipse.equinox.p2.core/events/client = false
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/ProvisioningAgent.java b/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/ProvisioningAgent.java
index 938e11f..20df0d9 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/ProvisioningAgent.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/ProvisioningAgent.java
@@ -27,7 +27,7 @@ public class ProvisioningAgent implements IProvisioningAgent, ServiceTrackerCust
 
 	private final Map<String, Object> agentServices = Collections.synchronizedMap(new HashMap<String, Object>());
 	private BundleContext context;
-	private boolean stopped = false;
+	private volatile boolean stopped = false;
 	private ServiceRegistration reg;
 	private final Map<ServiceReference, ServiceTracker> trackers = Collections.synchronizedMap(new HashMap<ServiceReference, ServiceTracker>());
 
@@ -44,39 +44,42 @@ public class ProvisioningAgent implements IProvisioningAgent, ServiceTrackerCust
 	 * @see org.eclipse.equinox.p2.core.IProvisioningAgent#getService(java.lang.String)
 	 */
 	public Object getService(String serviceName) {
-		checkRunning();
-		Object service = agentServices.get(serviceName);
-		if (service != null)
+		//synchronize so concurrent gets always obtain the same service
+		synchronized (agentServices) {
+			checkRunning();
+			Object service = agentServices.get(serviceName);
+			if (service != null)
+				return service;
+			//attempt to get factory service from service registry
+			ServiceReference[] refs;
+			try {
+				refs = context.getServiceReferences(IAgentServiceFactory.SERVICE_NAME, "(" + IAgentServiceFactory.PROP_CREATED_SERVICE_NAME + '=' + serviceName + ')'); //$NON-NLS-1$
+			} catch (InvalidSyntaxException e) {
+				e.printStackTrace();
+				return null;
+			}
+			if (refs == null || refs.length == 0)
+				return null;
+			//track the factory so that we can automatically remove the service when the factory goes away
+			ServiceTracker tracker = new ServiceTracker(context, refs[0], this);
+			tracker.open();
+			IAgentServiceFactory factory = (IAgentServiceFactory) tracker.getService();
+			if (factory == null) {
+				tracker.close();
+				return null;
+			}
+			service = factory.createService(this);
+			if (service == null) {
+				tracker.close();
+				return null;
+			}
+			registerService(serviceName, service);
+			trackers.put(refs[0], tracker);
 			return service;
-		//attempt to get factory service from service registry
-		ServiceReference[] refs;
-		try {
-			refs = context.getServiceReferences(IAgentServiceFactory.SERVICE_NAME, "(" + IAgentServiceFactory.PROP_CREATED_SERVICE_NAME + '=' + serviceName + ')'); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			e.printStackTrace();
-			return null;
-		}
-		if (refs == null || refs.length == 0)
-			return null;
-		//track the factory so that we can automatically remove the service when the factory goes away
-		ServiceTracker tracker = new ServiceTracker(context, refs[0], this);
-		tracker.open();
-		IAgentServiceFactory factory = (IAgentServiceFactory) tracker.getService();
-		if (factory == null) {
-			tracker.close();
-			return null;
 		}
-		service = factory.createService(this);
-		if (service == null) {
-			tracker.close();
-			return null;
-		}
-		registerService(serviceName, service);
-		trackers.put(refs[0], tracker);
-		return service;
 	}
 
-	private synchronized void checkRunning() {
+	private void checkRunning() {
 		if (stopped)
 			throw new IllegalStateException("Attempt to access stopped agent: " + this); //$NON-NLS-1$
 	}
@@ -108,11 +111,9 @@ public class ProvisioningAgent implements IProvisioningAgent, ServiceTrackerCust
 	}
 
 	public void unregisterService(String serviceName, Object service) {
-		synchronized (this) {
+		synchronized (agentServices) {
 			if (stopped)
 				return;
-		}
-		synchronized (agentServices) {
 			if (agentServices.get(serviceName) == service)
 				agentServices.remove(serviceName);
 		}
@@ -121,15 +122,17 @@ public class ProvisioningAgent implements IProvisioningAgent, ServiceTrackerCust
 	}
 
 	public void stop() {
+		List<Object> toStop;
+		synchronized (agentServices) {
+			toStop = new ArrayList<Object>(agentServices.values());
+		}
 		//give services a chance to do their own shutdown
-		for (Object service : agentServices.values()) {
+		for (Object service : toStop) {
 			if (service instanceof IAgentService)
 				if (service != this)
 					((IAgentService) service).stop();
 		}
-		synchronized (this) {
-			stopped = true;
-		}
+		stopped = true;
 		//close all service trackers
 		synchronized (trackers) {
 			for (ServiceTracker t : trackers.values())
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Tracing.java b/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Tracing.java
index ca929c5..b7fb78d 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Tracing.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Tracing.java
@@ -35,12 +35,14 @@ public class Tracing {
 	public static boolean DEBUG_RECONCILER = false;
 	public static boolean DEBUG_REMOVE_REPO = false;
 	public static boolean DEBUG_UPDATE_CHECK = false;
+	public static boolean DEBUG_EVENTS_CLIENT = false;
 
 	static {
 		DebugOptions options = (DebugOptions) ServiceHelper.getService(Activator.context, DebugOptions.class.getName());
 		if (options != null) {
 			DEBUG = options.getBooleanOption(Activator.ID + "/debug", false); //$NON-NLS-1$
 			if (DEBUG) {
+				DEBUG_EVENTS_CLIENT = options.getBooleanOption(Activator.ID + "/events/client", false); //$NON-NLS-1$
 				DEBUG_GENERATOR_PARSING = options.getBooleanOption(Activator.ID + "/generator/parsing", false); //$NON-NLS-1$
 				DEBUG_INSTALL_REGISTRY = options.getBooleanOption(Activator.ID + "/engine/installregistry", false); //$NON-NLS-1$
 				DEBUG_METADATA_PARSING = options.getBooleanOption(Activator.ID + "/metadata/parsing", false); //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
index 8f400a5..47cce15 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
@@ -131,12 +131,15 @@ public class DirectorApplication implements IApplication {
 	private static final CommandLineOption OPTION_P2_ARCH = new CommandLineOption(new String[] {"-p2.arch"}, null, Messages.Help_The_ARCH_when_profile_is_created); //$NON-NLS-1$
 	private static final CommandLineOption OPTION_P2_NL = new CommandLineOption(new String[] {"-p2.nl"}, null, Messages.Help_The_NL_when_profile_is_created); //$NON-NLS-1$
 	private static final CommandLineOption OPTION_PURGEHISTORY = new CommandLineOption(new String[] {"-purgeHistory"}, null, Messages.Help_Purge_the_install_registry); //$NON-NLS-1$
+	private static final CommandLineOption OPTION_FOLLOW_REFERENCES = new CommandLineOption(new String[] {"-followReferences"}, null, Messages.Help_Follow_references); //$NON-NLS-1$
 
 	private static final Integer EXIT_ERROR = new Integer(13);
 	static private final String FLAVOR_DEFAULT = "tooling"; //$NON-NLS-1$
 	static private final String PROP_P2_PROFILE = "eclipse.p2.profile"; //$NON-NLS-1$
 	static private final String NO_ARTIFACT_REPOSITORIES_AVAILABLE = "noArtifactRepositoriesAvailable"; //$NON-NLS-1$
 
+	private static final String FOLLOW_ARTIFACT_REPOSITORY_REFERENCES = "org.eclipse.equinox.p2.director.followArtifactRepositoryReferences"; //$NON-NLS-1$
+
 	public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
 
 	private static void getURIs(List<URI> uris, String spec) throws CoreException {
@@ -214,6 +217,7 @@ public class DirectorApplication implements IApplication {
 	private boolean roamingProfile = false;
 	private boolean purgeRegistry = false;
 	private boolean stackTrace = false;
+	private boolean followReferences = false;
 	private String profileId;
 	private String profileProperties; // a comma-separated list of property pairs "tag=value"
 	private String ws;
@@ -545,6 +549,8 @@ public class DirectorApplication implements IApplication {
 			ProvisioningContext context = new ProvisioningContext(targetAgent);
 			context.setMetadataRepositories(metadataRepositoryLocations.toArray(new URI[metadataRepositoryLocations.size()]));
 			context.setArtifactRepositories(artifactRepositoryLocations.toArray(new URI[artifactRepositoryLocations.size()]));
+			context.setProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES, String.valueOf(followReferences));
+			context.setProperty(FOLLOW_ARTIFACT_REPOSITORY_REFERENCES, String.valueOf(followReferences));
 			ProfileChangeRequest request = buildProvisioningRequest(profile, installs, uninstalls);
 			printRequest(request);
 			planAndExecute(profile, context, request);
@@ -714,6 +720,11 @@ public class DirectorApplication implements IApplication {
 				continue;
 			}
 
+			if (OPTION_FOLLOW_REFERENCES.isOption(opt)) {
+				followReferences = true;
+				continue;
+			}
+
 			if (OPTION_P2_OS.isOption(opt)) {
 				os = getRequiredArgument(args, ++i);
 				continue;
@@ -838,6 +849,8 @@ public class DirectorApplication implements IApplication {
 		ProvisioningContext context = new ProvisioningContext(targetAgent);
 		context.setMetadataRepositories(metadataRepositoryLocations.toArray(new URI[metadataRepositoryLocations.size()]));
 		context.setArtifactRepositories(artifactRepositoryLocations.toArray(new URI[artifactRepositoryLocations.size()]));
+		context.setProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES, String.valueOf(followReferences));
+		context.setProperty(FOLLOW_ARTIFACT_REPOSITORY_REFERENCES, String.valueOf(followReferences));
 		executePlan(context, plan);
 	}
 
@@ -918,7 +931,7 @@ public class DirectorApplication implements IApplication {
 	}
 
 	private void performHelpInfo() {
-		CommandLineOption[] allOptions = new CommandLineOption[] {OPTION_HELP, OPTION_LIST, OPTION_INSTALL_IU, OPTION_UNINSTALL_IU, OPTION_REVERT, OPTION_DESTINATION, OPTION_METADATAREPOS, OPTION_ARTIFACTREPOS, OPTION_REPOSITORIES, OPTION_VERIFY_ONLY, OPTION_PROFILE, OPTION_FLAVOR, OPTION_SHARED, OPTION_BUNDLEPOOL, OPTION_PROFILE_PROPS, OPTION_ROAMING, OPTION_P2_OS, OPTION_P2_WS, OPTION_P2_ARCH, OPTION_P2_NL, OPTION_PURGEHISTORY};
+		CommandLineOption[] allOptions = new CommandLineOption[] {OPTION_HELP, OPTION_LIST, OPTION_INSTALL_IU, OPTION_UNINSTALL_IU, OPTION_REVERT, OPTION_DESTINATION, OPTION_METADATAREPOS, OPTION_ARTIFACTREPOS, OPTION_REPOSITORIES, OPTION_VERIFY_ONLY, OPTION_PROFILE, OPTION_FLAVOR, OPTION_SHARED, OPTION_BUNDLEPOOL, OPTION_PROFILE_PROPS, OPTION_ROAMING, OPTION_P2_OS, OPTION_P2_WS, OPTION_P2_ARCH, OPTION_P2_NL, OPTION_PURGEHISTORY, OPTION_FOLLOW_REFERENCES};
 		for (int i = 0; i < allOptions.length; ++i) {
 			allOptions[i].appendHelp(System.out);
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
index 872d296..8f3163b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
@@ -15,6 +15,8 @@ import org.eclipse.osgi.util.NLS;
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.director.app.messages"; //$NON-NLS-1$
 
+	public static String could_not_remove_initialProfile;
+
 	public static String Deprecated_application;
 	public static String Ambigous_Command;
 	public static String Application_NoManager;
@@ -50,6 +52,7 @@ public class Messages extends NLS {
 	public static String Help_Revert_to_previous_state;
 	public static String Help_Use_a_shared_location_for_the_install;
 	public static String Help_Purge_the_install_registry;
+	public static String Help_Follow_references;
 
 	public static String Ignored_repo;
 	public static String Installing;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/messages.properties
index 48dc5cf..ab49951 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/messages.properties
@@ -54,6 +54,7 @@ Help_The_NL_when_profile_is_created=The language to use when the profile is crea
 Help_The_OS_when_profile_is_created=The OS to use when the profile is created.
 Help_The_WS_when_profile_is_created=The windowing system to use when the profile is created.
 Help_Purge_the_install_registry=Remove the history of the profile registry.
+Help_Follow_references=Follow repository references.
 unable_to_parse_0_to_uri_1=Unable to parse {0} into an URI: {1}.
 unknown_option_0=Unknown option {0}. Use -help for a list of known options.
 Help_Missing_argument=The argument specifying what to install or uninstall is missing.
@@ -61,4 +62,4 @@ Missing_profile = The profile to revert to could not be found.
 problem_CallingDirector=A problem occured while invoking the director.
 problem_repoMustBeURI = The repository location ({0}) must be a URI.
 unableToWriteLogFile=Unable to write to the log file {0}.
-
+could_not_remove_initialProfile=Could not remove the initial profile created {0}.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
index c12c926..a9490e1 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@ Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.equinox.internal.p2.director.DirectorActivator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.equinox.internal.p2.director;x-friends:="org.eclipse.equinox.p2.repository.tools,org.eclipse.pde.core",
+Export-Package: org.eclipse.equinox.internal.p2.director;x-friends:="org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.operations,org.eclipse.pde.core",
  org.eclipse.equinox.internal.p2.rollback;x-internal:=true,
  org.eclipse.equinox.internal.provisional.p2.director;
   x-friends:="org.eclipse.equinox.p2.console,
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
index b8090b9..fc60f0d 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
@@ -18,7 +18,7 @@ public class AttachmentHelper {
 	private static final IInstallableUnitFragment[] NO_FRAGMENTS = new IInstallableUnitFragment[0];
 
 	public static Collection<IInstallableUnit> attachFragments(Iterator<IInstallableUnit> toAttach, Map<IInstallableUnitFragment, List<IInstallableUnit>> fragmentsToIUs) {
-		Map<IInstallableUnit, IInstallableUnitFragment> fragmentBindings = new HashMap<IInstallableUnit, IInstallableUnitFragment>();
+		Map<IInstallableUnit, IInstallableUnitFragment[]> fragmentBindings = new HashMap<IInstallableUnit, IInstallableUnitFragment[]>();
 		//Build a map inverse of the one provided in input (host --> List of fragments)
 		Map<IInstallableUnit, List<IInstallableUnitFragment>> iusToFragment = new HashMap<IInstallableUnit, List<IInstallableUnitFragment>>(fragmentsToIUs.size());
 		for (Map.Entry<IInstallableUnitFragment, List<IInstallableUnit>> mapping : fragmentsToIUs.entrySet()) {
@@ -65,14 +65,21 @@ public class AttachmentHelper {
 
 			IInstallableUnitFragment theFragment = null;
 			int specificityLevel = 0;
+			LinkedList<IInstallableUnitFragment> fragments = new LinkedList<IInstallableUnitFragment>();
 			for (IInstallableUnitFragment fragment : applicableFragments) {
+				if (isTranslation(fragment)) {
+					fragments.add(fragment);
+					continue;
+				}
 				if (fragment.getHost().size() > specificityLevel) {
 					theFragment = fragment;
 					specificityLevel = fragment.getHost().size();
 				}
 			}
 			if (theFragment != null)
-				fragmentBindings.put(hostIU, theFragment);
+				fragments.addFirst(theFragment);
+			if (!fragments.isEmpty())
+				fragmentBindings.put(hostIU, fragments.toArray(new IInstallableUnitFragment[fragments.size()]));
 		}
 		//build the collection of resolved IUs
 		Collection<IInstallableUnit> result = new HashSet<IInstallableUnit>();
@@ -86,14 +93,20 @@ public class AttachmentHelper {
 				continue;
 			}
 			//return a new IU that combines the IU with its bound fragments
-			IInstallableUnitFragment fragment = fragmentBindings.get(iu);
-			IInstallableUnitFragment[] fragments;
-			if (fragment == null)
+			IInstallableUnitFragment[] fragments = fragmentBindings.get(iu);
+			if (fragments == null)
 				fragments = NO_FRAGMENTS;
-			else
-				fragments = new IInstallableUnitFragment[] {fragment};
 			result.add(MetadataFactory.createResolvedInstallableUnit(iu, fragments));
 		}
 		return result;
 	}
+
+	private static boolean isTranslation(IInstallableUnitFragment fragment) {
+		for (IProvidedCapability capability : fragment.getProvidedCapabilities()) {
+			// TODO make the constant in the TranslationSupport class public and use it
+			if ("org.eclipse.equinox.p2.localization".equals(capability.getNamespace())) //$NON-NLS-1$
+				return true;
+		}
+		return false;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
index a1a1685..719546c 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
@@ -49,6 +49,12 @@ public abstract class Explanation implements Comparable<Explanation> {
 		public String toString() {
 			return NLS.bind(Messages.Explanation_patchedHardDependency, new Object[] {patch, iu, req});
 		}
+
+		@Override
+		public int shortAnswer() {
+			return Explanation.VIOLATED_PATCHED_HARD_REQUIREMENT;
+		}
+
 	}
 
 	public static class HardRequirement extends Explanation {
@@ -74,6 +80,11 @@ public abstract class Explanation implements Comparable<Explanation> {
 		public String toString() {
 			return NLS.bind(Messages.Explanation_hardDependency, iu, req);
 		}
+
+		@Override
+		public int shortAnswer() {
+			return VIOLATED_HARD_REQUIREMENT;
+		}
 	}
 
 	public static class IUInstalled extends Explanation {
@@ -94,6 +105,11 @@ public abstract class Explanation implements Comparable<Explanation> {
 		public IStatus toStatus() {
 			return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_alreadyInstalled, getUserReadableName(iu)));
 		}
+
+		@Override
+		public int shortAnswer() {
+			return IU_INSTALLED;
+		}
 	}
 
 	public static class IUToInstall extends Explanation {
@@ -114,15 +130,47 @@ public abstract class Explanation implements Comparable<Explanation> {
 		public IStatus toStatus() {
 			return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_toInstall, getUserReadableName(iu)));
 		}
+
+		@Override
+		public int shortAnswer() {
+			return IU_TO_INSTALL;
+		}
+	}
+
+	public static class NotInstallableRoot extends Explanation {
+		public final IRequirement req;
+
+		public NotInstallableRoot(IRequirement req) {
+			this.req = req;
+		}
+
+		public String toString() {
+			return NLS.bind(Messages.Explanation_missingRootFilter, req);
+		}
+
+		public IStatus toStatus() {
+			return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRootFilter, req));
+		}
+
+		protected int orderValue() {
+			return 2;
+		}
+
+		@Override
+		public int shortAnswer() {
+			return NON_INSTALLABLE_ROOT;
+		}
 	}
 
 	public static class MissingIU extends Explanation {
 		public final IInstallableUnit iu;
 		public final IRequirement req;
+		public boolean isEntryPoint;
 
-		public MissingIU(IInstallableUnit iu, IRequirement req) {
+		public MissingIU(IInstallableUnit iu, IRequirement req, boolean isEntryPoint) {
 			this.iu = iu;
 			this.req = req;
+			this.isEntryPoint = isEntryPoint;
 		}
 
 		public int orderValue() {
@@ -134,6 +182,9 @@ public abstract class Explanation implements Comparable<Explanation> {
 		}
 
 		public String toString() {
+			if (isEntryPoint) {
+				return NLS.bind(Messages.Explanation_missingRootRequired, req);
+			}
 			if (req.getFilter() == null) {
 				return NLS.bind(Messages.Explanation_missingRequired, iu, req);
 			}
@@ -141,6 +192,9 @@ public abstract class Explanation implements Comparable<Explanation> {
 		}
 
 		public IStatus toStatus() {
+			if (isEntryPoint) {
+				return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRootRequired, req));
+			}
 			if (req.getFilter() == null) {
 				return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRequired, getUserReadableName(iu), req));
 			}
@@ -200,8 +254,6 @@ public abstract class Explanation implements Comparable<Explanation> {
 
 	}
 
-	public static final int MISSING_REQUIREMENT = 1;
-
 	public static final Explanation OPTIONAL_REQUIREMENT = new Explanation() {
 
 		public int orderValue() {
@@ -211,9 +263,21 @@ public abstract class Explanation implements Comparable<Explanation> {
 		public String toString() {
 			return Messages.Explanation_optionalDependency;
 		}
+
+		@Override
+		public int shortAnswer() {
+			return OTHER_REASON;
+		}
 	};
 
+	public static final int MISSING_REQUIREMENT = 1;
 	public static final int VIOLATED_SINGLETON_CONSTRAINT = 2;
+	public static final int IU_INSTALLED = 3;
+	public static final int IU_TO_INSTALL = 4;
+	public static final int VIOLATED_HARD_REQUIREMENT = 5;
+	public static final int VIOLATED_PATCHED_HARD_REQUIREMENT = 6;
+	public static final int NON_INSTALLABLE_ROOT = 7;
+	public static final int OTHER_REASON = 100;
 
 	protected Explanation() {
 		super();
@@ -228,9 +292,7 @@ public abstract class Explanation implements Comparable<Explanation> {
 
 	protected abstract int orderValue();
 
-	public int shortAnswer() {
-		throw new UnsupportedOperationException();
-	}
+	abstract public int shortAnswer();
 
 	/**
 	 * Returns a representation of this explanation as a status object.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
index 4b3e7f8..7e04e06 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
@@ -30,6 +30,8 @@ public class Messages extends NLS {
 	public static String Director_Task_Resolving_Dependencies;
 	public static String Director_Unsatisfied_Dependencies;
 	public static String Director_error_applying_configuration;
+	public static String Director_For_Target;
+	public static String Director_For_Target_Unselect_Required;
 
 	public static String Explanation_alreadyInstalled;
 	public static String Explanation_from;
@@ -37,8 +39,10 @@ public class Messages extends NLS {
 	public static String Explanation_hardDependency;
 	public static String Explanation_patchedHardDependency;
 	public static String Explanation_missingRequired;
+	public static String Explanation_missingRootRequired;
 	public static String Explanation_missingNonGreedyRequired;
 	public static String Explanation_missingRequiredFilter;
+	public static String Explanation_missingRootFilter;
 	public static String Explanation_optionalDependency;
 	public static String Explanation_rootMissing;
 	public static String Explanation_rootSingleton;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
index dd6da94..65be6f2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
@@ -19,6 +19,7 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
 import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
+import org.eclipse.equinox.internal.p2.director.Explanation.NotInstallableRoot;
 import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability;
 import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
 import org.eclipse.equinox.p2.metadata.*;
@@ -158,6 +159,7 @@ public class Projector {
 		return !lastState.query(QueryUtil.createIUQuery(iu), null).isEmpty();
 	}
 
+	@SuppressWarnings("unchecked")
 	public void encode(IInstallableUnit entryPointIU, IInstallableUnit[] alreadyExistingRoots, IQueryable<IInstallableUnit> installedIUs, Collection<IInstallableUnit> newRoots, IProgressMonitor monitor) {
 		alreadyInstalledIUs = Arrays.asList(alreadyExistingRoots);
 		numberOfInstalledIUs = sizeOf(installedIUs);
@@ -200,10 +202,10 @@ public class Projector {
 					processIU(iuToEncode, false);
 				}
 			}
-			createConstraintsForSingleton();
-
 			createMustHave(entryPointIU, alreadyExistingRoots);
 
+			createConstraintsForSingleton();
+
 			createConstraintsForNonGreedy();
 
 			createOptimizationFunction(entryPointIU, newRoots);
@@ -293,7 +295,7 @@ public class Projector {
 				maxWeight = weight;
 		}
 
-		// no need to add one here, since maxWeight is strickly greater than the
+		// no need to add one here, since maxWeight is strictly greater than the
 		// maximal weight used so far.
 		maxWeight = maxWeight.multiply(POWER);
 
@@ -367,7 +369,7 @@ public class Projector {
 		if (DEBUG) {
 			Tracing.debug(iu + "=0"); //$NON-NLS-1$
 		}
-		dependencyHelper.setFalse(iu, new Explanation.MissingIU(iu, req));
+		dependencyHelper.setFalse(iu, new Explanation.MissingIU(iu, req, iu == this.entryPoint));
 	}
 
 	// Check whether the requirement is applicable
@@ -402,6 +404,19 @@ public class Projector {
 		createNegationImplication(iu, matches, explanation);
 	}
 
+	private void determinePotentialHostsForFragment(IInstallableUnit iu) {
+		// determine matching hosts only for fragments
+		if (!(iu instanceof IInstallableUnitFragment))
+			return;
+
+		IInstallableUnitFragment fragment = (IInstallableUnitFragment) iu;
+		// for each host requirement, find matches and remember them 
+		for (IRequirement req : fragment.getHost()) {
+			List<IInstallableUnit> matches = getApplicableMatches(req);
+			rememberHostMatches((IInstallableUnitFragment) iu, matches);
+		}
+	}
+
 	private void expandRequirement(IRequirement req, IInstallableUnit iu, List<AbstractVariable> optionalAbstractRequirements, boolean isRootIu) throws ContradictionException {
 		if (req.getMax() == 0) {
 			expandNegatedRequirement(req, iu, optionalAbstractRequirements, isRootIu);
@@ -410,12 +425,14 @@ public class Projector {
 		if (!isApplicable(req))
 			return;
 		List<IInstallableUnit> matches = getApplicableMatches(req);
-		if (isHostRequirement(iu, req)) {
-			rememberHostMatches((IInstallableUnitFragment) iu, matches);
-		}
+		determinePotentialHostsForFragment(iu);
 		if (req.getMin() > 0) {
 			if (matches.isEmpty()) {
-				missingRequirement(iu, req);
+				if (iu == entryPoint && emptyBecauseFiltered) {
+					dependencyHelper.setFalse(iu, new NotInstallableRoot(req));
+				} else {
+					missingRequirement(iu, req);
+				}
 			} else {
 				if (req.isGreedy()) {
 					IInstallableUnit reqIu = matches.get(0);
@@ -518,22 +535,25 @@ public class Projector {
 	}
 
 	private Collection<IRequirement> getRequiredCapabilities(IInstallableUnit iu) {
-		Collection<IRequirement> rqs = iu.getRequirements();
-		if (!considerMetaRequirements)
-			return rqs;
-
-		Collection<IRequirement> metaRqs = iu.getMetaRequirements();
-		if (metaRqs.isEmpty())
-			return rqs;
-
-		ArrayList<IRequirement> aggregatedRqs = new ArrayList<IRequirement>(rqs.size() + metaRqs.size());
-		aggregatedRqs.addAll(rqs);
-		aggregatedRqs.addAll(metaRqs);
-		return aggregatedRqs;
+		boolean isFragment = iu instanceof IInstallableUnitFragment;
+		//Short-circuit for the case of an IInstallableUnit 
+		if ((!isFragment) && iu.getMetaRequirements().size() == 0)
+			return iu.getRequirements();
+
+		ArrayList<IRequirement> aggregatedRequirements = new ArrayList<IRequirement>(iu.getRequirements().size() + iu.getMetaRequirements().size() + (isFragment ? ((IInstallableUnitFragment) iu).getHost().size() : 0));
+		aggregatedRequirements.addAll(iu.getRequirements());
+
+		if (iu instanceof IInstallableUnitFragment) {
+			aggregatedRequirements.addAll(((IInstallableUnitFragment) iu).getHost());
+		}
+
+		if (considerMetaRequirements)
+			aggregatedRequirements.addAll(iu.getMetaRequirements());
+		return aggregatedRequirements;
 	}
 
 	static final class Pending {
-		List<IInstallableUnit> matches;
+		List<? super IInstallableUnitPatch> matches;
 		Explanation explanation;
 		Object left;
 	}
@@ -558,6 +578,10 @@ public class Projector {
 			for (int i = 0; i < reqs.length; i++) {
 				//The requirement is unchanged
 				if (reqs[i][0] == reqs[i][1]) {
+					if (reqs[i][0].getMax() == 0) {
+						expandNegatedRequirement(reqs[i][0], iu, optionalAbstractRequirements, isRootIu);
+						return;
+					}
 					if (!isApplicable(reqs[i][0]))
 						continue;
 
@@ -575,9 +599,7 @@ public class Projector {
 				if (isApplicable(reqs[i][1])) {
 					IRequirement req = reqs[i][1];
 					List<IInstallableUnit> matches = getApplicableMatches(req);
-					if (isHostRequirement(iu, req)) {
-						rememberHostMatches((IInstallableUnitFragment) iu, matches);
-					}
+					determinePotentialHostsForFragment(iu);
 					if (req.getMin() > 0) {
 						if (matches.isEmpty()) {
 							missingRequirement(patch, req);
@@ -649,14 +671,15 @@ public class Projector {
 						pending.matches.add(patch);
 						continue;
 					}
-
+					pending = new Pending();
+					pending.left = iu;
 					List<IInstallableUnit> matches = getApplicableMatches(req);
-					if (isHostRequirement(iu, req)) {
-						rememberHostMatches((IInstallableUnitFragment) iu, matches);
-					}
+					determinePotentialHostsForFragment(iu);
 					if (req.getMin() > 0) {
 						if (matches.isEmpty()) {
-							dependencyHelper.implication(new Object[] {iu}).implies(patch).named(new Explanation.HardRequirement(iu, null));
+							matches.add(patch);
+							pending.explanation = new Explanation.HardRequirement(iu, req);
+							pending.matches = matches;
 						} else {
 							// manage non greedy IUs
 							IInstallableUnit current;
@@ -682,11 +705,8 @@ public class Projector {
 								}
 
 								// Fix: make sure we collect all patches that will impact this IU-req, not just one
-								pending = new Pending();
-								pending.left = iu;
 								pending.explanation = explanation;
 								pending.matches = matches;
-								nonPatchedRequirements.put(req, pending);
 								for (Iterator<IInstallableUnit> it = matches.iterator(); it.hasNext();) {
 									current = it.next();
 									if (nonGreedyIUs.contains(current)) {
@@ -699,22 +719,25 @@ public class Projector {
 									current = it.next();
 									newConstraint.add(getNonGreedyVariable(current));
 								}
-								createImplication(new Object[] {iu}, newConstraint, new Explanation.HardRequirement(iu, req)); // FIXME
+								pending.explanation = new Explanation.HardRequirement(iu, req);
+								pending.matches = newConstraint;
 							}
+							nonPatchedRequirements.put(req, pending);
+
 						}
 					} else {
 						if (!matches.isEmpty()) {
 							IInstallableUnit current;
 							AbstractVariable abs;
 							matches.add(patch);
+							pending = new Pending();
+							pending.explanation = Explanation.OPTIONAL_REQUIREMENT;
+
 							if (req.isGreedy()) {
 								abs = getAbstractVariable(req);
 								// Fix: make sure we collect all patches that will impact this IU-req, not just one
-								pending = new Pending();
 								pending.left = new Object[] {abs, iu};
-								pending.explanation = Explanation.OPTIONAL_REQUIREMENT;
 								pending.matches = matches;
-								nonPatchedRequirements.put(req, pending);
 								for (Iterator<IInstallableUnit> it = matches.iterator(); it.hasNext();) {
 									current = it.next();
 									if (nonGreedyIUs.contains(current)) {
@@ -729,8 +752,10 @@ public class Projector {
 									newConstraint.add(getNonGreedyVariable(current));
 								}
 								newConstraint.add(patch);
-								createImplication(new Object[] {abs, iu}, newConstraint, new Explanation.HardRequirement(iu, req)); // FIXME
+								pending.left = new Object[] {abs, iu};
+								pending.matches = newConstraint;
 							}
+							nonPatchedRequirements.put(req, pending);
 							optionalAbstractRequirements.add(abs);
 						}
 					}
@@ -756,9 +781,7 @@ public class Projector {
 			}
 			IRequirement req = entry.getKey();
 			List<IInstallableUnit> matches = getApplicableMatches(req);
-			if (isHostRequirement(iu, req)) {
-				rememberHostMatches((IInstallableUnitFragment) iu, matches);
-			}
+			determinePotentialHostsForFragment(iu);
 			if (req.getMin() > 0) {
 				if (matches.isEmpty()) {
 					if (requiredPatches.isEmpty()) {
@@ -852,6 +875,8 @@ public class Projector {
 		createNegation(iu, req);
 	}
 
+	private boolean emptyBecauseFiltered;
+
 	/**
 	 * @param req
 	 * @return a list of mandatory requirements if any, an empty list if req.isOptional().
@@ -865,6 +890,7 @@ public class Projector {
 				target.add(match);
 			}
 		}
+		emptyBecauseFiltered = !matches.isEmpty() && target.isEmpty();
 		return target;
 	}
 
@@ -1066,7 +1092,8 @@ public class Projector {
 					Tracing.debug("Unsatisfiable !"); //$NON-NLS-1$
 					Tracing.debug("Solver solution NOT found: " + (stop - start)); //$NON-NLS-1$
 				}
-				result.merge(new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, Messages.Planner_Unsatisfiable_problem));
+				result = new MultiStatus(DirectorActivator.PI_DIRECTOR, SimplePlanner.UNSATISFIABLE, result.getChildren(), Messages.Planner_Unsatisfiable_problem, null);
+				result.merge(new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, SimplePlanner.UNSATISFIABLE, Messages.Planner_Unsatisfiable_problem, null));
 			}
 		} catch (TimeoutException e) {
 			result.merge(new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, Messages.Planner_Timeout));
@@ -1162,16 +1189,4 @@ public class Projector {
 		}
 		existingMatches.retainAll(matches);
 	}
-
-	private boolean isHostRequirement(IInstallableUnit iu, IRequirement req) {
-		if (!(iu instanceof IInstallableUnitFragment))
-			return false;
-		IInstallableUnitFragment fragment = (IInstallableUnitFragment) iu;
-		for (IRequirement hostReqs : fragment.getHost()) {
-			if (req.equals(hostReqs))
-				return true;
-		}
-		return false;
-	}
-
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java
index bc34b2b..a42ac71 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java
@@ -17,6 +17,8 @@ import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
 import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
+import org.eclipse.equinox.internal.p2.director.Explanation.MissingIU;
+import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability;
 import org.eclipse.equinox.internal.p2.metadata.query.UpdateQuery;
 import org.eclipse.equinox.internal.p2.rollback.FormerState;
 import org.eclipse.equinox.internal.provisional.p2.director.*;
@@ -39,6 +41,9 @@ public class SimplePlanner implements IPlanner {
 	private static final String ID_IU_FOR_ACTIONS = "org.eclipse.equinox.p2.engine.actions.root"; //$NON-NLS-1$
 	private static final String EXPLANATION = "org.eclipse.equinox.p2.director.explain"; //$NON-NLS-1$
 	private static final String CONSIDER_METAREQUIREMENTS = "org.eclipse.equinox.p2.planner.resolveMetaRequirements"; //$NON-NLS-1$
+
+	static final int UNSATISFIABLE = 1; //status code indicating that the problem is not satisfiable
+
 	private final IProvisioningAgent agent;
 	private final IProfileRegistry profileRegistry;
 	private final IEngine engine;
@@ -124,6 +129,22 @@ public class SimplePlanner implements IPlanner {
 	private IStatus convertExplanationToStatus(Set<Explanation> explanations) {
 		if (explanations == null)
 			return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, Messages.Director_Unsatisfied_Dependencies);
+
+		// hack to create a useful message when a user installs something intended for a target platform into the IDE
+		ArrayList<IStatus> forTargets = new ArrayList<IStatus>(0);
+		for (Explanation next : explanations) {
+			if (next instanceof Explanation.MissingIU) {
+				Explanation.MissingIU missingIU = (MissingIU) next;
+				if (missingIU.req instanceof IRequiredCapability && "A.PDE.Target.Platform".equals(((IRequiredCapability) missingIU.req).getNamespace())) //$NON-NLS-1$
+					forTargets.add(new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, missingIU.getUserReadableName(missingIU.iu)));
+			}
+		}
+		if (forTargets.size() > 0) {
+			// add a blurb about disabling 'include required software'.  The following line could be removed if bug 309863 is fixed
+			forTargets.add(new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, Messages.Director_For_Target_Unselect_Required));
+			// return a multi status with all the IUs that require A.PDE.Target.Platform
+			return new MultiStatus(DirectorActivator.PI_DIRECTOR, 1, forTargets.toArray(new IStatus[forTargets.size()]), Messages.Director_For_Target, null);
+		}
 		MultiStatus root = new MultiStatus(DirectorActivator.PI_DIRECTOR, 1, Messages.Director_Unsatisfied_Dependencies, null);
 		//try to find a more specific root message if possible
 		String specificMessage = null;
@@ -201,7 +222,7 @@ public class SimplePlanner implements IPlanner {
 	}
 
 	public static Map<String, String> createSelectionContext(Map<String, String> properties) {
-		Hashtable<String, String> result = new Hashtable<String, String>(properties);
+		HashMap<String, String> result = new HashMap<String, String>(properties);
 		String environments = properties.get(IProfile.PROP_ENVIRONMENTS);
 		if (environments == null)
 			return result;
@@ -296,12 +317,14 @@ public class SimplePlanner implements IPlanner {
 
 			Slicer slicer = new Slicer(new QueryableArray(availableIUs), newSelectionContext, satisfyMetaRequirements(profileChangeRequest.getProfileProperties()));
 			IQueryable<IInstallableUnit> slice = slicer.slice(new IInstallableUnit[] {(IInstallableUnit) updatedPlan[0]}, sub.newChild(ExpandWork / 4));
-			slicer.getNonGreedyIUs();
 			if (slice == null) {
 				IProvisioningPlan plan = engine.createPlan(profile, context);
 				plan.setStatus(slicer.getStatus());
 				return plan;
 			}
+			@SuppressWarnings("unchecked")
+			final IQueryable<IInstallableUnit>[] queryables = new IQueryable[] {slice, new QueryableArray(profileChangeRequest.getAdditions().toArray(new IInstallableUnit[profileChangeRequest.getAdditions().size()]))};
+			slice = new CompoundQueryable<IInstallableUnit>(queryables);
 			Projector projector = new Projector(slice, newSelectionContext, slicer.getNonGreedyIUs(), satisfyMetaRequirements(profileChangeRequest.getProfileProperties()));
 			projector.encode((IInstallableUnit) updatedPlan[0], (IInstallableUnit[]) updatedPlan[1], profile, profileChangeRequest.getAdditions(), sub.newChild(ExpandWork / 4));
 			IStatus s = projector.invokeSolver(sub.newChild(ExpandWork / 4));
@@ -312,7 +335,7 @@ public class SimplePlanner implements IPlanner {
 			}
 			if (s.getSeverity() == IStatus.ERROR) {
 				sub.setTaskName(Messages.Planner_NoSolution);
-				if (context != null && !(context.getProperty(EXPLANATION) == null || Boolean.TRUE.toString().equalsIgnoreCase(context.getProperty(EXPLANATION)))) {
+				if (s.getCode() != UNSATISFIABLE || (context != null && !(context.getProperty(EXPLANATION) == null || Boolean.TRUE.toString().equalsIgnoreCase(context.getProperty(EXPLANATION))))) {
 					IProvisioningPlan plan = engine.createPlan(profile, context);
 					plan.setStatus(s);
 					return plan;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
index dff0c13..a7dd4aa 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
@@ -16,6 +16,7 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
 import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
 import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
+import org.eclipse.equinox.internal.p2.metadata.InstallableUnitPatch;
 import org.eclipse.equinox.p2.metadata.*;
 import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
 import org.eclipse.equinox.p2.query.*;
@@ -85,7 +86,7 @@ public class Slicer {
 	private void validateInput(IInstallableUnit[] ius) {
 		for (int i = 0; i < ius.length; i++) {
 			if (!isApplicable(ius[i]))
-				throw new IllegalStateException("The IU " + ius[i] + " can't be installed in this environment because its filter does not match."); //$NON-NLS-1$//$NON-NLS-2$
+				throw new IllegalStateException(NLS.bind(Messages.Explanation_missingRootFilter, ius[i]));
 		}
 	}
 
@@ -105,6 +106,7 @@ public class Slicer {
 
 		Map<Version, IInstallableUnit> iuSlice = slice.get(iu.getId());
 		if (iuSlice == null) {
+
 			iuSlice = new HashMap<Version, IInstallableUnit>();
 			slice.put(iu.getId(), iuSlice);
 		}
@@ -113,7 +115,7 @@ public class Slicer {
 			return;
 		}
 
-		Collection<IRequirement> reqs = getRequiredCapabilities(iu);
+		Collection<IRequirement> reqs = getRequirements(iu);
 		if (reqs.isEmpty())
 			return;
 		for (IRequirement req : reqs) {
@@ -133,31 +135,30 @@ public class Slicer {
 		return req.isGreedy();
 	}
 
-	private Collection<IRequirement> getRequiredCapabilities(IInstallableUnit iu) {
-		Collection<IRequirement> iuRequirements = iu.getRequirements();
-		int initialRequirementCount = iuRequirements.size();
-		if (!(iu instanceof IInstallableUnitPatch)) {
-			if (!considerMetaRequirements)
-				return iuRequirements;
-
-			Collection<IRequirement> iuMetaRequirements = iu.getMetaRequirements();
-			int metaSize = iuMetaRequirements.size();
-			if (metaSize == 0)
-				return iuRequirements;
-
-			ArrayList<IRequirement> aggregatedCapabilities = new ArrayList<IRequirement>(initialRequirementCount + metaSize);
-			aggregatedCapabilities.addAll(iuRequirements);
-			aggregatedCapabilities.addAll(iuMetaRequirements);
-			return aggregatedCapabilities;
+	private Collection<IRequirement> getRequirements(IInstallableUnit iu) {
+		boolean isPatch = iu instanceof IInstallableUnitPatch;
+		boolean isFragment = iu instanceof IInstallableUnitFragment;
+		//Short-circuit for the case of an IInstallableUnit 
+		if ((!isFragment) && (!isPatch) && iu.getMetaRequirements().size() == 0)
+			return iu.getRequirements();
+
+		ArrayList<IRequirement> aggregatedRequirements = new ArrayList<IRequirement>(iu.getRequirements().size() + iu.getMetaRequirements().size() + (isFragment ? ((IInstallableUnitFragment) iu).getHost().size() : 0) + (isPatch ? ((IInstallableUnitPatch) iu).getRequirementsChange().size() : 0));
+		aggregatedRequirements.addAll(iu.getRequirements());
+
+		if (iu instanceof IInstallableUnitFragment) {
+			aggregatedRequirements.addAll(((IInstallableUnitFragment) iu).getHost());
+		}
+
+		if (iu instanceof InstallableUnitPatch) {
+			IInstallableUnitPatch patchIU = (IInstallableUnitPatch) iu;
+			List<IRequirementChange> changes = patchIU.getRequirementsChange();
+			for (int i = 0; i < changes.size(); i++)
+				aggregatedRequirements.add(changes.get(i).newValue());
 		}
 
-		IInstallableUnitPatch patchIU = (IInstallableUnitPatch) iu;
-		List<IRequirementChange> changes = patchIU.getRequirementsChange();
-		ArrayList<IRequirement> aggregatedCapabilities = new ArrayList<IRequirement>(initialRequirementCount + changes.size());
-		aggregatedCapabilities.addAll(iuRequirements);
-		for (int i = 0; i < changes.size(); i++)
-			aggregatedCapabilities.add(changes.get(i).newValue());
-		return aggregatedCapabilities;
+		if (considerMetaRequirements)
+			aggregatedRequirements.addAll(iu.getMetaRequirements());
+		return aggregatedRequirements;
 	}
 
 	private void expandRequirement(IInstallableUnit iu, IRequirement req) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
index e52f3df..a21c0d0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
@@ -16,6 +16,8 @@ Director_Task_Resolving_Dependencies=Calculating requirements and dependencies.
 Director_Unsatisfied_Dependencies=\
 Cannot complete the install because some dependencies are not satisfiable
 Director_error_applying_configuration=Unexpected failure applying configuration after for the installer plan execution.
+Director_For_Target = The following software cannot be installed because it is intended for use only in Plug-in Development Environment (PDE) target platforms. Please deselect these items and retry the operation.
+Director_For_Target_Unselect_Required = If provisioning a target platform then try disabling the option 'Include required software'
 
 Explanation_alreadyInstalled=Software currently installed: {0}
 Explanation_from=From: {0}
@@ -23,8 +25,10 @@ Explanation_fromPatch=From Patch: {0}
 Explanation_hardDependency=Cannot satisfy dependency: {0} depends on: {1}
 Explanation_patchedHardDependency=Cannot satisfy patched ({0}) dependency: {1} depends on: {2}
 Explanation_missingRequired=Missing requirement: {0} requires ''{1}'' but it could not be found
+Explanation_missingRootRequired=You requested to install ''{0}'' but it could not be found
 Explanation_missingNonGreedyRequired=Missing non greedy requirement: ''{0}'' is required non greedily but it could not be found
 Explanation_missingRequiredFilter=Missing requirement for filter {0}: {1} requires ''{2}'' but it could not be found
+Explanation_missingRootFilter={0} cannot be installed in this environment because its filter is not applicable.
 Explanation_optionalDependency=Optional dependency
 Explanation_rootMissing=Cannot complete the install because one or more required items could not be found.
 Explanation_rootSingleton=Cannot complete the install because of a conflicting dependency.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
index 5bf18bc..ac2ee18 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
@@ -235,6 +235,7 @@ public class ProfileChangeRequest implements Cloneable, IProfileChangeRequest {
 		result.propertiesToAdd = propertiesToAdd == null ? null : (HashMap<String, String>) propertiesToAdd.clone();
 		result.iuPropertiesToAdd = iuPropertiesToAdd == null ? null : (HashMap<IInstallableUnit, Map<String, String>>) iuPropertiesToAdd.clone();
 		result.iuPropertiesToRemove = iuPropertiesToRemove == null ? null : (HashMap<IInstallableUnit, List<String>>) iuPropertiesToRemove.clone();
+		result.additionalRequirements = additionalRequirements == null ? null : (ArrayList<IRequirement>) additionalRequirements.clone();
 		return result;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
index af3f2da..ecb953e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
@@ -21,6 +21,8 @@ import org.eclipse.equinox.p2.metadata.IRequirement;
  *  {@link IPlanner}, which validates which of the requested changes can be
  *  performed, and what other changes are required in order to make the profile
  *  state consistent.
+ *
+ *  It is important to note that a change request can only be submitted once to the planner.
  *  
  * @noimplement This interface is not intended to be implemented by clients.
  * @noextend This interface is not intended to be extended by clients.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
index d04ee2d..9ec20c5 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.p2.directorywatcher;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.provisional.p2.directorywatcher.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/pom.xml b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/pom.xml
index 39a919f..aa29c9b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/pom.xml
+++ b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/pom.xml
@@ -9,6 +9,6 @@
   </parent>
   <groupId>org.eclipse</groupId>
   <artifactId>org.eclipse.equinox.p2.directorywatcher</artifactId>
-  <version>1.0.100.qualifier</version>
+  <version>1.0.200.qualifier</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
index e84e91e..e8213ed 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
@@ -17,6 +17,7 @@ import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactDescriptor;
 import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
 import org.eclipse.equinox.internal.p2.update.Site;
 import org.eclipse.equinox.p2.core.ProvisionException;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -235,13 +236,15 @@ public class RepositoryListener extends DirectoryChangeListener {
 		if (artifactRepository == null)
 			return;
 		if (!removedFiles.isEmpty()) {
-			IQueryResult<IArtifactDescriptor> descriptors = artifactRepository.descriptorQueryable().query(ArtifactDescriptorQuery.ALL_DESCRIPTORS, null);
-			for (Iterator<IArtifactDescriptor> iterator = descriptors.iterator(); iterator.hasNext();) {
-				SimpleArtifactDescriptor descriptor = (SimpleArtifactDescriptor) iterator.next();
+			IArtifactDescriptor[] descriptors = artifactRepository.descriptorQueryable().query(ArtifactDescriptorQuery.ALL_DESCRIPTORS, null).toArray(IArtifactDescriptor.class);
+			for (IArtifactDescriptor d : descriptors) {
+				SimpleArtifactDescriptor descriptor = (SimpleArtifactDescriptor) d;
 				String filename = descriptor.getRepositoryProperty(FILE_NAME);
 				if (filename == null) {
-					String message = NLS.bind(Messages.filename_missing, "artifact", descriptor.getArtifactKey()); //$NON-NLS-1$
-					LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null));
+					if (Tracing.DEBUG) {
+						String message = NLS.bind(Messages.filename_missing, "artifact", descriptor.getArtifactKey()); //$NON-NLS-1$
+						LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null));
+					}
 				} else {
 					File artifactFile = new File(filename);
 					if (removedFiles.contains(artifactFile))
@@ -264,8 +267,10 @@ public class RepositoryListener extends DirectoryChangeListener {
 				IInstallableUnit iu = it.next();
 				String filename = iu.getProperty(FILE_NAME);
 				if (filename == null) {
-					String message = NLS.bind(Messages.filename_missing, "installable unit", iu.getId()); //$NON-NLS-1$
-					LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null));
+					if (Tracing.DEBUG) {
+						String message = NLS.bind(Messages.filename_missing, "installable unit", iu.getId()); //$NON-NLS-1$
+						LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null));
+					}
 				} else {
 					File iuFile = new File(filename);
 					Long iuLastModified = new Long(iu.getProperty(FILE_LAST_MODIFIED));
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/schema/connectorDiscovery.exsd b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/schema/connectorDiscovery.exsd
index e3db6e6..73f19d0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/schema/connectorDiscovery.exsd
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/schema/connectorDiscovery.exsd
@@ -62,7 +62,7 @@
             <element ref="overview" minOccurs="0" maxOccurs="1"/>
             <element ref="iu" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
-         <attribute name="kind" type="string" use="required">
+         <attribute name="kind" type="string">
             <annotation>
                <documentation>
                   must be a comma-delimited list of the following values: &apos;document&apos;, &apos;task&apos;, &apos;vcs&apos;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/BundleDiscoveryStrategy.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/BundleDiscoveryStrategy.java
index 912d399..2629e4b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/BundleDiscoveryStrategy.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/BundleDiscoveryStrategy.java
@@ -24,6 +24,10 @@ import org.osgi.framework.Bundle;
  */
 public class BundleDiscoveryStrategy extends AbstractDiscoveryStrategy {
 
+	public BundleDiscoveryStrategy() {
+		// constructor
+	}
+
 	@Override
 	public void performDiscovery(IProgressMonitor monitor) throws CoreException {
 		if (items == null || categories == null) {
@@ -79,6 +83,8 @@ public class BundleDiscoveryStrategy extends AbstractDiscoveryStrategy {
 				}
 				monitor.worked(1);
 			}
+
+			tags.addAll(extensionReader.getTags());
 		} finally {
 			monitor.done();
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/ConnectorDiscoveryExtensionReader.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/ConnectorDiscoveryExtensionReader.java
index 2ee7e25..84afa69 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/ConnectorDiscoveryExtensionReader.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/ConnectorDiscoveryExtensionReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Task top Technologies and others.
+ * Copyright (c) 2009 Tasktop Technologies and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.discovery.compatibility;
 
+import java.util.*;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.equinox.internal.p2.discovery.model.*;
 
@@ -45,7 +46,13 @@ public class ConnectorDiscoveryExtensionReader {
 
 	public static Tag VCS = new Tag("vcs", Messages.ConnectorDiscoveryExtensionReader_Version_Control); //$NON-NLS-1$
 
-	public static final Tag[] TAGS = new Tag[] {DOCUMENT, TASK, VCS};
+	public static final Tag[] DEFAULT_TAGS = new Tag[] {DOCUMENT, TASK, VCS};
+
+	private Map<String, Tag> tagById = new HashMap<String, Tag>();
+
+	public ConnectorDiscoveryExtensionReader() {
+		// constructor
+	}
 
 	/**
 	 * return the enum constant whose {@link Tag#getValue() value} is the same as the given value.
@@ -60,7 +67,7 @@ public class ConnectorDiscoveryExtensionReader {
 		if (value == null) {
 			return null;
 		}
-		for (Tag tag : TAGS) {
+		for (Tag tag : DEFAULT_TAGS) {
 			if (tag.getValue().equals(value)) {
 				return tag;
 			}
@@ -68,6 +75,32 @@ public class ConnectorDiscoveryExtensionReader {
 		throw new IllegalArgumentException(value);
 	}
 
+	public Set<Tag> getTags() {
+		return new HashSet<Tag>(tagById.values());
+	}
+
+	private Tag getTag(String id) {
+		if (id == null) {
+			return null;
+		}
+		// first, look for known tag
+		Tag result = tagById.get(id);
+		if (result != null) {
+			return result;
+		}
+		// second, search default tags
+		for (Tag tag : DEFAULT_TAGS) {
+			if (tag.getValue().equals(id)) {
+				tagById.put(id, tag);
+				return tag;
+			}
+		}
+		// third, create new tag
+		result = new Tag(id, id);
+		tagById.put(id, result);
+		return result;
+	}
+
 	public CatalogItem readConnectorDescriptor(IConfigurationElement element) throws ValidationException {
 		return readConnectorDescriptor(element, CatalogItem.class);
 	}
@@ -85,7 +118,10 @@ public class ConnectorDiscoveryExtensionReader {
 			if (kinds != null) {
 				String[] akinds = kinds.split("\\s*,\\s*"); //$NON-NLS-1$
 				for (String kind : akinds) {
-					connectorDescriptor.addTag(fromValue(kind));
+					Tag tag = getTag(kind);
+					if (tag != null) {
+						connectorDescriptor.addTag(tag);
+					}
 				}
 			}
 		} catch (IllegalArgumentException e) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/Messages.java
index 8246016..3e334b2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/Messages.java
@@ -68,12 +68,19 @@ class Messages extends NLS {
 
 	public static String RemoteBundleDiscoveryStrategy_unrecognized_discovery_url;
 
+	public static String SiteVerifier_Error_with_cause;
+
+	public static String SiteVerifier_Unexpected_Error;
+
+	public static String SiteVerifier_Verify_Job_Label;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
 
 	private Messages() {
+		// constructor
 	}
 
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/RemoteBundleDiscoveryStrategy.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/RemoteBundleDiscoveryStrategy.java
index 427ba89..ddafba1 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/RemoteBundleDiscoveryStrategy.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/RemoteBundleDiscoveryStrategy.java
@@ -42,7 +42,7 @@ public class RemoteBundleDiscoveryStrategy extends BundleDiscoveryStrategy {
 
 	@Override
 	public void performDiscovery(IProgressMonitor monitor) throws CoreException {
-		if (items == null || categories == null || directoryUrl == null) {
+		if (items == null || categories == null || directoryUrl == null || tags == null) {
 			throw new IllegalStateException();
 		}
 		if (registryStrategy != null) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/SiteVerifier.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/SiteVerifier.java
new file mode 100644
index 0000000..4f6cf71
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/SiteVerifier.java
@@ -0,0 +1,131 @@
+package org.eclipse.equinox.internal.p2.discovery.compatibility;
+
+import java.net.URI;
+import java.net.URL;
+import java.util.*;
+import java.util.concurrent.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.util.TransportUtil;
+import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Verifies if site URIs point to valid P2 repositories.
+ * 
+ * @author David Green
+ * @author Steffen Pingel
+ */
+public class SiteVerifier {
+
+	private final Catalog catalog;
+
+	public SiteVerifier(Catalog catalog) {
+		this.catalog = catalog;
+	}
+
+	/**
+	 * Determine update site availability. This may be performed automatically as part of discovery when
+	 * {@link #isVerifyUpdateSiteAvailability()} is true, or it may be invoked later by calling this method.
+	 */
+	public void verifySiteAvailability(IProgressMonitor monitor) {
+		// NOTE: we don't put java.net.URLs in the map since it involves DNS activity when
+		//       computing the hash code.
+		Map<String, Collection<CatalogItem>> urlToDescriptors = new HashMap<String, Collection<CatalogItem>>();
+
+		for (CatalogItem descriptor : catalog.getItems()) {
+			String url = descriptor.getSiteUrl();
+			if (url == null) {
+				continue;
+			}
+			if (!url.endsWith("/")) { //$NON-NLS-1$
+				url += "/"; //$NON-NLS-1$
+			}
+			Collection<CatalogItem> collection = urlToDescriptors.get(url);
+			if (collection == null) {
+				collection = new ArrayList<CatalogItem>();
+				urlToDescriptors.put(url, collection);
+			}
+			collection.add(descriptor);
+		}
+		final int totalTicks = urlToDescriptors.size();
+		monitor.beginTask(Messages.SiteVerifier_Verify_Job_Label, totalTicks);
+		try {
+			if (!urlToDescriptors.isEmpty()) {
+				ExecutorService executorService = Executors.newFixedThreadPool(Math.min(urlToDescriptors.size(), 4));
+				try {
+					List<Future<VerifyUpdateSiteJob>> futures = new ArrayList<Future<VerifyUpdateSiteJob>>(urlToDescriptors.size());
+					for (String url : urlToDescriptors.keySet()) {
+						futures.add(executorService.submit(new VerifyUpdateSiteJob(url)));
+					}
+					for (Future<VerifyUpdateSiteJob> jobFuture : futures) {
+						try {
+							for (;;) {
+								try {
+									VerifyUpdateSiteJob job = jobFuture.get(1L, TimeUnit.SECONDS);
+
+									Collection<CatalogItem> descriptors = urlToDescriptors.get(job.url);
+									for (CatalogItem descriptor : descriptors) {
+										descriptor.setAvailable(job.ok);
+									}
+									break;
+								} catch (TimeoutException e) {
+									if (monitor.isCanceled()) {
+										return;
+									}
+								}
+							}
+						} catch (InterruptedException e) {
+							monitor.setCanceled(true);
+							return;
+						} catch (ExecutionException e) {
+							if (e.getCause() instanceof OperationCanceledException) {
+								monitor.setCanceled(true);
+								return;
+							}
+							LogHelper.log(computeStatus(e, Messages.SiteVerifier_Unexpected_Error));
+						}
+						monitor.worked(1);
+					}
+				} finally {
+					executorService.shutdownNow();
+				}
+			}
+		} finally {
+			monitor.done();
+		}
+	}
+
+	private IStatus computeStatus(ExecutionException e, String message) {
+		Throwable cause = e.getCause();
+		if (cause.getMessage() != null) {
+			message = NLS.bind(Messages.SiteVerifier_Error_with_cause, message, cause.getMessage());
+		}
+		return new Status(IStatus.ERROR, DiscoveryCore.ID_PLUGIN, message, e);
+	}
+
+	private static class VerifyUpdateSiteJob implements Callable<VerifyUpdateSiteJob> {
+
+		private final String url;
+
+		private boolean ok = false;
+
+		public VerifyUpdateSiteJob(String url) {
+			this.url = url;
+		}
+
+		public VerifyUpdateSiteJob call() throws Exception {
+			URL baseUrl = new URL(url);
+			List<URI> locations = new ArrayList<URI>();
+			for (String location : new String[] {"content.jar", "content.xml", "site.xml", "compositeContent.jar", "compositeContent.xml"}) { //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+				locations.add(new URL(baseUrl, location).toURI());
+			}
+			ok = TransportUtil.verifyAvailability(locations, true, new NullProgressMonitor());
+			return this;
+		}
+
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/messages.properties
index 9a10066..d4c1a86 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/messages.properties
@@ -32,3 +32,6 @@ RemoteBundleDiscoveryStrategy_task_remote_discovery=remote discovery
 RemoteBundleDiscoveryStrategy_unexpectedError=Unexpected error
 RemoteBundleDiscoveryStrategy_unknown_host_discovery_directory=Cannot access {0}: unknown host: please check your Internet connection and try again.
 RemoteBundleDiscoveryStrategy_unrecognized_discovery_url=Unrecognized discovery bundle URL: {0}
+SiteVerifier_Error_with_cause={0}: {1}
+SiteVerifier_Unexpected_Error=Unexpected error while verifying site availability
+SiteVerifier_Verify_Job_Label=Verifying availability
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.discovery/src/org/eclipse/equinox/internal/p2/discovery/AbstractDiscoveryStrategy.java b/eclipse/plugins/org.eclipse.equinox.p2.discovery/src/org/eclipse/equinox/internal/p2/discovery/AbstractDiscoveryStrategy.java
index ded3e4e..e45cf86 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.discovery/src/org/eclipse/equinox/internal/p2/discovery/AbstractDiscoveryStrategy.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.discovery/src/org/eclipse/equinox/internal/p2/discovery/AbstractDiscoveryStrategy.java
@@ -33,6 +33,7 @@ public abstract class AbstractDiscoveryStrategy {
 	protected List<Tag> tags;
 
 	public void dispose() {
+		// ignore
 	}
 
 	public List<CatalogCategory> getCategories() {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
index d5c61bf..d178f77 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
@@ -50,4 +50,5 @@ Import-Package: javax.xml.parsers,
  org.eclipse.osgi.util;version="1.0.0",
  org.osgi.framework;version="1.3.0",
  org.osgi.service.prefs,
+ org.osgi.util.tracker;version="1.4.0",
  org.xml.sax
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Messages.java
index fbdf962..94b91b9 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Messages.java
@@ -80,6 +80,7 @@ public class Messages extends NLS {
 	public static String Profile_Duplicate_Root_Profile_Id;
 	public static String profile_lock_not_reentrant;
 	public static String profile_not_current;
+	public static String profile_changed;
 	public static String profile_not_registered;
 	public static String Profile_Null_Profile_Id;
 	public static String Profile_Parent_Not_Found;
@@ -91,6 +92,7 @@ public class Messages extends NLS {
 	public static String session_context;
 	public static String session_prepare_error;
 	public static String shared_profile_not_found;
+	public static String Shared_Profile;
 
 	public static String SimpleProfileRegistry_Bad_profile_location;
 	public static String SimpleProfileRegistry_CannotRemoveCurrentSnapshot;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileEvent.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileEvent.java
index 73313e6..c81fd93 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileEvent.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileEvent.java
@@ -40,4 +40,28 @@ public class ProfileEvent extends EventObject implements IProfileEvent {
 	public String getProfileId() {
 		return (String) getSource();
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.util.EventObject#toString()
+	 */
+	public String toString() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append("ProfileEvent["); //$NON-NLS-1$
+		buffer.append(getProfileId());
+		buffer.append("-->"); //$NON-NLS-1$
+		switch (reason) {
+			case IProfileEvent.ADDED :
+				buffer.append("ADDED"); //$NON-NLS-1$
+				break;
+			case IProfileEvent.REMOVED :
+				buffer.append("REMOVED"); //$NON-NLS-1$
+				break;
+			case IProfileEvent.CHANGED :
+				buffer.append("CHANGED"); //$NON-NLS-1$
+				break;
+		}
+		buffer.append("] "); //$NON-NLS-1$
+		return buffer.toString();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileMetadataRepository.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileMetadataRepository.java
index 6d99aa2..3dfe7df 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileMetadataRepository.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileMetadataRepository.java
@@ -15,7 +15,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.*;
 import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
 import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
 import org.eclipse.equinox.internal.p2.metadata.repository.Activator;
 import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
@@ -29,6 +28,7 @@ import org.eclipse.equinox.p2.query.IQueryResult;
 import org.eclipse.equinox.p2.repository.IRepository;
 import org.eclipse.equinox.p2.repository.IRepositoryReference;
 import org.eclipse.equinox.p2.repository.metadata.spi.AbstractMetadataRepository;
+import org.eclipse.equinox.p2.repository.spi.RepositoryReference;
 import org.eclipse.osgi.util.NLS;
 
 public class ProfileMetadataRepository extends AbstractMetadataRepository {
@@ -40,6 +40,7 @@ public class ProfileMetadataRepository extends AbstractMetadataRepository {
 	public static final String TYPE = "org.eclipse.equinox.p2.engine.repo.metadataRepository"; //$NON-NLS-1$
 	public static final Integer VERSION = new Integer(1);
 	private IProfile profile;
+	private HashSet<IRepositoryReference> repositories = new HashSet<IRepositoryReference>();
 
 	public ProfileMetadataRepository(IProvisioningAgent agent, URI location, IProgressMonitor monitor) throws ProvisionException {
 		super(agent, location.toString(), TYPE, VERSION.toString(), location, null, null, null);
@@ -59,6 +60,7 @@ public class ProfileMetadataRepository extends AbstractMetadataRepository {
 		if (bus == null)
 			return;
 		for (URI repo : artifactRepos) {
+			repositories.add(new RepositoryReference(repo, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED));
 			bus.publishEvent(new RepositoryEvent(repo, IRepository.TYPE_ARTIFACT, RepositoryEvent.DISCOVERED, true));
 		}
 	}
@@ -154,7 +156,7 @@ public class ProfileMetadataRepository extends AbstractMetadataRepository {
 	}
 
 	public Collection<IRepositoryReference> getReferences() {
-		return CollectionUtils.emptyList();
+		return Collections.unmodifiableCollection(repositories);
 	}
 
 	public void initialize(RepositoryState state) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
index 902e3b4..57aabb9 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others. All rights reserved. This
+ * Copyright (c) 2007, 2010 IBM Corporation and others. All rights reserved. This
  * program and the accompanying materials are made available under the terms of
  * the Eclipse Public License v1.0 which accompanies this distribution, and is
  * available at http://www.eclipse.org/legal/epl-v10.html
@@ -81,17 +81,20 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
 	 */
 	private void findSelf() {
 		//the location for the currently running system is registered as a service
-		ServiceReference ref = EngineActivator.getContext().getServiceReference(IAgentLocation.SERVICE_NAME);
+		final BundleContext context = EngineActivator.getContext();
+		if (context == null)
+			return;
+		ServiceReference ref = context.getServiceReference(IAgentLocation.SERVICE_NAME);
 		if (ref == null)
 			return;
-		IAgentLocation location = (IAgentLocation) EngineActivator.getContext().getService(ref);
+		IAgentLocation location = (IAgentLocation) context.getService(ref);
 		if (location == null)
 			return;
 		if (store.equals(getDefaultRegistryDirectory(location))) {
 			//we are the registry for the currently running system
-			self = EngineActivator.getContext().getProperty("eclipse.p2.profile"); //$NON-NLS-1$
+			self = context.getProperty("eclipse.p2.profile"); //$NON-NLS-1$
 		}
-		EngineActivator.getContext().ungetService(ref);
+		context.ungetService(ref);
 	}
 
 	public static File getDefaultRegistryDirectory(IAgentLocation agent) {
@@ -731,12 +734,12 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
 			if (profile.isChanged()) {
 				if (DebugHelper.DEBUG_PROFILE_REGISTRY)
 					DebugHelper.debug(PROFILE_REGISTRY, "Profile is marked as changed."); //$NON-NLS-1$
-				throw new IllegalStateException(NLS.bind(Messages.profile_not_current, profile.getProfileId()));
+				throw new IllegalStateException(NLS.bind(Messages.profile_changed, profile.getProfileId()));
 			}
 			if (!checkTimestamps(profile, internalProfile)) {
 				if (DebugHelper.DEBUG_PROFILE_REGISTRY)
 					DebugHelper.debug(PROFILE_REGISTRY, "Unexpected timestamp difference in profile."); //$NON-NLS-1$
-				throw new IllegalStateException(NLS.bind(Messages.profile_not_current, profile.getProfileId()));
+				throw new IllegalStateException(NLS.bind(Messages.profile_not_current, new String[] {profile.getProfileId(), Long.toString(internalProfile.getTimestamp()), Long.toString(profile.getTimestamp())}));
 			}
 			isCurrent = true;
 		} finally {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
index af263bd..13d703f 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
+ *  Copyright (c) 2007, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -10,20 +10,20 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.engine;
 
-import org.eclipse.equinox.p2.query.QueryUtil;
-
 import java.io.File;
 import java.lang.ref.SoftReference;
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.*;
+import java.util.ArrayList;
 import java.util.Iterator;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.URIUtil;
 import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
 import org.eclipse.equinox.p2.engine.IProfile;
 import org.eclipse.equinox.p2.engine.query.IUProfilePropertyQuery;
 import org.eclipse.equinox.p2.engine.query.UserVisibleRootQuery;
-import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
 import org.eclipse.equinox.p2.query.*;
 import org.eclipse.osgi.service.datalocation.Location;
 import org.eclipse.osgi.util.NLS;
@@ -40,6 +40,7 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
 	private static final String PROP_BASE = "org.eclipse.equinox.p2.base"; //$NON-NLS-1$
 	private static final String PROP_RESOLVE = "org.eclipse.equinox.p2.resolve"; //$NON-NLS-1$
 	private static final String OPTIONAL = "OPTIONAL"; //$NON-NLS-1$
+	private static final String STRICT = "STRICT"; //$NON-NLS-1$
 	private static final String PROP_INCLUSION_RULES = "org.eclipse.equinox.p2.internal.inclusion.rules"; //$NON-NLS-1$
 
 	private final IProvisioningAgent agent;
@@ -50,7 +51,7 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
 
 	private static void addSharedProfileBaseIUs(final IProfile sharedProfile, final Profile userProfile) {
 		IQuery<IInstallableUnit> rootIUQuery = QueryUtil.createMatchQuery( //
-				"profileProperties[$0] == 'true' || touchpointType.id == $1",//$NON-NLS-1$
+				"profileProperties[$0] == 'true' || (touchpointType != null && touchpointType.id == $1)",//$NON-NLS-1$
 				IProfile.PROP_PROFILE_ROOT_IU, NATIVE_TOUCHPOINT_TYPE);
 		IQueryResult<IInstallableUnit> rootIUs = sharedProfile.query(rootIUQuery, null);
 		for (Iterator<IInstallableUnit> iterator = rootIUs.iterator(); iterator.hasNext();) {
@@ -60,11 +61,40 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
 			userProfile.setInstallableUnitProperty(iu, IProfile.PROP_PROFILE_LOCKED_IU, IU_LOCKED);
 			userProfile.setInstallableUnitProperty(iu, PROP_BASE, Boolean.TRUE.toString());
 		}
+
+		IInstallableUnit sharedProfileIU = createSharedProfileIU(sharedProfile);
+		userProfile.addInstallableUnit(sharedProfileIU);
+		userProfile.setInstallableUnitProperty(sharedProfileIU, PROP_INCLUSION_RULES, STRICT);
+		userProfile.setInstallableUnitProperty(sharedProfileIU, PROP_BASE, Boolean.TRUE.toString());
+	}
+
+	private static IInstallableUnit createSharedProfileIU(final IProfile sharedProfile) {
+		InstallableUnitDescription iuDescription = new InstallableUnitDescription();
+		iuDescription.setId(sharedProfile.getProfileId());
+		iuDescription.setVersion(Version.createOSGi(1, 0, 0, Long.toString(sharedProfile.getTimestamp())));
+
+		ArrayList<IProvidedCapability> iuCapabilities = new ArrayList<IProvidedCapability>();
+		IProvidedCapability selfCapability = MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, iuDescription.getId(), iuDescription.getVersion());
+		iuCapabilities.add(selfCapability);
+		iuDescription.addProvidedCapabilities(iuCapabilities);
+
+		ArrayList<IRequirement> iuRequirements = new ArrayList<IRequirement>();
+		IQueryResult<IInstallableUnit> allIUs = sharedProfile.query(QueryUtil.createIUAnyQuery(), null);
+		for (Iterator<IInstallableUnit> iterator = allIUs.iterator(); iterator.hasNext();) {
+			IInstallableUnit iu = iterator.next();
+			IRequirement iuRequirement = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, false, false, true);
+			iuRequirements.add(iuRequirement);
+		}
+		iuDescription.addRequirements(iuRequirements);
+		iuDescription.setProperty(IInstallableUnit.PROP_NAME, NLS.bind(Messages.Shared_Profile, null));
+
+		IInstallableUnit sharedProfileIU = MetadataFactory.createInstallableUnit(iuDescription);
+		return sharedProfileIU;
 	}
 
 	private static void removeUserProfileBaseIUs(final Profile userProfile) {
-		IQuery<IInstallableUnit> rootIUQuery = new IUProfilePropertyQuery(PROP_BASE, Boolean.TRUE.toString());
-		IQueryResult<IInstallableUnit> rootIUs = userProfile.query(rootIUQuery, null);
+		IQuery<IInstallableUnit> baseIUQuery = new IUProfilePropertyQuery(PROP_BASE, Boolean.TRUE.toString());
+		IQueryResult<IInstallableUnit> rootIUs = userProfile.query(baseIUQuery, null);
 		for (Iterator<IInstallableUnit> iterator = rootIUs.iterator(); iterator.hasNext();) {
 			IInstallableUnit iu = iterator.next();
 			userProfile.removeInstallableUnit(iu);
@@ -119,10 +149,12 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
 			String installArea = EngineActivator.getContext().getProperty(OSGI_INSTALL_AREA);
 			try {
 				URL registryURL = new URL(installArea + P2_ENGINE_DIR + SimpleProfileRegistry.DEFAULT_STORAGE_DIR);
-				File sharedRegistryDirectory = new File(registryURL.getPath());
+				File sharedRegistryDirectory = URIUtil.toFile(URIUtil.toURI(registryURL));
 				profileRegistry = new SimpleProfileRegistry(agent, sharedRegistryDirectory, null, false);
 			} catch (MalformedURLException e) {
 				//this is not possible because we know the above URL is valid
+			} catch (URISyntaxException e) {
+				//this is not possible because we know the above URL is valid
 			}
 		}
 		return profileRegistry;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
index f9bc0c3..13784b3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
@@ -42,11 +42,13 @@ SimpleProfileRegistry_Profile_not_locked_due_to_exception=Profile not locked due
 SimpleProfileRegistry_Bad_profile_location=Bad profile location: {0}
 SimpleProfileRegistry_CannotRemoveCurrentSnapshot=Cannot remove the current profile timestamp
 profile_does_not_exist=Profile to be updated does not exist: {0}.
-profile_not_current=Profile {0} is not current.
+profile_not_current=Profile {0} is not current. Expected timestamp {1} but was {2}.
+profile_changed=Profile {0} is marked as changed.
 profile_not_registered=Profile {0} not registered.
 reg_dir_not_available=Registry Directory not available: {0}.
 thread_not_owner=Thread not lock owner.
 profile_lock_not_reentrant=Lock failed. Profile does not permit reentrant locking.
+Shared_Profile=Shared profile
 shared_profile_not_found=Shared profile {0} not found.
 
 ProfilePreferences_saving=Saving profile preferences
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
index d9f163f..6607b5c 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,9 +10,6 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.engine.phases;
 
-import org.eclipse.equinox.p2.core.UIServices;
-import org.eclipse.equinox.p2.core.UIServices.TrustInfo;
-
 import java.io.File;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -22,12 +19,14 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.equinox.internal.p2.engine.EngineActivator;
 import org.eclipse.equinox.internal.p2.engine.Messages;
-import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.core.*;
+import org.eclipse.equinox.p2.core.UIServices.TrustInfo;
 import org.eclipse.osgi.service.security.TrustEngine;
 import org.eclipse.osgi.signedcontent.*;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
 
 public class CertificateChecker {
 	private ArrayList<File> artifacts;
@@ -46,17 +45,14 @@ public class CertificateChecker {
 		final BundleContext context = EngineActivator.getContext();
 		ServiceReference contentFactoryRef = context.getServiceReference(SignedContentFactory.class.getName());
 		SignedContentFactory verifierFactory = (SignedContentFactory) context.getService(contentFactoryRef);
-		ServiceReference trustEngineRef = context.getServiceReference(TrustEngine.class.getName());
-		TrustEngine trustEngine = (TrustEngine) context.getService(trustEngineRef);
 		try {
-			return checkCertificates(trustEngine, verifierFactory);
+			return checkCertificates(verifierFactory);
 		} finally {
 			context.ungetService(contentFactoryRef);
-			context.ungetService(trustEngineRef);
 		}
 	}
 
-	private IStatus checkCertificates(TrustEngine trustEngine, SignedContentFactory verifierFactory) {
+	private IStatus checkCertificates(SignedContentFactory verifierFactory) {
 		UIServices serviceUI = (UIServices) agent.getService(UIServices.SERVICE_NAME);
 		SignedContent content = null;
 		SignerInfo[] signerInfo = null;
@@ -80,17 +76,12 @@ public class CertificateChecker {
 				return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_SignedContentIOError, e);
 			}
 			for (int i = 0; i < signerInfo.length; i++) {
-				Certificate[] certificateChain = signerInfo[i].getCertificateChain();
-				try {
-					Certificate trustAnchor = trustEngine.findTrustAnchor(certificateChain);
-					if (trustAnchor == null) {
-						if (!untrusted.contains(certificateChain[0])) {
-							untrusted.add(certificateChain[0]);
-							untrustedChain.add(certificateChain);
-						}
+				if (!signerInfo[i].isTrusted()) {
+					Certificate[] certificateChain = signerInfo[i].getCertificateChain();
+					if (!untrusted.contains(certificateChain[0])) {
+						untrusted.add(certificateChain[0]);
+						untrustedChain.add(certificateChain);
 					}
-				} catch (IOException e) {
-					return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_KeystoreConnectionError, e);
 				}
 			}
 		}
@@ -145,20 +136,43 @@ public class CertificateChecker {
 		if (untrusted.size() > 0)
 			return new Status(IStatus.CANCEL, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
 		// If we should persist the trusted certificates, add them to the trust engine
-		if (trustInfo.persistTrust()) {
-			for (int i = 0; i < trustedCertificates.length; i++) {
-				try {
-					trustEngine.addTrustAnchor(trustedCertificates[i], trustedCertificates[i].toString());
-				} catch (IOException e) {
-					//just return an INFO so the user can proceed with the install
-					return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_KeystoreConnectionError, e);
-				} catch (GeneralSecurityException e) {
-					return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_CertificateError, e);
+		if (trustInfo.persistTrust())
+			return persistTrustedCertificates(trustedCertificates);
+
+		return status;
+	}
+
+	private IStatus persistTrustedCertificates(Certificate[] trustedCertificates) {
+		if (trustedCertificates == null)
+			// I'm pretty sure this would be a bug; trustedCertificates should never be null here.
+			return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
+		ServiceTracker trustEngineTracker = new ServiceTracker(EngineActivator.getContext(), TrustEngine.class.getName(), null);
+		trustEngineTracker.open();
+		Object[] trustEngines = trustEngineTracker.getServices();
+		try {
+			if (trustEngines == null)
+				return null;
+			for (Certificate trustedCertificate : trustedCertificates) {
+				for (Object engine : trustEngines) {
+					TrustEngine trustEngine = (TrustEngine) engine;
+					if (trustEngine.isReadOnly())
+						continue;
+					try {
+						trustEngine.addTrustAnchor(trustedCertificate, trustedCertificate.toString());
+						// this should mean we added an anchor successfully; continue to next cert
+						break;
+					} catch (IOException e) {
+						//just return an INFO so the user can proceed with the install
+						return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_KeystoreConnectionError, e);
+					} catch (GeneralSecurityException e) {
+						return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_CertificateError, e);
+					}
 				}
 			}
+		} finally {
+			trustEngineTracker.close();
 		}
-
-		return status;
+		return Status.OK_STATUS;
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
index 894c5dd..ea11ce4 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
@@ -8,6 +8,7 @@
  *  Contributors:
  * 	IBM Corporation - initial API and implementation
  *     WindRiver - https://bugs.eclipse.org/bugs/show_bug.cgi?id=227372
+ *	Sonatype, Inc. - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.p2.engine;
 
@@ -24,7 +25,6 @@ import org.eclipse.equinox.p2.repository.*;
 import org.eclipse.equinox.p2.repository.artifact.*;
 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
-import org.eclipse.equinox.p2.repository.spi.RepositoryReference;
 
 /**
  * A provisioning context defines the scope in which a provisioning operation
@@ -38,9 +38,7 @@ public class ProvisioningContext {
 	private final List<IInstallableUnit> extraIUs = Collections.synchronizedList(new ArrayList<IInstallableUnit>());
 	private URI[] metadataRepositories; //metadata repositories to consult
 	private final Map<String, String> properties = new HashMap<String, String>();
-	private Map<String, IRepositoryReference> metadataRepositorySnapshot = null;
-	private Map<String, IRepositoryReference> artifactRepositorySnapshot = null;
-	private Map<String, IArtifactRepository> referencedArtifactRepositories = null;
+	private Map<String, URI> referencedArtifactRepositories = null;
 
 	private static final String FILE_PROTOCOL = "file"; //$NON-NLS-1$
 
@@ -74,22 +72,19 @@ public class ProvisioningContext {
 	};
 
 	/**
-	 * Instructs the provisioning context to follow repository references when providing
-	 * queryables for obtaining metadata and artifacts.  When this property is set to
-	 * "true", then both enabled and disabled repository references that are encountered
-	 * while loading the specified metadata repositories will be included in the provisioning
-	 * context.  In this mode, the provisioning context has a distinct lifecycle, whereby
-	 * the metadata and artifact repositories to be used are determined when the client
-	 * retrieves the metadata queryable.  Clients using this property should not reset the
-	 * list of metadata repository locations or artifact repository locations once the
-	 * metadata queryable has been retrieved.
+	 * Instructs the provisioning context to follow metadata repository references when 
+	 * providing queryables for obtaining metadata and artifacts.  When this property is set to
+	 * "true", then metadata repository references that are encountered while loading the 
+	 * specified metadata repositories will be included in the provisioning
+	 * context.  
 	 *
 	 * @see #getMetadata(IProgressMonitor)
 	 * @see #setMetadataRepositories(URI[])
-	 * @see #setArtifactRepositories(URI[])
 	 */
 	public static final String FOLLOW_REPOSITORY_REFERENCES = "org.eclipse.equinox.p2.director.followRepositoryReferences"; //$NON-NLS-1$
 
+	private static final String FOLLOW_ARTIFACT_REPOSITORY_REFERENCES = "org.eclipse.equinox.p2.director.followArtifactRepositoryReferences"; //$NON-NLS-1$
+
 	/**
 	 * Creates a new provisioning context that includes all available metadata and
 	 * artifact repositories available to the specified provisioning agent.
@@ -101,6 +96,7 @@ public class ProvisioningContext {
 		// null repos means look at them all
 		metadataRepositories = null;
 		artifactRepositories = null;
+		setProperty(FOLLOW_ARTIFACT_REPOSITORY_REFERENCES, Boolean.TRUE.toString());
 	}
 
 	/**
@@ -111,7 +107,6 @@ public class ProvisioningContext {
 	 * @return a queryable that can be used to query available artifact keys.
 	 *
 	 * @see #setArtifactRepositories(URI[])
-	 * @see #FOLLOW_REPOSITORY_REFERENCES
 	 */
 	public IQueryable<IArtifactKey> getArtifactKeys(IProgressMonitor monitor) {
 		return QueryUtil.compoundQueryable(getLoadedArtifactRepositories(monitor));
@@ -125,7 +120,6 @@ public class ProvisioningContext {
 	 * @return a queryable that can be used to query available artifact descriptors.
 	 *
 	 * @see #setArtifactRepositories(URI[])
-	 * @see #FOLLOW_REPOSITORY_REFERENCES
 	 */
 	public IQueryable<IArtifactDescriptor> getArtifactDescriptors(IProgressMonitor monitor) {
 		List<IArtifactRepository> repos = getLoadedArtifactRepositories(monitor);
@@ -144,7 +138,6 @@ public class ProvisioningContext {
 	 * @return a queryable that can be used to query available artifact repositories.
 	 *
 	 * @see #setArtifactRepositories(URI[])
-	 * @see #FOLLOW_REPOSITORY_REFERENCES
 	 */
 	public IQueryable<IArtifactRepository> getArtifactRepositories(IProgressMonitor monitor) {
 		return new ArtifactRepositoryQueryable(getLoadedArtifactRepositories(monitor));
@@ -159,7 +152,7 @@ public class ProvisioningContext {
 		Arrays.sort(repositories, LOCAL_FIRST_COMPARATOR);
 
 		List<IArtifactRepository> repos = new ArrayList<IArtifactRepository>();
-		SubMonitor sub = SubMonitor.convert(monitor, repositories.length * 100);
+		SubMonitor sub = SubMonitor.convert(monitor, (repositories.length + 1) * 100);
 		for (int i = 0; i < repositories.length; i++) {
 			if (sub.isCanceled())
 				throw new OperationCanceledException();
@@ -168,160 +161,109 @@ public class ProvisioningContext {
 			} catch (ProvisionException e) {
 				//skip unreadable repositories
 			}
+			// Remove this URI from the list of extra references if it is there.
+			if (referencedArtifactRepositories != null)
+				referencedArtifactRepositories.remove(repositories[i]);
+		}
+		// Are there any extra artifact repository references to consider?
+		if (referencedArtifactRepositories != null && referencedArtifactRepositories.size() > 0 && shouldFollowArtifactReferences()) {
+			SubMonitor innerSub = SubMonitor.convert(sub.newChild(100), referencedArtifactRepositories.size() * 100);
+			for (URI referencedURI : referencedArtifactRepositories.values()) {
+				try {
+					repos.add(repoManager.loadRepository(referencedURI, innerSub.newChild(100)));
+				} catch (ProvisionException e) {
+					// skip unreadable repositories
+				}
+			}
 		}
-		if (referencedArtifactRepositories != null)
-			for (IArtifactRepository repo : referencedArtifactRepositories.values())
-				repos.add(repo);
 		return repos;
 	}
 
 	private Set<IMetadataRepository> getLoadedMetadataRepositories(IProgressMonitor monitor) {
 		IMetadataRepositoryManager repoManager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
 		URI[] repositories = metadataRepositories == null ? repoManager.getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL) : metadataRepositories;
-		Set<IMetadataRepository> repos = new HashSet<IMetadataRepository>();
-		SubMonitor sub = SubMonitor.convert(monitor, repositories.length * 100 + 100);
-		// We always load the repositories explicitly specified first.  This way, the side effects of loading 
-		// the top level repositories (reading repository references and remembering them in the manager)
-		// are the same regardless of whether we choose to follow those references.
-		for (int i = 0; i < repositories.length; i++) {
-			if (sub.isCanceled())
-				throw new OperationCanceledException();
-			try {
-				repos.add(repoManager.loadRepository(repositories[i], sub.newChild(100)));
-			} catch (ProvisionException e) {
-				//skip unreadable repositories
-			}
-		}
-		if (!shouldFollowReferences()) {
-			sub.done();
-			return repos;
-		}
-		// Those last 100 ticks are now converted to be based on the repository reference following
-		sub = SubMonitor.convert(sub.newChild(100), 100 * repositories.length);
-		// Snapshot the repository state.  Anything else we enable or add as part of traversing references should be
-		// forgotten when we are done.
-		snapShotRepositoryState();
-		// We need to remember the loaded artifact repositories because we will be 
-		// restoring the enable/disable state of the referenced repos in the manager after traversing
-		// the metadata repos.  
-		referencedArtifactRepositories = new HashMap<String, IArtifactRepository>();
 
+		HashMap<String, IMetadataRepository> repos = new HashMap<String, IMetadataRepository>();
+		SubMonitor sub = SubMonitor.convert(monitor, repositories.length * 100);
+
+		// Clear out the list of remembered artifact repositories
+		referencedArtifactRepositories = new HashMap<String, URI>();
 		for (int i = 0; i < repositories.length; i++) {
 			if (sub.isCanceled())
 				throw new OperationCanceledException();
 			loadMetadataRepository(repoManager, repositories[i], repos, shouldFollowReferences(), sub.newChild(100));
 		}
-		restoreRepositoryState();
-		return repos;
+		Set<IMetadataRepository> set = new HashSet<IMetadataRepository>();
+		set.addAll(repos.values());
+		return set;
 	}
 
-	private void snapShotRepositoryState() {
-		metadataRepositorySnapshot = new HashMap<String, IRepositoryReference>();
-		IMetadataRepositoryManager manager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
-		List<URI> all = new ArrayList<URI>();
-		all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL)));
-		all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED)));
-		for (URI location : all) {
-			int options = manager.isEnabled(location) ? IRepository.ENABLED : IRepository.NONE;
-			metadataRepositorySnapshot.put(location.toString(), new RepositoryReference(location, manager.getRepositoryProperty(location, IRepository.PROP_NICKNAME), IRepository.TYPE_METADATA, options));
-		}
-		artifactRepositorySnapshot = new HashMap<String, IRepositoryReference>();
-		IArtifactRepositoryManager artManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
-		all = new ArrayList<URI>();
-		all.addAll(Arrays.asList(artManager.getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL)));
-		all.addAll(Arrays.asList(artManager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED)));
-		for (URI location : all) {
-			int options = artManager.isEnabled(location) ? IRepository.ENABLED : IRepository.NONE;
-			artifactRepositorySnapshot.put(location.toString(), new RepositoryReference(location, artManager.getRepositoryProperty(location, IRepository.PROP_NICKNAME), IRepository.TYPE_ARTIFACT, options));
-		}
-	}
+	private void loadMetadataRepository(IMetadataRepositoryManager manager, URI location, HashMap<String, IMetadataRepository> repos, boolean followMetadataRepoReferences, IProgressMonitor monitor) {
+		// if we've already processed this repo, don't do it again.  This keeps us from getting
+		// caught up in circular references.
+		if (repos.containsKey(location.toString()))
+			return;
 
-	private void restoreRepositoryState() {
-		if (metadataRepositorySnapshot != null) {
-			IMetadataRepositoryManager manager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
-			List<URI> all = new ArrayList<URI>();
-			all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL)));
-			all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED)));
-			for (URI location : all) {
-				IRepositoryReference reference = metadataRepositorySnapshot.get(location.toString());
-				if (reference == null) {
-					manager.removeRepository(location);
-				} else {
-					manager.setEnabled(location, (reference.getOptions() & IRepository.ENABLED) == IRepository.ENABLED);
-					manager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, reference.getNickname());
-					metadataRepositorySnapshot.remove(location);
-				}
-			}
-			// Anything left in the map is no longer known by the manager, so add it back.  (This is not likely)
-			for (IRepositoryReference ref : metadataRepositorySnapshot.values()) {
-				manager.addRepository(ref.getLocation());
-				manager.setEnabled(ref.getLocation(), (ref.getOptions() & IRepository.ENABLED) == IRepository.ENABLED);
-				manager.setRepositoryProperty(ref.getLocation(), IRepository.PROP_NICKNAME, ref.getNickname());
-			}
-			metadataRepositorySnapshot = null;
+		SubMonitor sub = SubMonitor.convert(monitor, 1000);
+		// First load the repository itself.
+		IMetadataRepository repository;
+		try {
+			repository = manager.loadRepository(location, sub.newChild(500));
+		} catch (ProvisionException e) {
+			// nothing more to do
+			return;
 		}
-		if (artifactRepositorySnapshot != null) {
-			IArtifactRepositoryManager manager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
-			List<URI> all = new ArrayList<URI>();
-			all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL)));
-			all.addAll(Arrays.asList(manager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED)));
-			for (URI location : all) {
-				IRepositoryReference reference = artifactRepositorySnapshot.get(location.toString());
-				if (reference == null) {
-					manager.removeRepository(location);
-				} else {
-					manager.setEnabled(location, (reference.getOptions() & IRepository.ENABLED) == IRepository.ENABLED);
-					manager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, reference.getNickname());
-					artifactRepositorySnapshot.remove(location);
+		repos.put(location.toString(), repository);
+		Collection<IRepositoryReference> references = repository.getReferences();
+		// We always load artifact repositories referenced by this repository.  We might load
+		// metadata repositories
+		if (references.size() > 0) {
+			IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
+			SubMonitor repoSubMon = SubMonitor.convert(sub.newChild(500), 100 * references.size());
+			for (IRepositoryReference ref : references) {
+				try {
+					if (ref.getType() == IRepository.TYPE_METADATA && followMetadataRepoReferences && isEnabled(manager, ref)) {
+						loadMetadataRepository(manager, ref.getLocation(), repos, followMetadataRepoReferences, repoSubMon.newChild(100));
+					} else if (ref.getType() == IRepository.TYPE_ARTIFACT) {
+						// We want to remember all enabled artifact repository locations.
+						if (isEnabled(artifactManager, ref))
+							referencedArtifactRepositories.put(ref.getLocation().toString(), ref.getLocation());
+					}
+				} catch (IllegalArgumentException e) {
+					// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=311338
+					// ignore invalid location and keep going
 				}
 			}
-			// Anything left in the map is no longer known by the manager, so add it back. (This is not likely)
-			for (IRepositoryReference ref : artifactRepositorySnapshot.values()) {
-				manager.addRepository(ref.getLocation());
-				manager.setEnabled(ref.getLocation(), (ref.getOptions() & IRepository.ENABLED) == IRepository.ENABLED);
-				manager.setRepositoryProperty(ref.getLocation(), IRepository.PROP_NICKNAME, ref.getNickname());
-			}
-			artifactRepositorySnapshot = null;
+		} else {
+			sub.done();
 		}
+
 	}
 
-	private void loadMetadataRepository(IMetadataRepositoryManager manager, URI location, Set<IMetadataRepository> repos, boolean followReferences, IProgressMonitor monitor) {
-		try {
-			if (!followReferences) {
-				repos.add(manager.loadRepository(location, monitor));
-				return;
-			}
-			// We want to load all repositories referenced by this repository
-			SubMonitor sub = SubMonitor.convert(monitor, 1000);
-			IMetadataRepository repository = manager.loadRepository(location, sub.newChild(500));
-			repos.add(repository);
-			Collection<IRepositoryReference> references = repository.getReferences();
-			if (references.size() > 0) {
-				IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
-				SubMonitor repoSubMon = SubMonitor.convert(sub.newChild(500), 100 * references.size());
-				for (IRepositoryReference ref : references) {
-					if (ref.getType() == IRepository.TYPE_METADATA) {
-						loadMetadataRepository(manager, ref.getLocation(), repos, followReferences, repoSubMon.newChild(100));
-					} else {
-						// keyed by location so that duplicate instances are treated as one.  We can't rely on "equals"
-						referencedArtifactRepositories.put(ref.getLocation().toString(), artifactManager.loadRepository(ref.getLocation(), repoSubMon.newChild(100)));
-					}
-				}
-			} else {
-				sub.done();
-			}
-		} catch (ProvisionException e) {
-			//skip unreadable repositories
-		}
+	// If the manager knows about the repo, consider its enablement state in the manager.
+	// If the manager does not know about the repo, consider the reference enablement state
+	@SuppressWarnings("rawtypes")
+	private boolean isEnabled(IRepositoryManager manager, IRepositoryReference reference) {
+		return (manager.contains(reference.getLocation()) && manager.isEnabled(reference.getLocation())) || ((!manager.contains(reference.getLocation())) && ((reference.getOptions() & IRepository.ENABLED) == IRepository.ENABLED));
 	}
 
 	private boolean shouldFollowReferences() {
 		return Boolean.valueOf(getProperty(FOLLOW_REPOSITORY_REFERENCES)).booleanValue();
 	}
 
+	private boolean shouldFollowArtifactReferences() {
+		return Boolean.valueOf(getProperty(FOLLOW_ARTIFACT_REPOSITORY_REFERENCES)).booleanValue();
+	}
+
 	/**
 	 * Returns a queryable that can be used to obtain any metadata (installable units)
 	 * that are needed for the provisioning operation.
+	 * 
+	 * The provisioning context has a distinct lifecycle, whereby the metadata
+	 * and artifact repositories to be used are determined when the client retrieves
+	 * retrieves the metadata queryable.  Clients should not reset the list of
+	 * metadata repository locations or artifact repository locations once the
+	 * metadata queryable has been retrieved.
 	 *
 	 * @param monitor a progress monitor to be used when creating the queryable
 	 * @return a queryable that can be used to query available metadata.
@@ -368,13 +310,12 @@ public class ProvisioningContext {
 	/**
 	 * Sets the artifact repositories to consult when performing an operation.
 	 * <p>
-	 * When the {@link #FOLLOW_REPOSITORY_REFERENCES} property is set, this
-	 * method should be called prior to calling {@link #getMetadata(IProgressMonitor)},
-	 * because setting the repositories after retrieving metadata will have no
-	 * effect.
+	 * The provisioning context has a distinct lifecycle, whereby the metadata
+	 * and artifact repositories to be used are determined when the client 
+	 * retrieves the metadata queryable.  Clients should not reset the list of
+	 * artifact repository locations once the metadata queryable has been retrieved.
 	 *
 	 * @param artifactRepositories the artifact repository locations
-	 * @see #FOLLOW_REPOSITORY_REFERENCES
 	*/
 	public void setArtifactRepositories(URI[] artifactRepositories) {
 		this.artifactRepositories = artifactRepositories;
@@ -382,6 +323,12 @@ public class ProvisioningContext {
 
 	/**
 	 * Sets the metadata repositories to consult when performing an operation.
+	 * <p>
+	 * The provisioning context has a distinct lifecycle, whereby the metadata
+	 * and artifact repositories to be used are determined when the client 
+	 * retrieves the metadata queryable.  Clients should not reset the list of
+	 * metadata repository locations once the metadata queryable has been retrieved.
+
 	 * @param metadataRepositories the metadata repository locations
 	*/
 	public void setMetadataRepositories(URI[] metadataRepositories) {
@@ -427,8 +374,9 @@ public class ProvisioningContext {
 	 * Return the array of repository locations for artifact repositories.
 	 * @return an array of repository locations.  This is never <code>null</code>.
 	 *
-	 * @deprecated This method will be removed before the final release of 3.6
-	 * @noreference This method will be removed before the final release of 3.6
+	 * @deprecated This method will be removed in the next release.  See https://bugs.eclipse.org/bugs/show_bug.cgi?id=305086
+	 * @noreference This method will be removed in the next release.
+	 * 
 	 * @see #getArtifactRepositories()
 	 * @see #getArtifactDescriptors(IProgressMonitor)
 	 * @see #getArtifactKeys(IProgressMonitor)
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java b/eclipse/plugins/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
index faffa37..74e1307 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2009 IBM Corporation and others.
+ *  Copyright (c) 2008, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -52,12 +52,21 @@ public class SiteListener extends DirectoryChangeListener {
 	private static boolean contains(String[] plugins, File file) {
 		String filename = file.getAbsolutePath();
 		for (int i = 0; i < plugins.length; i++)
-			if (filename.endsWith(new File(plugins[i]).toString()))
+			if (filename.endsWith(plugins[i]))
 				return true;
 		return false;
 	}
 
 	/**
+	 * Converts a list of file names to a normalized form suitable for comparison.
+	 */
+	private String[] normalize(String[] filenames) {
+		for (int i = 0; i < filenames.length; i++)
+			filenames[i] = new File(filenames[i]).toString();
+		return filenames;
+	}
+
+	/**
 	 * Given one repo and a base location, ensure cause the other repo to be loaded and then 
 	 * poll the base location once updating the repositories accordingly.  This method is used to 
 	 * ensure that both the metadata and artifact repos corresponding to one location are 
@@ -116,7 +125,7 @@ public class SiteListener extends DirectoryChangeListener {
 		if (listString != null)
 			for (StringTokenizer tokenizer = new StringTokenizer(listString, ","); tokenizer.hasMoreTokens();) //$NON-NLS-1$
 				listCollection.add(tokenizer.nextToken());
-		this.list = listCollection.toArray(new String[listCollection.size()]);
+		this.list = normalize(listCollection.toArray(new String[listCollection.size()]));
 	}
 
 	/* (non-Javadoc)
@@ -275,7 +284,7 @@ public class SiteListener extends DirectoryChangeListener {
 					result.add(pluginLocation.toString());
 			}
 		}
-		managedFiles = result.toArray(new String[result.size()]);
+		managedFiles = normalize(result.toArray(new String[result.size()]));
 		return managedFiles;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java b/eclipse/plugins/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
index 41656d5..b8ba3c8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
@@ -149,7 +149,7 @@ public class GarbageCollector implements SynchronousProvisioningListener, IAgent
 				uninstallEventProfileId = null;
 			}
 		} else if (o instanceof RollbackOperationEvent) {
-			if (uninstallEventProfileId != null && uninstallEventProfileId.equals(((InstallableUnitEvent) o).getProfile().getProfileId()))
+			if (uninstallEventProfileId != null && uninstallEventProfileId.equals(((RollbackOperationEvent) o).getProfile().getProfileId()))
 				uninstallEventProfileId = null;
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CacheManager.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CacheManager.java
deleted file mode 100644
index 0e4eba8..0000000
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CacheManager.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cloudsmith Inc - additional implementation
- *******************************************************************************/
-package org.eclipse.equinox.internal.p2.metadata.repository;
-
-import org.eclipse.equinox.p2.core.ProvisionException;
-
-import java.io.*;
-import java.net.URI;
-import java.util.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.ecf.filetransfer.UserCancelledException;
-import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
-import org.eclipse.equinox.internal.p2.repository.*;
-import org.eclipse.equinox.internal.p2.repository.Activator;
-import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
-import org.eclipse.equinox.internal.provisional.p2.core.eventbus.SynchronousProvisioningListener;
-import org.eclipse.equinox.internal.provisional.p2.repository.IStateful;
-import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
-import org.eclipse.equinox.p2.core.IAgentLocation;
-import org.eclipse.equinox.p2.repository.IRepository;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A class to manage metadata cache files. Creating the cache files will place
- * the file in the AgentData location in a cache directory.
- * 
- * Using the bus listeners will allow the manager to listen for repository
- * events. When a repository is removed, it will remove the cache file if one
- * was created for the repository.
- */
-public class CacheManager {
-	/**
-	 * Service name for the internal cache manager service.
-	 */
-	public static final String SERVICE_NAME = CacheManager.class.getName();
-
-	private final IAgentLocation agentLocation;
-
-	/**
-	 * IStateful implementation of BufferedOutputStream. Class is used to get the status from
-	 * a download operation.
-	 */
-	private static class StatefulStream extends BufferedOutputStream implements IStateful {
-		private IStatus status;
-
-		public StatefulStream(OutputStream stream) {
-			super(stream);
-		}
-
-		public IStatus getStatus() {
-
-			return status;
-		}
-
-		public void setStatus(IStatus aStatus) {
-			status = aStatus;
-		}
-
-	}
-
-	public CacheManager(IAgentLocation agentLocation) {
-		this.agentLocation = agentLocation;
-	}
-
-	private static SynchronousProvisioningListener busListener;
-	private static final String DOWNLOADING = "downloading"; //$NON-NLS-1$
-	private static final String JAR_EXTENSION = ".jar"; //$NON-NLS-1$
-	private static final String PROP_RESUMABLE = "org.eclipse.equinox.p2.metadata.repository.resumable"; //$NON-NLS-1$
-	private static final String RESUME_DEFAULT = "true"; //$NON-NLS-1$
-	private static final String XML_EXTENSION = ".xml"; //$NON-NLS-1$
-
-	private final HashSet<String> knownPrefixes = new HashSet<String>(5);
-
-	/**
-	 * Returns a hash of the repository location.
-	 */
-	private int computeHash(URI repositoryLocation) {
-		return repositoryLocation.hashCode();
-	}
-
-	/**
-	 * Returns a local cache file with the contents of the given remote location,
-	 * or <code>null</code> if a local cache could not be created.
-	 * 
-	 * @param repositoryLocation The remote location to be cached
-	 * @param prefix The prefix to use when creating the cache file
-	 * @param monitor a progress monitor
-	 * @return A {@link File} object pointing to the cache file or <code>null</code>
-	 * if the location is not a repository.
-	 * @throws FileNotFoundException if neither jar nor xml index file exists at given location 
-	 * @throws AuthenticationFailedException if jar not available and xml causes authentication fail
-	 * @throws IOException on general IO errors
-	 * @throws ProvisionException on any error (e.g. user cancellation, unknown host, malformed address, connection refused, etc.)
-	 * @throws OperationCanceledException - if user canceled
-	 */
-	public File createCache(URI repositoryLocation, String prefix, IProgressMonitor monitor) throws IOException, ProvisionException {
-
-		SubMonitor submonitor = SubMonitor.convert(monitor, 1000);
-		try {
-			knownPrefixes.add(prefix);
-			File cacheFile = getCache(repositoryLocation, prefix);
-			URI jarLocation = URIUtil.append(repositoryLocation, prefix + JAR_EXTENSION);
-			URI xmlLocation = URIUtil.append(repositoryLocation, prefix + XML_EXTENSION);
-			int hashCode = computeHash(repositoryLocation);
-
-			// Knowing if cache is stale is complicated by the fact that a jar could have been 
-			// produced after an xml index (and vice versa), and by the need to capture any
-			// errors, as these needs to be reported to the user as something meaningful - instead of
-			// just a general "can't read repository".
-			// (Previous impl of stale checking ignored errors, and caused multiple round-trips)
-			boolean stale = true;
-			long lastModified = 0L;
-			String name = null;
-			String useExtension = JAR_EXTENSION;
-			URI remoteFile = jarLocation;
-
-			if (cacheFile != null) {
-				lastModified = cacheFile.lastModified();
-				name = cacheFile.getName();
-			}
-			// get last modified on jar
-			long lastModifiedRemote = 0L;
-			// bug 269588 - server may return 0 when file exists, so extra flag is needed
-			boolean useJar = true;
-			try {
-				lastModifiedRemote = getTransport().getLastModified(jarLocation, submonitor.newChild(1));
-				if (lastModifiedRemote <= 0)
-					LogHelper.log(new Status(IStatus.WARNING, Activator.ID, "Server returned lastModified <= 0 for " + jarLocation)); //$NON-NLS-1$
-			} catch (AuthenticationFailedException e) {
-				// it is not meaningful to continue - the credentials are for the server
-				// do not pass the exception - it gives no additional meaningful user information
-				throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_AUTHENTICATION, NLS.bind(Messages.CacheManager_AuthenticationFaileFor_0, repositoryLocation), null));
-			} catch (CoreException e) {
-				useJar = false;
-				// give up on a timeout - if we did not get a 404 on the jar, we will just prolong the pain
-				// by (almost certainly) also timing out on the xml.
-				if (e.getStatus() != null && e.getStatus().getException() != null) {
-					Throwable ex = e.getStatus().getException();
-					if (ex.getClass() == java.net.SocketTimeoutException.class)
-						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_READ, NLS.bind(Messages.CacheManager_FailedCommunicationWithRepo_0, repositoryLocation), ex));
-				}
-			} catch (OperationCanceledException e) {
-				// must pass this on
-				throw e;
-			} catch (Exception e) {
-				// not ideal, just skip the jar on error, and try the xml instead - report errors for
-				// the xml.
-				useJar = false;
-			}
-			if (submonitor.isCanceled())
-				throw new OperationCanceledException();
-
-			if (useJar) {
-				// There is a jar, and it should be used - cache is stale if it is xml based or
-				// if older (irrespective of jar or xml).
-				// Bug 269588 - also stale if remote reports 0
-				stale = lastModifiedRemote > lastModified || (name != null && name.endsWith(XML_EXTENSION) || lastModifiedRemote <= 0);
-			} else {
-				// Also need to check remote XML file, and handle cancel, and errors
-				// (Status is reported based on finding the XML file as giving up on certain errors
-				// when checking for the jar may not be correct).
-				try {
-					lastModifiedRemote = getTransport().getLastModified(xmlLocation, submonitor.newChild(1));
-					// if lastModifiedRemote is 0 - something is wrong in the communication stack, as 
-					// a FileNotFound exception should have been thrown.
-					// bug 269588 - server may return 0 when file exists - site is not correctly configured
-					if (lastModifiedRemote <= 0)
-						LogHelper.log(new Status(IStatus.WARNING, Activator.ID, "Server returned lastModified <= 0 for " + xmlLocation)); //$NON-NLS-1$
-
-				} catch (UserCancelledException e) {
-					throw new OperationCanceledException();
-				} catch (FileNotFoundException e) {
-					throw new FileNotFoundException(NLS.bind(Messages.CacheManager_Neither_0_nor_1_found, jarLocation, xmlLocation));
-				} catch (AuthenticationFailedException e) {
-					// do not pass the exception, it provides no additional meaningful user information
-					throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_AUTHENTICATION, NLS.bind(Messages.CacheManager_AuthenticationFaileFor_0, repositoryLocation), null));
-				} catch (CoreException e) {
-					IStatus status = e.getStatus();
-					if (status == null)
-						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, NLS.bind(Messages.CacheManager_FailedCommunicationWithRepo_0, repositoryLocation), e));
-					else if (status.getException() instanceof FileNotFoundException)
-						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, status.getMessage(), null));
-					throw new ProvisionException(status);
-
-				}
-				// There is an xml, and it should be used - cache is stale if it is jar based or
-				// if older (irrespective of jar or xml).
-				// bug 269588 - server may return 0 when file exists - assume it is stale
-				stale = lastModifiedRemote > lastModified || (name != null && name.endsWith(JAR_EXTENSION) || lastModifiedRemote <= 0);
-				useExtension = XML_EXTENSION;
-				remoteFile = xmlLocation;
-			}
-
-			if (!stale)
-				return cacheFile;
-
-			// The cache is stale or missing, so we need to update it from the remote location
-			cacheFile = new File(getCacheDirectory(), prefix + hashCode + useExtension);
-			updateCache(cacheFile, remoteFile, lastModifiedRemote, submonitor);
-			return cacheFile;
-		} finally {
-			submonitor.done();
-		}
-	}
-
-	/**
-	 * Deletes the local cache file(s) for the given repository
-	 * @param repositoryLocation
-	 */
-	void deleteCache(URI repositoryLocation) {
-		for (String prefix : knownPrefixes) {
-			File[] cacheFiles = getCacheFiles(repositoryLocation, prefix);
-			for (int i = 0; i < cacheFiles.length; i++) {
-				// delete the cache file if it exists
-				safeDelete(cacheFiles[i]);
-				// delete a resumable download if it exists
-				safeDelete(new File(new File(cacheFiles[i].getParentFile(), DOWNLOADING), cacheFiles[i].getName()));
-			}
-		}
-	}
-
-	/**
-	 * Determines the local file path of the repository's cache file.
-	 * @param repositoryLocation The location to compute the cache for
-	 * @param prefix The prefix to use for this location
-	 * @return A {@link File} pointing to the cache file or <code>null</code> if
-	 * the cache file does not exist.
-	 */
-	private File getCache(URI repositoryLocation, String prefix) {
-		File[] files = getCacheFiles(repositoryLocation, prefix);
-		if (files[0].exists())
-			return files[0];
-		return files[1].exists() ? files[1] : null;
-	}
-
-	/**
-	 * Returns the file corresponding to the data area to be used by the cache manager.
-	 */
-	private File getCacheDirectory() {
-		return URIUtil.toFile(agentLocation.getDataArea(Activator.ID + "/cache/")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Determines the local file paths of the repository's potential cache files.
-	 * @param repositoryLocation The location to compute the cache for
-	 * @param prefix The prefix to use for this location
-	 * @return A {@link File} array with the cache files for JAR and XML extensions.
-	 */
-	private File[] getCacheFiles(URI repositoryLocation, String prefix) {
-		File[] files = new File[2];
-		File dataAreaFile = getCacheDirectory();
-		int hashCode = computeHash(repositoryLocation);
-		files[0] = new File(dataAreaFile, prefix + hashCode + JAR_EXTENSION);
-		files[1] = new File(dataAreaFile, prefix + hashCode + XML_EXTENSION);
-		return files;
-	}
-
-	private RepositoryTransport getTransport() {
-		return RepositoryTransport.getInstance();
-	}
-
-	private boolean isResumeEnabled() {
-		String resumeProp = System.getProperty(PROP_RESUMABLE, RESUME_DEFAULT);
-		return Boolean.valueOf(resumeProp).booleanValue();
-	}
-
-	/**
-	 * Make cacheFile resumable and return true if it was possible.
-	 * @param cacheFile - the partially downloaded file to make resumeable
-	 * @param remoteFile The remote file being cached
-	 * @param status - the download status reported for the partial download
-	 * @return true if the file was made resumable, false otherwise
-	 */
-	private boolean makeResumeable(File cacheFile, URI remoteFile, IStatus status) {
-		if (status == null || status.isOK() || cacheFile == null || !(status instanceof DownloadStatus))
-			return false;
-		// check if resume feature is turned off
-		if (!isResumeEnabled())
-			return false;
-		DownloadStatus downloadStatus = (DownloadStatus) status;
-		long currentLength = cacheFile.length();
-		// if cache file does not exist, or nothing was written to it, there is nothing to resume
-		if (currentLength == 0L)
-			return false;
-
-		long reportedSize = downloadStatus.getFileSize();
-		long reportedModified = downloadStatus.getLastModified();
-
-		if (reportedSize == DownloadStatus.UNKNOWN_SIZE || reportedSize == 0L) {
-			LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind("Download of {0} not resumable because filesize not reported.", remoteFile))); //$NON-NLS-1$
-			return false;
-		}
-		if (reportedModified <= 0) {
-			LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind("Download of {0} not resumable because last-modified not reported.", remoteFile))); //$NON-NLS-1$
-			return false;
-		}
-
-		// if more than what was reported has been written something odd is going on, and we can't
-		// trust the reported size. 
-		// There is a small chance that user canceled in the time window after the full download is seen, and the result is returned. In this
-		// case the reported and current lengths will be equal.
-		if (reportedSize < currentLength) {
-			LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind("Download of {0} not resumable because more was read then reported size.", remoteFile))); //$NON-NLS-1$
-			return false;
-		}
-		File resumeDir = new File(cacheFile.getParentFile(), DOWNLOADING);
-		if (!resumeDir.mkdir()) {
-			if (!(resumeDir.exists() && resumeDir.isDirectory())) {
-				LogHelper.log(new Status(IStatus.ERROR, Activator.ID, NLS.bind("Could not create directory {0} for resumable download of {1}", resumeDir, remoteFile))); //$NON-NLS-1$
-				return false;
-			}
-		}
-		// move partial cache file to "downloading" directory
-		File resumeFile = new File(resumeDir, cacheFile.getName());
-		if (!cacheFile.renameTo(resumeFile)) {
-			LogHelper.log(new Status(IStatus.ERROR, Activator.ID, NLS.bind("Could not move {0} to {1} for resumed download", cacheFile, resumeFile))); //$NON-NLS-1$
-			return false;
-		}
-		// touch the file with remote modified time
-		if (!resumeFile.setLastModified(reportedModified)) {
-			LogHelper.log(new Status(IStatus.ERROR, Activator.ID, NLS.bind("Could not set last modified time on {0} for resumed download", resumeFile))); //$NON-NLS-1$
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Adds a {@link SynchronousProvisioningListener} to the event bus for
-	 * deleting cache files when the corresponding repository is deleted.
-	 */
-	private void registerRepoEventListener(IProvisioningEventBus eventBus) {
-		if (busListener == null) {
-			busListener = new SynchronousProvisioningListener() {
-				public void notify(EventObject o) {
-					if (o instanceof RepositoryEvent) {
-						RepositoryEvent event = (RepositoryEvent) o;
-						if (RepositoryEvent.REMOVED == event.getKind() && IRepository.TYPE_METADATA == event.getRepositoryType()) {
-							deleteCache(event.getRepositoryLocation());
-						}
-					}
-				}
-			};
-		}
-		// the bus could have disappeared and is now back again - so do this every time
-		eventBus.addListener(busListener);
-	}
-
-	private boolean safeDelete(File file) {
-		if (file.exists()) {
-			if (!file.delete()) {
-				file.deleteOnExit();
-				return true;
-			}
-		}
-		return false;
-	}
-
-	public void setEventBus(IProvisioningEventBus newBus) {
-		registerRepoEventListener(newBus);
-	}
-
-	public void unsetEventBus(IProvisioningEventBus oldBus) {
-		unregisterRepoEventListener(oldBus);
-	}
-
-	/**
-	 * Removes the {@link SynchronousProvisioningListener} that cleans up the
-	 * cache file from the event bus.
-	 */
-	private void unregisterRepoEventListener(IProvisioningEventBus bus) {
-		if (bus != null && busListener != null)
-			bus.removeListener(busListener);
-	}
-
-	private void updateCache(File cacheFile, URI remoteFile, long lastModifiedRemote, SubMonitor submonitor) throws FileNotFoundException, IOException, ProvisionException {
-		cacheFile.getParentFile().mkdirs();
-		File resumeFile = new File(new File(cacheFile.getParentFile(), DOWNLOADING), cacheFile.getName());
-		// if append should be performed or not
-		boolean append = false;
-		if (resumeFile.exists()) {
-			// the resume file can be too old
-			if (lastModifiedRemote != resumeFile.lastModified() || lastModifiedRemote <= 0)
-				safeDelete(resumeFile);
-			else {
-				if (resumeFile.renameTo(cacheFile))
-					append = true;
-				else
-					LogHelper.log(new Status(IStatus.ERROR, Activator.ID, NLS.bind("Could not move resumable file {0} into cache", resumeFile))); //$NON-NLS-1$
-			}
-		}
-
-		StatefulStream metadata = new StatefulStream(new FileOutputStream(cacheFile, append));
-		IStatus result = null;
-		try {
-			submonitor.setWorkRemaining(1000);
-			// resume from cache file's length if in append mode
-			result = getTransport().download(remoteFile, metadata, append ? cacheFile.length() : -1, submonitor.newChild(1000));
-		} catch (OperationCanceledException e) {
-			// need to pick up the status - a new operation canceled exception is thrown at the end
-			// as status will be CANCEL.
-			result = metadata.getStatus();
-		} finally {
-			metadata.close();
-			// result is null if a runtime error (other than OperationCanceledException) 
-			// occurred, just delete the cache file (or a later attempt could fail 
-			// with "premature end of file").
-			if (result == null)
-				cacheFile.delete();
-		}
-		if (result.isOK())
-			return;
-
-		// if possible, keep a partial download to be resumed.
-		if (!makeResumeable(cacheFile, remoteFile, result))
-			cacheFile.delete();
-
-		if (result.getSeverity() == IStatus.CANCEL || submonitor.isCanceled())
-			throw new OperationCanceledException();
-		throw new ProvisionException(result);
-	}
-}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepositoryFactory.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepositoryFactory.java
index bcfa455..0c5d3c3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepositoryFactory.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepositoryFactory.java
@@ -7,9 +7,12 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.metadata.repository;
 
+import org.eclipse.equinox.internal.p2.repository.CacheManager;
+
 import java.io.*;
 import java.net.URI;
 import java.util.Map;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
index 534681f..6f848b1 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
@@ -31,8 +31,7 @@ import org.eclipse.equinox.p2.metadata.index.IIndex;
 import org.eclipse.equinox.p2.metadata.index.IIndexProvider;
 import org.eclipse.equinox.p2.query.IQuery;
 import org.eclipse.equinox.p2.query.IQueryResult;
-import org.eclipse.equinox.p2.repository.IRepository;
-import org.eclipse.equinox.p2.repository.IRepositoryReference;
+import org.eclipse.equinox.p2.repository.*;
 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
 import org.eclipse.equinox.p2.repository.metadata.spi.AbstractMetadataRepository;
 
@@ -55,6 +54,7 @@ public class LocalMetadataRepository extends AbstractMetadataRepository implemen
 	private IIndex<IInstallableUnit> capabilityIndex;
 	private TranslationSupport translationSupport;
 	private boolean snapshotNeeded = false;
+	private boolean disableSave = false;
 
 	private static File getActualLocation(URI location, String extension) {
 		File spec = URIUtil.toFile(location);
@@ -266,7 +266,14 @@ public class LocalMetadataRepository extends AbstractMetadataRepository implemen
 	}
 
 	// caller should be synchronized
-	private void save() {
+	/**
+	 * Marking protected so we can test.  This is internal, so it shouldn't matter, but I'll
+	 * mark it as no override just to be clear.
+	 * @nooverride This method is not intended to be re-implemented or extended by clients.
+	 */
+	protected void save() {
+		if (disableSave)
+			return;
 		File file = getActualLocation(getLocation());
 		File jarFile = getActualLocation(getLocation(), JAR_EXTENSION);
 		boolean compress = "true".equalsIgnoreCase(getProperty(PROP_COMPRESSED)); //$NON-NLS-1$
@@ -322,4 +329,31 @@ public class LocalMetadataRepository extends AbstractMetadataRepository implemen
 		return oldValue;
 	}
 
+	public IStatus executeBatch(IRunnableWithProgress runnable, IProgressMonitor monitor) {
+		IStatus result = null;
+		synchronized (this) {
+			try {
+				disableSave = true;
+				runnable.run(monitor);
+			} catch (OperationCanceledException oce) {
+				return new Status(IStatus.CANCEL, Activator.ID, oce.getMessage(), oce);
+			} catch (Throwable e) {
+				result = new Status(IStatus.ERROR, Activator.ID, e.getMessage(), e);
+			} finally {
+				disableSave = false;
+				try {
+					save();
+				} catch (Exception e) {
+					if (result != null)
+						result = new MultiStatus(Activator.ID, IStatus.ERROR, new IStatus[] {result}, e.getMessage(), e);
+					else
+						result = new Status(IStatus.ERROR, Activator.ID, e.getMessage(), e);
+				}
+			}
+		}
+		if (result == null)
+			result = Status.OK_STATUS;
+		return result;
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/Messages.java
index d243483..c764e06 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/Messages.java
@@ -5,6 +5,7 @@
  * available at http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors: IBM Corporation - initial API and implementation
+ * Sonatype Inc - ongoing development
  ******************************************************************************/
 package org.eclipse.equinox.internal.p2.metadata.repository;
 
@@ -22,9 +23,6 @@ public class Messages extends NLS {
 		// Do not instantiate
 	}
 
-	public static String CacheManager_AuthenticationFaileFor_0;
-	public static String CacheManager_FailedCommunicationWithRepo_0;
-	public static String CacheManager_Neither_0_nor_1_found;
 	public static String io_failedRead;
 	public static String io_failedWrite;
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java
index b89db69..7cb5c05 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java
@@ -7,11 +7,10 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.metadata.repository;
 
-import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
-import org.eclipse.equinox.p2.core.IAgentLocation;
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
 import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
@@ -22,12 +21,6 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
 public class MetadataRepositoryComponent implements IAgentServiceFactory {
 
 	public Object createService(IProvisioningAgent agent) {
-		MetadataRepositoryManager manager = new MetadataRepositoryManager(agent);
-		final IProvisioningEventBus eventBus = (IProvisioningEventBus) agent.getService(IProvisioningEventBus.SERVICE_NAME);
-		CacheManager cache = new CacheManager((IAgentLocation) agent.getService(IAgentLocation.SERVICE_NAME));
-		cache.setEventBus(eventBus);
-		agent.registerService(CacheManager.SERVICE_NAME, cache);
-		return manager;
+		return new MetadataRepositoryManager(agent);
 	}
-
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/SimpleMetadataRepositoryFactory.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/SimpleMetadataRepositoryFactory.java
index ee5c3e2..4f98f6e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/SimpleMetadataRepositoryFactory.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/SimpleMetadataRepositoryFactory.java
@@ -7,9 +7,12 @@
  * 
  *  Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.metadata.repository;
 
+import org.eclipse.equinox.internal.p2.repository.CacheManager;
+
 import java.io.*;
 import java.net.URI;
 import java.util.Map;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
index 050e091..390dbea 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
@@ -634,18 +634,7 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
 			String description = descriptionHandler == null ? null : descriptionHandler.getText();
 			IRequirement requirement;
 			if (match != null) {
-				IExpressionFactory factory = ExpressionUtil.getFactory();
-				IExpression expr = ExpressionUtil.parse(match);
-				Object[] params;
-				if (matchParams == null)
-					params = new Object[0];
-				else {
-					IExpression[] arrayExpr = ExpressionUtil.getOperands(ExpressionUtil.parse(matchParams));
-					params = new Object[arrayExpr.length];
-					for (int idx = 0; idx < arrayExpr.length; ++idx)
-						params[idx] = arrayExpr[idx].evaluate(null);
-				}
-				IMatchExpression<IInstallableUnit> matchExpr = factory.matchExpression(expr, params);
+				IMatchExpression<IInstallableUnit> matchExpr = createMatchExpression(match, matchParams);
 				requirement = MetadataFactory.createRequirement(matchExpr, filter, min, max, greedy, description);
 			} else
 				requirement = MetadataFactory.createRequirement(namespace, name, range, filter, min, max, greedy, description);
@@ -803,18 +792,46 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
 	}
 
 	protected class UpdateDescriptorHandler extends TextHandler {
-		private final String[] required = new String[] {ID_ATTRIBUTE, VERSION_RANGE_ATTRIBUTE};
-		private final String[] optional = new String[] {UPDATE_DESCRIPTOR_SEVERITY, DESCRIPTION_ATTRIBUTE};
+		private final String[] requiredSimple = new String[] {ID_ATTRIBUTE, VERSION_RANGE_ATTRIBUTE};
+		private final String[] optionalSimple = new String[] {UPDATE_DESCRIPTOR_SEVERITY, DESCRIPTION_ATTRIBUTE};
+
+		private final String[] requiredComplex = new String[] {MATCH_ATTRIBUTE};
+		private final String[] optionalComplex = new String[] {UPDATE_DESCRIPTOR_SEVERITY, DESCRIPTION_ATTRIBUTE, MATCH_PARAMETERS_ATTRIBUTE};
 
 		private IUpdateDescriptor descriptor;
 
 		public UpdateDescriptorHandler(AbstractHandler parentHandler, Attributes attributes) {
 			super(parentHandler, INSTALLABLE_UNIT_ELEMENT);
-			String[] values = parseAttributes(attributes, required, optional);
-			VersionRange range = checkVersionRange(REQUIREMENT_ELEMENT, VERSION_RANGE_ATTRIBUTE, values[1]);
-			int severity = new Integer(values[2]).intValue();
+			boolean simple = attributes.getIndex(ID_ATTRIBUTE) >= 0;
+			String[] values;
+			int severityIdx;
+			String description;
+			if (simple) {
+				values = parseAttributes(attributes, requiredSimple, optionalSimple);
+				severityIdx = 2;
+				description = values[3];
+			} else {
+				values = parseAttributes(attributes, requiredComplex, optionalComplex);
+				severityIdx = 1;
+				description = values[2];
+			}
+
+			int severity;
+			try {
+				severity = new Integer(values[severityIdx]).intValue();
+			} catch (NumberFormatException e) {
+				invalidAttributeValue(UPDATE_DESCRIPTOR_ELEMENT, UPDATE_DESCRIPTOR_SEVERITY, values[severityIdx]);
+				severity = IUpdateDescriptor.NORMAL;
+			}
 			URI location = parseURIAttribute(attributes, false);
-			descriptor = MetadataFactory.createUpdateDescriptor(values[0], range, severity, values[3], location);
+
+			if (simple) {
+				VersionRange range = checkVersionRange(REQUIREMENT_ELEMENT, VERSION_RANGE_ATTRIBUTE, values[1]);
+				descriptor = MetadataFactory.createUpdateDescriptor(values[0], range, severity, description, location);
+			} else {
+				IMatchExpression<IInstallableUnit> r = createMatchExpression(values[0], values[3]);
+				descriptor = MetadataFactory.createUpdateDescriptor(Collections.singleton(r), severity, description, location);
+			}
 		}
 
 		public IUpdateDescriptor getUpdateDescriptor() {
@@ -899,4 +916,19 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
 			return copyright;
 		}
 	}
+
+	static IMatchExpression<IInstallableUnit> createMatchExpression(String match, String matchParams) {
+		IExpressionFactory factory = ExpressionUtil.getFactory();
+		IExpression expr = ExpressionUtil.parse(match);
+		Object[] params;
+		if (matchParams == null)
+			params = new Object[0];
+		else {
+			IExpression[] arrayExpr = ExpressionUtil.getOperands(ExpressionUtil.parse(matchParams));
+			params = new Object[arrayExpr.length];
+			for (int idx = 0; idx < arrayExpr.length; ++idx)
+				params[idx] = arrayExpr[idx].evaluate(null);
+		}
+		return factory.matchExpression(expr, params);
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
index 36492a9..98ff47f 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
@@ -75,7 +75,13 @@ public abstract class MetadataWriter extends XMLWriter implements XMLConstants {
 		writeProperties(iu.getProperties());
 		writeMetaRequirements(iu.getMetaRequirements());
 		writeProvidedCapabilities(iu.getProvidedCapabilities());
-		writeRequirements(iu.getRequirements());
+		if (simpleRequirements && iu instanceof IInstallableUnitFragment) {
+			Collection<IRequirement> mergedRequirementsAndFragmentHostForPre36Compatibility = new LinkedHashSet<IRequirement>(iu.getRequirements());
+			mergedRequirementsAndFragmentHostForPre36Compatibility.addAll(((IInstallableUnitFragment) iu).getHost());
+			writeRequirements(mergedRequirementsAndFragmentHostForPre36Compatibility);
+		} else {
+			writeRequirements(iu.getRequirements());
+		}
 		writeTrimmedCdata(IU_FILTER_ELEMENT, iu.getFilter() == null ? null : iu.getFilter().getParameters()[0].toString());
 
 		writeArtifactKeys(iu.getArtifacts());
@@ -89,11 +95,18 @@ public abstract class MetadataWriter extends XMLWriter implements XMLConstants {
 
 	private boolean hasOnlySimpleRequirements(IInstallableUnit iu) {
 		for (IRequirement r : iu.getRequirements())
-			if (!RequiredCapability.isSimpleRequirement(r.getMatches()))
+			if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches()))
 				return false;
 
+		if (iu.getUpdateDescriptor() != null) {
+			for (IMatchExpression<IInstallableUnit> m : iu.getUpdateDescriptor().getIUsBeingUpdated()) {
+				if (!RequiredCapability.isSimpleRequirement(m))
+					return false;
+			}
+		}
+		
 		for (IRequirement r : iu.getMetaRequirements())
-			if (!RequiredCapability.isSimpleRequirement(r.getMatches()))
+			if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches()))
 				return false;
 
 		if (iu instanceof IInstallableUnitFragment) {
@@ -180,8 +193,12 @@ public abstract class MetadataWriter extends XMLWriter implements XMLConstants {
 			throw new IllegalStateException();
 		IMatchExpression<IInstallableUnit> singleUD = descriptor.getIUsBeingUpdated().iterator().next();
 		start(UPDATE_DESCRIPTOR_ELEMENT);
-		attribute(ID_ATTRIBUTE, RequiredCapability.extractName(singleUD));
-		attribute(VERSION_RANGE_ATTRIBUTE, RequiredCapability.extractRange(singleUD));
+		if (RequiredCapability.isSimpleRequirement(singleUD)) {
+			attribute(ID_ATTRIBUTE, RequiredCapability.extractName(singleUD));
+			attribute(VERSION_RANGE_ATTRIBUTE, RequiredCapability.extractRange(singleUD));
+		} else {
+			writeMatchExpression(singleUD);
+		}
 		attribute(UPDATE_DESCRIPTOR_SEVERITY, descriptor.getSeverity());
 		attribute(DESCRIPTION_ATTRIBUTE, descriptor.getDescription());
 		end(UPDATE_DESCRIPTOR_ELEMENT);
@@ -223,22 +240,14 @@ public abstract class MetadataWriter extends XMLWriter implements XMLConstants {
 	protected void writeRequirement(IRequirement requirement) {
 		start(REQUIREMENT_ELEMENT);
 		IMatchExpression<IInstallableUnit> match = requirement.getMatches();
-		if (RequiredCapability.isSimpleRequirement(match)) {
+		if (requirement.getMax() > 0 && RequiredCapability.isSimpleRequirement(match)) {
 			attribute(NAMESPACE_ATTRIBUTE, RequiredCapability.extractNamespace(match));
 			attribute(NAME_ATTRIBUTE, RequiredCapability.extractName(match));
 			attribute(VERSION_RANGE_ATTRIBUTE, RequiredCapability.extractRange(match));
 			attribute(CAPABILITY_OPTIONAL_ATTRIBUTE, requirement.getMin() == 0, false);
 			attribute(CAPABILITY_MULTIPLE_ATTRIBUTE, requirement.getMax() > 1, false);
 		} else {
-			attribute(MATCH_ATTRIBUTE, ExpressionUtil.getOperand(match));
-			Object[] params = match.getParameters();
-			if (params.length > 0) {
-				IExpressionFactory factory = ExpressionUtil.getFactory();
-				IExpression[] constantArray = new IExpression[params.length];
-				for (int idx = 0; idx < params.length; ++idx)
-					constantArray[idx] = factory.constant(params[idx]);
-				attribute(MATCH_PARAMETERS_ATTRIBUTE, factory.array(constantArray));
-			}
+			writeMatchExpression(match);
 			if (requirement.getMin() != 1)
 				attribute(MIN_ATTRIBUTE, requirement.getMin());
 			if (requirement.getMax() != 1)
@@ -252,6 +261,18 @@ public abstract class MetadataWriter extends XMLWriter implements XMLConstants {
 		end(REQUIREMENT_ELEMENT);
 	}
 
+	private void writeMatchExpression(IMatchExpression<IInstallableUnit> match) {
+		attribute(MATCH_ATTRIBUTE, ExpressionUtil.getOperand(match));
+		Object[] params = match.getParameters();
+		if (params.length > 0) {
+			IExpressionFactory factory = ExpressionUtil.getFactory();
+			IExpression[] constantArray = new IExpression[params.length];
+			for (int idx = 0; idx < params.length; ++idx)
+				constantArray[idx] = factory.constant(params[idx]);
+			attribute(MATCH_PARAMETERS_ATTRIBUTE, factory.array(constantArray));
+		}
+	}
+
 	protected void writeArtifactKeys(Collection<IArtifactKey> artifactKeys) {
 		if (artifactKeys != null && artifactKeys.size() > 0) {
 			start(ARTIFACT_KEYS_ELEMENT);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/messages.properties
index 01aff08..eae8344 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/messages.properties
@@ -17,6 +17,3 @@ repo_loading = Loading the repository {0}.
 no_provisioning_agent=Unable to acquire provisioning agent service.
 repoMan_internalError=Internal error.
 repoMan_invalidLocation={0} is not a valid repository location.
-CacheManager_Neither_0_nor_1_found=Neither {0} nor {1} found.
-CacheManager_AuthenticationFaileFor_0=Authentication failed for {0}.
-CacheManager_FailedCommunicationWithRepo_0=Communication with repository at {0} failed.
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/IUMap.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/IUMap.java
index e3af928..99d7b75 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/IUMap.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/IUMap.java
@@ -191,8 +191,9 @@ public class IUMap implements Cloneable {
 		if (matching == null)
 			return;
 
-		if (matching instanceof IInstallableUnit && matching.equals(unit)) {
-			units.remove(key);
+		if (matching instanceof IInstallableUnit) {
+			if (matching.equals(unit))
+				units.remove(key);
 			return;
 		}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitFragment.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitFragment.java
index 72dd2b3..33e8bb4 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitFragment.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitFragment.java
@@ -11,7 +11,6 @@
 package org.eclipse.equinox.internal.p2.metadata;
 
 import java.util.Collection;
-import java.util.List;
 import org.eclipse.equinox.p2.metadata.IInstallableUnitFragment;
 import org.eclipse.equinox.p2.metadata.IRequirement;
 
@@ -27,19 +26,6 @@ public class InstallableUnitFragment extends InstallableUnit implements IInstall
 		if (hostRequirements == null)
 			return;
 		this.hostRequirements = hostRequirements;
-		addRequiredCapability(hostRequirements);
-	}
-
-	private void addRequiredCapability(Collection<IRequirement> toAdd) {
-		List<IRequirement> current = super.getRequirements();
-		int currSize = current.size();
-		IRequirement[] result = new IRequirement[currSize + toAdd.size()];
-		int i = 0;
-		for (; i < currSize; ++i)
-			result[i] = current.get(i);
-		for (IRequirement requirement : toAdd)
-			result[i++] = requirement;
-		setRequiredCapabilities(result);
 	}
 
 	public Collection<IRequirement> getHost() {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/OSGiVersion.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/OSGiVersion.java
index 1477a3d..5704d4d 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/OSGiVersion.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/OSGiVersion.java
@@ -88,6 +88,9 @@ public class OSGiVersion extends BasicVersion {
 		this.micro = micro;
 		if (!isValidOSGiQualifier(qualifier))
 			throw new IllegalArgumentException(NLS.bind(Messages._0_is_not_a_valid_qualifier_in_osgi_1, "qualifier", this)); //$NON-NLS-1$
+		//intern the qualifier string to avoid duplication
+		if (qualifier instanceof String)
+			qualifier = ((String) qualifier).intern();
 		this.qualifier = qualifier;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Binary.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Binary.java
index f4f7da5..546ebf5 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Binary.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Binary.java
@@ -132,4 +132,8 @@ public abstract class Binary extends Expression {
 		}
 		throw new UnsupportedOperationException();
 	}
+
+	int countAccessToEverything() {
+		return lhs.countAccessToEverything() + rhs.countAccessToEverything();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
index f4d3201..5a1e43f 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
@@ -127,4 +127,8 @@ public abstract class CollectionFilter extends Unary {
 			((Variable) operand).setValue(context, itor);
 		return itor;
 	}
+
+	int countAccessToEverything() {
+		return operand.countAccessToEverything() + lambda.countAccessToEverything();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/ContextExpression.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/ContextExpression.java
index f73dfe2..a574311 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/ContextExpression.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/ContextExpression.java
@@ -51,6 +51,10 @@ public class ContextExpression<T> extends Unary implements IContextExpression<T>
 		return context;
 	}
 
+	public Object evaluate(IEvaluationContext context) {
+		return operand.evaluate(parameters.length == 0 ? context : EvaluationContext.create(context, parameters));
+	}
+
 	public int getExpressionType() {
 		return 0;
 	}
@@ -73,7 +77,7 @@ public class ContextExpression<T> extends Unary implements IContextExpression<T>
 
 	@SuppressWarnings("unchecked")
 	public Iterator<T> iterator(IEvaluationContext context) {
-		return (Iterator<T>) evaluateAsIterator(context);
+		return (Iterator<T>) operand.evaluateAsIterator(context);
 	}
 
 	public void toString(StringBuffer bld) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
index fe01a94..2de0b95 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
@@ -83,4 +83,12 @@ final class CurryedLambdaExpression extends LambdaExpression {
 			lambdaContext.setValue(vars[idx], assignments[idx - 1].rhs.evaluate(context));
 		return lambdaContext;
 	}
+
+	int countAccessToEverything() {
+		int cnt = 0;
+		for (int idx = 0; idx < assignments.length; ++idx)
+			cnt += assignments[idx].countAccessToEverything();
+		cnt += super.countAccessToEverything();
+		return cnt;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Everything.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Everything.java
index 00412c8..0b3a1cf 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Everything.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Everything.java
@@ -13,10 +13,7 @@ package org.eclipse.equinox.internal.p2.metadata.expression;
 import java.util.Collection;
 import java.util.Iterator;
 import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
-import org.eclipse.equinox.p2.metadata.expression.IExpression;
-import org.eclipse.equinox.p2.metadata.expression.IExpressionVisitor;
 import org.eclipse.equinox.p2.metadata.index.IIndexProvider;
-import org.eclipse.equinox.p2.query.IMatchQuery;
 
 /**
  * The immutable context used when evaluating an expression.
@@ -79,33 +76,6 @@ public final class Everything<T> extends MatchIteratorFilter<T> implements IRepe
 	 * @return <code>true</code> if repeated requests will be made, <code>false</code> if not.
 	 */
 	private static boolean needsRepeadedAccessToEverything(Expression expression) {
-		final int[] accessCount = new int[] {0};
-
-		expression.accept(new IExpressionVisitor() {
-			int accessMultiplier = 1;
-
-			public boolean visit(IExpression expr) {
-				if (expr instanceof CollectionFilter) {
-					CollectionFilter cf = (CollectionFilter) expr;
-					if (cf.operand.accept(this)) {
-						accessMultiplier++;
-						cf.lambda.accept(this);
-						--accessMultiplier;
-					}
-					return false;
-				}
-				if (expr == ExpressionFactory.EVERYTHING) {
-					accessCount[0] += accessMultiplier;
-					return false;
-				}
-				if (expr instanceof WrappedIQuery) {
-					Expression queryArg = ((WrappedIQuery) expr).operands[0];
-					if (!(queryArg instanceof Literal && ((Literal) queryArg).value instanceof IMatchQuery<?>))
-						accessCount[0] += accessMultiplier;
-				}
-				return true;
-			}
-		});
-		return accessCount[0] > 1;
+		return expression.countAccessToEverything() > 1;
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
index 66aeb47..d8b5ac7 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
@@ -483,4 +483,8 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
 		accept(tsFinder);
 		return tsFinder.isFound();
 	}
+
+	int countAccessToEverything() {
+		return 0;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/LambdaExpression.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/LambdaExpression.java
index c5bacf0..f497319 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/LambdaExpression.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/LambdaExpression.java
@@ -69,4 +69,8 @@ public class LambdaExpression extends Unary {
 	public IEvaluationContext prolog(IEvaluationContext context) {
 		return EvaluationContext.create(context, each);
 	}
+
+	int countAccessToEverything() {
+		return 2 * super.countAccessToEverything();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
index 805cff2..da8491e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
@@ -56,4 +56,11 @@ public abstract class NAry extends Expression {
 			appendOperand(bld, rootVariable, operands[idx], getPriority());
 		}
 	}
+
+	int countAccessToEverything() {
+		int cnt = 0;
+		for (int idx = 0; idx < operands.length; ++idx)
+			cnt += operands[idx].countAccessToEverything();
+		return cnt;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
index 679fd2e..6da2c93 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
@@ -23,7 +23,7 @@ public class Pipe extends NAry {
 
 	private class NoIndexProvider implements IIndexProvider<Object> {
 		private final IIndexProvider<?> indexProvider;
-		private Iterator<Object> everything;
+		private Everything<Object> everything;
 
 		NoIndexProvider(IIndexProvider<?> indexProvider) { //
 			this.indexProvider = indexProvider;
@@ -34,7 +34,7 @@ public class Pipe extends NAry {
 		}
 
 		public Iterator<Object> everything() {
-			return everything;
+			return everything.getCopy();
 		}
 
 		public Object getManagedProperty(Object client, String memberName, Object key) {
@@ -48,8 +48,8 @@ public class Pipe extends NAry {
 		}
 
 		@SuppressWarnings("unchecked")
-		void setEverything(Iterator<?> everything) {
-			this.everything = (Iterator<Object>) everything;
+		void setEverything(Everything<?> everything) {
+			this.everything = (Everything<Object>) everything;
 		}
 	}
 
@@ -110,7 +110,18 @@ public class Pipe extends NAry {
 
 	private static Expression makePipeableOfBooleans(IExpressionFactory factory, ArrayList<Expression> booleans) {
 		Expression boolExpr = normalizeBoolean(factory, booleans);
-		return (Expression) factory.select(ExpressionFactory.EVERYTHING, factory.lambda(ExpressionFactory.THIS, boolExpr));
+		Object[] params = null;
+		if (boolExpr instanceof MatchExpression<?>) {
+			MatchExpression<?> matchExpr = (MatchExpression<?>) boolExpr;
+			boolExpr = (Expression) matchExpr.getPredicate();
+			params = matchExpr.getParameters();
+			if (params.length == 0)
+				params = null;
+		}
+		Expression expr = (Expression) factory.select(ExpressionFactory.EVERYTHING, factory.lambda(ExpressionFactory.THIS, boolExpr));
+		if (params != null)
+			expr = new ContextExpression<Object>(expr, params);
+		return expr;
 	}
 
 	private Pipe(Expression[] operands) {
@@ -141,11 +152,11 @@ public class Pipe extends NAry {
 		Variable everything = ExpressionFactory.EVERYTHING;
 		IEvaluationContext nextContext = EvaluationContext.create(context, everything);
 		NoIndexProvider noIndexProvider = new NoIndexProvider(context.getIndexProvider());
+		everything.setValue(nextContext, noIndexProvider);
 		nextContext.setIndexProvider(noIndexProvider);
 		for (int idx = 1; idx < operands.length; ++idx) {
 			Expression expr = operands[idx];
-			noIndexProvider.setEverything(iterator);
-			everything.setValue(nextContext, new Everything<Object>(elementClass, noIndexProvider));
+			noIndexProvider.setEverything(new Everything<Object>(elementClass, iterator, expr));
 			iterator = expr.evaluateAsIterator(nextContext);
 			if (!iterator.hasNext())
 				break;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Unary.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Unary.java
index 9c6b7d8..7299a09 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Unary.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Unary.java
@@ -54,4 +54,8 @@ public abstract class Unary extends Expression {
 		bld.append(getOperator());
 		appendOperand(bld, rootVariable, operand, getPriority());
 	}
+
+	int countAccessToEverything() {
+		return operand.countAccessToEverything();
+	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Variable.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Variable.java
index a7adfb7..dc26267 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Variable.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Variable.java
@@ -76,4 +76,8 @@ public class Variable extends Expression {
 	public void toString(StringBuffer bld, Variable rootVariable) {
 		bld.append(name);
 	}
+
+	int countAccessToEverything() {
+		return this == ExpressionFactory.EVERYTHING ? 1 : 0;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/WrappedIQuery.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/WrappedIQuery.java
index b6f8efa..827de35 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/WrappedIQuery.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/WrappedIQuery.java
@@ -72,4 +72,8 @@ public final class WrappedIQuery extends Function {
 		}
 		return false;
 	}
+
+	int countAccessToEverything() {
+		return isReferenceTo(ExpressionFactory.EVERYTHING) ? 1 : 0;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
index c4200bc..dc43ce8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
@@ -33,8 +33,6 @@ public final class MetadataFactory {
 	 * the resulting immutable unit.
 	 */
 	public static class InstallableUnitDescription {
-		public static final String PROP_TYPE_GROUP = "org.eclipse.equinox.p2.type.group"; //$NON-NLS-1$
-
 		InstallableUnit unit;
 
 		/**
@@ -42,6 +40,13 @@ public final class MetadataFactory {
 		 * boolean property indicating that an installable unit is a group.
 		 * 
 		 */
+		public static final String PROP_TYPE_GROUP = "org.eclipse.equinox.p2.type.group"; //$NON-NLS-1$
+
+		/**
+		 * A property key (value <code>"org.eclipse.equinox.p2.type.patch"</code>) for a 
+		 * boolean property indicating that an installable unit is a patch.
+		 * 
+		 */
 		public static final String PROP_TYPE_PATCH = "org.eclipse.equinox.p2.type.patch"; //$NON-NLS-1$
 
 		/**
@@ -62,6 +67,10 @@ public final class MetadataFactory {
 			super();
 		}
 
+		/**
+		 * Add the specified capabilities to the installable unit.
+		 * @param additional the capabilities to add.
+		 */
 		public void addProvidedCapabilities(Collection<IProvidedCapability> additional) {
 			if (additional == null || additional.size() == 0)
 				return;
@@ -77,6 +86,10 @@ public final class MetadataFactory {
 			addRequirements(additional);
 		}
 
+		/**
+		 * Add the specified requirements to the installable unit.
+		 * @param additional the requirements to add
+		 */
 		public void addRequirements(Collection<IRequirement> additional) {
 			if (additional == null || additional.size() == 0)
 				return;
@@ -92,10 +105,16 @@ public final class MetadataFactory {
 			unit().addTouchpointData(data);
 		}
 
+		/**
+		 * Returns the id of the installable unit.
+		 */
 		public String getId() {
 			return unit().getId();
 		}
 
+		/**
+		 * Return a collection of all the capabilities specified on this installable unit.
+		 */
 		public Collection<IProvidedCapability> getProvidedCapabilities() {
 			return unit().getProvidedCapabilities();
 		}
@@ -105,6 +124,9 @@ public final class MetadataFactory {
 			return getRequirements();
 		}
 
+		/**
+		 * Return a collection of the requirements specified on this installable unit.
+		 */
 		public List<IRequirement> getRequirements() {
 			return unit().getRequirements();
 		}
@@ -114,6 +136,9 @@ public final class MetadataFactory {
 			return getMetaRequirements();
 		}
 
+		/**
+		 * Return a collection of the meta requirements specified on this installable unit.
+		 */
 		public Collection<IRequirement> getMetaRequirements() {
 			return unit().getMetaRequirements();
 		}
@@ -129,18 +154,33 @@ public final class MetadataFactory {
 
 		}
 
+		/**
+		 * Return the versiono on this installable unit description.
+		 */
 		public Version getVersion() {
 			return unit().getVersion();
 		}
 
+		/**
+		 * Set the artifact keys for the installable unit. Previous values will be overwritten.
+		 * @param value the artifacts to the used.
+		 */
 		public void setArtifacts(IArtifactKey[] value) {
 			unit().setArtifacts(value);
 		}
 
+		/**
+		 * Set the capabilities for the installable unit. Previous values will be overwritten.
+		 * @param exportedCapabilities the capabilities to be used.
+		 */
 		public void setCapabilities(IProvidedCapability[] exportedCapabilities) {
 			unit().setCapabilities(exportedCapabilities);
 		}
 
+		/**
+		 * Set the copyright for the installable unit. Previous values will be overwritten.
+		 * @param copyright the copyright to be used.
+		 */
 		public void setCopyright(ICopyright copyright) {
 			unit().setCopyright(copyright);
 		}
@@ -153,14 +193,25 @@ public final class MetadataFactory {
 			unit().setFilter(filter);
 		}
 
+		/** 
+		 * Set the id of the installable unit.
+		 */
 		public void setId(String id) {
 			unit().setId(id);
 		}
 
+		/**
+		 * Set the licenses for the installable unit. Previous values will be overwritten.
+		 */
 		public void setLicenses(ILicense[] licenses) {
 			unit().setLicenses(licenses);
 		}
 
+		/**
+		 * Set a property with a specified value for this installable unit.
+		 * @param key key with which the specified value is to be associated
+		 * @param value value to be associated with the specified key
+		 */
 		public void setProperty(String key, String value) {
 			unit().setProperty(key, value);
 		}
@@ -170,6 +221,10 @@ public final class MetadataFactory {
 			setRequirements(requirements);
 		}
 
+		/**
+		 * Set the requirements for the installable unit. Previous values will be overwritten.
+		 * @param requirements the requirements to be used.
+		 */
 		public void setRequirements(IRequirement[] requirements) {
 			unit().setRequiredCapabilities(requirements);
 		}
@@ -179,22 +234,39 @@ public final class MetadataFactory {
 			setMetaRequirements(metaRequirements);
 		}
 
+		/**
+		 * Set the meta requirements for the installable unit. Previous values will be overwritten.
+		 * @param metaRequirements the meta requirements to be used.
+		 */
 		public void setMetaRequirements(IRequirement[] metaRequirements) {
 			unit().setMetaRequiredCapabilities(metaRequirements);
 		}
 
+		/**
+		 * Change the singleton status of the installable unit.
+		 */
 		public void setSingleton(boolean singleton) {
 			unit().setSingleton(singleton);
 		}
 
+		/**
+		 * Set the touchpoint type for the installable unit.
+		 */
 		public void setTouchpointType(ITouchpointType type) {
 			unit().setTouchpointType(type);
 		}
 
+		/**
+		 * Set the update descriptor for the installable unit.
+		 */
 		public void setUpdateDescriptor(IUpdateDescriptor updateInfo) {
 			unit().setUpdateDescriptor(updateInfo);
 		}
 
+		/**
+		 * Set the version of this installable unit.
+		 * @param newVersion version to be set on the installable unit.
+		 */
 		public void setVersion(Version newVersion) {
 			unit().setVersion(newVersion);
 		}
@@ -214,12 +286,21 @@ public final class MetadataFactory {
 		}
 	}
 
+	/**
+	 * A description containing information about an installable unit fragment. Once created,
+	 * installable units are immutable. This description class allows a client to build
+	 * up the state for an installable unit fragment incrementally, and then finally produce
+	 * the resulting immutable unit.
+	 */
 	public static class InstallableUnitFragmentDescription extends InstallableUnitDescription {
 		public InstallableUnitFragmentDescription() {
 			super();
 			setProperty(InstallableUnitDescription.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
 		}
 
+		/**
+		 * Specify the requirements identifying the host to which the installable unit fragment should be attached to. 
+		 */
 		public void setHost(IRequirement... hostRequirement) {
 			((InstallableUnitFragment) unit()).setHost(Arrays.asList(hostRequirement));
 		}
@@ -231,6 +312,12 @@ public final class MetadataFactory {
 		}
 	}
 
+	/**
+	 * A description containing information about an installable unit patch. Once created,
+	 * installable units are immutable. This description class allows a client to build
+	 * up the state for an installable unit patch incrementally, and then finally produce
+	 * the resulting immutable unit.
+	 */
 	public static class InstallableUnitPatchDescription extends InstallableUnitDescription {
 
 		public InstallableUnitPatchDescription() {
@@ -238,16 +325,25 @@ public final class MetadataFactory {
 			setProperty(InstallableUnitDescription.PROP_TYPE_PATCH, Boolean.TRUE.toString());
 		}
 
+		/**
+		 * Set the applicability scope for the installable unit patch.
+		 */
 		public void setApplicabilityScope(IRequirement[][] applyTo) {
 			if (applyTo == null)
 				throw new IllegalArgumentException("A patch scope can not be null"); //$NON-NLS-1$
 			((InstallableUnitPatch) unit()).setApplicabilityScope(applyTo);
 		}
 
+		/**
+		 * Set the lifecycle change for the installable unit patch.
+		 */
 		public void setLifeCycle(IRequirement lifeCycle) {
 			((InstallableUnitPatch) unit()).setLifeCycle(lifeCycle);
 		}
 
+		/**
+		 * Set the requirement change for the installable unit patch.
+		 */
 		public void setRequirementChanges(IRequirementChange[] changes) {
 			((InstallableUnitPatch) unit()).setRequirementsChange(changes);
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
index c3abdaf..9acb2cc 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
@@ -15,6 +15,7 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  CDC-1.1/Foundation-1.1
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
+ org.eclipse.equinox.internal.p2.director,
  org.eclipse.equinox.internal.p2.repository.helpers,
  org.eclipse.equinox.internal.provisional.configurator,
  org.eclipse.equinox.internal.provisional.p2.core.eventbus,
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/IFailedStatusEvaluator.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/IFailedStatusEvaluator.java
new file mode 100644
index 0000000..3c47f24
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/IFailedStatusEvaluator.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ *  Copyright (c) 2010 IBM Corporation and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.operations;
+
+import org.eclipse.equinox.p2.engine.IProvisioningPlan;
+import org.eclipse.equinox.p2.engine.ProvisioningContext;
+
+/**
+ * IFailedStatusEvaluator determines what to do (if anything)
+ * when a profile change cannot be resolved successfully.
+ * 
+ * @since 2.0
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IFailedStatusEvaluator {
+	public ProvisioningContext getSecondPassProvisioningContext(IProvisioningPlan failedPlan);
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/PlannerResolutionJob.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/PlannerResolutionJob.java
index c8cd61c..69c984e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/PlannerResolutionJob.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/PlannerResolutionJob.java
@@ -29,20 +29,22 @@ public class PlannerResolutionJob extends ProvisioningJob implements IProfileCha
 	IProvisioningPlan plan;
 	MultiStatus additionalStatus;
 	ResolutionResult report;
-	ProvisioningContext provisioningContext;
+	ProvisioningContext firstPass, successful;
+	IFailedStatusEvaluator evaluator;
 
 	public static MultiStatus getProfileChangeRequestAlteredStatus() {
 		return PlanAnalyzer.getProfileChangeAlteredStatus();
 	}
 
-	public PlannerResolutionJob(String label, ProvisioningSession session, String profileId, ProfileChangeRequest request, ProvisioningContext provisioningContext, MultiStatus additionalStatus) {
+	public PlannerResolutionJob(String label, ProvisioningSession session, String profileId, ProfileChangeRequest request, ProvisioningContext context, IFailedStatusEvaluator evaluator, MultiStatus additionalStatus) {
 		super(label, session);
 		this.request = request;
 		this.profileId = profileId;
-		if (provisioningContext == null)
-			this.provisioningContext = new ProvisioningContext(session.getProvisioningAgent());
+		if (context == null)
+			firstPass = new ProvisioningContext(session.getProvisioningAgent());
 		else
-			this.provisioningContext = provisioningContext;
+			firstPass = context;
+		this.evaluator = evaluator;
 		Assert.isNotNull(additionalStatus);
 		this.additionalStatus = additionalStatus;
 	}
@@ -55,26 +57,62 @@ public class PlannerResolutionJob extends ProvisioningJob implements IProfileCha
 		return request;
 	}
 
-	public ProvisioningContext getProvisioningContext() {
-		return provisioningContext;
+	public ProvisioningContext getActualProvisioningContext() {
+		return successful;
 	}
 
-	public void setProvisioningContext(ProvisioningContext context) {
-		this.provisioningContext = context;
+	public void setFirstPassProvisioningContext(ProvisioningContext firstPass) {
+		this.firstPass = firstPass;
 	}
 
 	public IStatus runModal(IProgressMonitor monitor) {
-		plan = ((IPlanner) getSession().getProvisioningAgent().getService(IPlanner.SERVICE_NAME)).getProvisioningPlan(request, provisioningContext, monitor);
+		SubMonitor sub;
+		if (evaluator != null) {
+			sub = SubMonitor.convert(monitor, 1000);
+		} else {
+			sub = SubMonitor.convert(monitor, 500);
+		}
+
+		plan = ((IPlanner) getSession().getProvisioningAgent().getService(IPlanner.SERVICE_NAME)).getProvisioningPlan(request, firstPass, sub.newChild(500));
+		IStatus status;
 		if (plan == null) {
-			return new Status(IStatus.ERROR, Activator.ID, Messages.PlannerResolutionJob_NullProvisioningPlan);
+			status = new Status(IStatus.ERROR, Activator.ID, Messages.PlannerResolutionJob_NullProvisioningPlan);
+			additionalStatus.add(status);
+		} else {
+			status = plan.getStatus();
+		}
+
+		if (status.getSeverity() != IStatus.ERROR || evaluator == null) {
+			successful = firstPass;
+			return status;
 		}
-		return plan.getStatus();
 
+		// First resolution was in error, try again with an alternate provisioning context
+		ProvisioningContext secondPass = evaluator.getSecondPassProvisioningContext(plan);
+		if (secondPass == null)
+			return status;
+
+		successful = secondPass;
+		plan = ((IPlanner) getSession().getProvisioningAgent().getService(IPlanner.SERVICE_NAME)).getProvisioningPlan(request, secondPass, sub.newChild(500));
+		if (plan == null) {
+			status = new Status(IStatus.ERROR, Activator.ID, Messages.PlannerResolutionJob_NullProvisioningPlan);
+			additionalStatus.add(status);
+			return status;
+		}
+		return plan.getStatus();
 	}
 
 	public ResolutionResult getResolutionResult() {
 		if (report == null) {
-			report = PlanAnalyzer.computeResolutionResult(request, plan, additionalStatus);
+			if (plan == null) {
+				if (additionalStatus.getSeverity() != IStatus.ERROR) {
+					additionalStatus.add(new Status(IStatus.ERROR, Activator.ID, Messages.PlannerResolutionJob_NullProvisioningPlan));
+				}
+				report = new ResolutionResult();
+				report.addSummaryStatus(additionalStatus);
+			} else {
+				report = PlanAnalyzer.computeResolutionResult(request, plan, additionalStatus);
+			}
 		}
 		return report;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/SearchForUpdatesResolutionJob.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/SearchForUpdatesResolutionJob.java
index b62c46c..d60e9b3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/SearchForUpdatesResolutionJob.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/SearchForUpdatesResolutionJob.java
@@ -24,8 +24,8 @@ public class SearchForUpdatesResolutionJob extends PlannerResolutionJob {
 	ProfileChangeRequest[] requestHolder;
 	UpdateOperation operation;
 
-	public SearchForUpdatesResolutionJob(String label, ProvisioningSession session, String profileId, ProfileChangeRequest request, ProvisioningContext provisioningContext, MultiStatus additionalStatus, IRunnableWithProgress searchForUpdatesRunnable, ProfileChangeRequest[] requestHolder, UpdateOperation operation) {
-		super(label, session, profileId, request, provisioningContext, additionalStatus);
+	public SearchForUpdatesResolutionJob(String label, ProvisioningSession session, String profileId, ProfileChangeRequest request, ProvisioningContext context, IFailedStatusEvaluator evaluator, MultiStatus additionalStatus, IRunnableWithProgress searchForUpdatesRunnable, ProfileChangeRequest[] requestHolder, UpdateOperation operation) {
+		super(label, session, profileId, request, context, evaluator, additionalStatus);
 		this.searchForUpdatesRunnable = searchForUpdatesRunnable;
 		this.requestHolder = requestHolder;
 		this.operation = operation;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/messages.properties
index 24c99f5..1e91ac0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/messages.properties
@@ -22,7 +22,7 @@ PlanAnalyzer_PartialInstall="{0}" is already present because other installed sof
 PlanAnalyzer_PartialUninstall= "{0}" cannot be fully uninstalled because other installed software requires it.  The parts that are not required will be uninstalled.
 PlanAnalyzer_SideEffectInstall="{0}" will also be installed in order to complete this operation.
 PlanAnalyzer_SideEffectUninstall="{0}" must be uninstalled in order to complete this operation.
-PlannerResolutionJob_NullProvisioningPlan=Could not obtain provisioning plan.  No details were available.
+PlannerResolutionJob_NullProvisioningPlan=Unexpected Error.  Could not process the request. Check the error log for details.
 PlanAnalyzer_IgnoringImpliedDowngrade="{0}" will be ignored because a newer version is already installed. 
 PlanAnalyzer_ImpliedUpdate="{0}" is already installed, so an update will be performed instead.
 PlanAnalyzer_Items=Items
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/InstallOperation.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/InstallOperation.java
index ebdc195..0da9c62 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/InstallOperation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/InstallOperation.java
@@ -12,15 +12,15 @@
 
 package org.eclipse.equinox.p2.operations;
 
-import org.eclipse.equinox.p2.planner.ProfileInclusionRules;
-
 import java.util.Collection;
 import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.director.Explanation;
 import org.eclipse.equinox.internal.p2.operations.*;
-import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
-import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.internal.provisional.p2.director.*;
+import org.eclipse.equinox.p2.engine.*;
 import org.eclipse.equinox.p2.engine.query.UserVisibleRootQuery;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.planner.ProfileInclusionRules;
 import org.eclipse.equinox.p2.query.IQueryResult;
 import org.eclipse.equinox.p2.query.QueryUtil;
 
@@ -144,4 +144,33 @@ public class InstallOperation extends ProfileChangeOperation {
 		return Messages.InstallOperation_InstallJobName;
 
 	}
+
+	@Override
+	ProvisioningContext getFirstPassProvisioningContext() {
+		// Set it back to no referencing for first pass in case we reuse this context.
+		context.setProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES, null);
+		return context;
+	}
+
+	@Override
+	IFailedStatusEvaluator getSecondPassEvaluator() {
+		return new IFailedStatusEvaluator() {
+			public ProvisioningContext getSecondPassProvisioningContext(IProvisioningPlan failedPlan) {
+				// Follow metadata repository references if the first try fails
+				// There should be real API for this!
+				if (missingRequirement(failedPlan))
+					context.setProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES, Boolean.toString(true));
+				return context;
+			}
+		};
+	}
+
+	// this is very reachy
+	private boolean missingRequirement(IProvisioningPlan failedPlan) {
+		IStatus status = failedPlan.getStatus();
+		RequestStatus requestStatus = null;
+		if (status instanceof PlannerStatus)
+			requestStatus = ((PlannerStatus) status).getRequestStatus();
+		return requestStatus != null && requestStatus.getShortExplanation() == Explanation.MISSING_REQUIREMENT;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProfileChangeOperation.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProfileChangeOperation.java
index d650206..63ed0e2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProfileChangeOperation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProfileChangeOperation.java
@@ -178,7 +178,7 @@ public abstract class ProfileChangeOperation implements IProfileChangeJob {
 	protected abstract void computeProfileChangeRequest(MultiStatus status, IProgressMonitor monitor);
 
 	private void createPlannerResolutionJob() {
-		job = new PlannerResolutionJob(getResolveJobName(), session, profileId, request, context, noChangeRequest);
+		job = new PlannerResolutionJob(getResolveJobName(), session, profileId, request, getFirstPassProvisioningContext(), getSecondPassEvaluator(), noChangeRequest);
 	}
 
 	/**
@@ -311,7 +311,7 @@ public abstract class ProfileChangeOperation implements IProfileChangeJob {
 		IStatus status = getResolutionResult();
 		if (status.getSeverity() != IStatus.CANCEL && status.getSeverity() != IStatus.ERROR) {
 			if (job.getProvisioningPlan() != null) {
-				ProfileModificationJob pJob = new ProfileModificationJob(getProvisioningJobName(), session, profileId, job.getProvisioningPlan(), context);
+				ProfileModificationJob pJob = new ProfileModificationJob(getProvisioningJobName(), session, profileId, job.getProvisioningPlan(), job.getActualProvisioningContext());
 				pJob.setAdditionalProgressMonitor(monitor);
 				return pJob;
 			}
@@ -329,7 +329,7 @@ public abstract class ProfileChangeOperation implements IProfileChangeJob {
 	public void setProvisioningContext(ProvisioningContext context) {
 		this.context = context;
 		if (job != null)
-			job.setProvisioningContext(context);
+			updateJobProvisioningContexts(job, context);
 	}
 
 	/**
@@ -364,4 +364,20 @@ public abstract class ProfileChangeOperation implements IProfileChangeJob {
 		return getResolutionResult() != null;
 	}
 
+	ProvisioningContext getFirstPassProvisioningContext() {
+		return getProvisioningContext();
+	}
+
+	IFailedStatusEvaluator getSecondPassEvaluator() {
+		return new IFailedStatusEvaluator() {
+			public ProvisioningContext getSecondPassProvisioningContext(IProvisioningPlan failedPlan) {
+				return null;
+			}
+		};
+	}
+
+	protected void updateJobProvisioningContexts(PlannerResolutionJob job, ProvisioningContext context) {
+		job.setFirstPassProvisioningContext(context);
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UninstallOperation.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UninstallOperation.java
index 09a526f..45a0f03 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UninstallOperation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UninstallOperation.java
@@ -12,12 +12,14 @@
 
 package org.eclipse.equinox.p2.operations;
 
+import java.net.URI;
 import java.util.Collection;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.equinox.internal.p2.operations.IFailedStatusEvaluator;
 import org.eclipse.equinox.internal.p2.operations.Messages;
 import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
-import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.*;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 
 /**
@@ -85,4 +87,20 @@ public class UninstallOperation extends ProfileChangeOperation {
 		return Messages.UninstallOperation_ResolveJobName;
 	}
 
+	@Override
+	ProvisioningContext getFirstPassProvisioningContext() {
+		ProvisioningContext pc = new ProvisioningContext(session.getProvisioningAgent());
+		pc.setMetadataRepositories(new URI[0]);
+		pc.setArtifactRepositories(new URI[0]);
+		return pc;
+	}
+
+	@Override
+	IFailedStatusEvaluator getSecondPassEvaluator() {
+		return new IFailedStatusEvaluator() {
+			public ProvisioningContext getSecondPassProvisioningContext(IProvisioningPlan failedPlan) {
+				return context;
+			}
+		};
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
index f37afb5..03fee84 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
@@ -316,7 +316,7 @@ public class UpdateOperation extends ProfileChangeOperation {
 		// for the resolution job to get the request from the operation after it has been
 		// computed.
 		final ProfileChangeRequest[] requestHolder = new ProfileChangeRequest[1];
-		job = new SearchForUpdatesResolutionJob(getResolveJobName(), session, profileId, request, context, noChangeRequest, new IRunnableWithProgress() {
+		job = new SearchForUpdatesResolutionJob(getResolveJobName(), session, profileId, request, getFirstPassProvisioningContext(), getSecondPassEvaluator(), noChangeRequest, new IRunnableWithProgress() {
 			public void run(IProgressMonitor mon) throws OperationCanceledException {
 				// We only check for other jobs running if this job is *not* scheduled
 				if (job.getState() == Job.NONE && session.hasScheduledOperationsFor(profileId)) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
index d59813d..e64e63c 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
@@ -85,7 +85,7 @@ public class BundlesAction extends AbstractPublisherAction {
 	public static final IProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, Version.createOSGi(1, 0, 0));
 	public static final IProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, Version.createOSGi(1, 0, 0));
 
-	static final String DEFAULT_BUNDLE_LOCALIZATION = "plugin"; //$NON-NLS-1$
+	static final String DEFAULT_BUNDLE_LOCALIZATION = "OSGI-INF/l10n/bundle"; //$NON-NLS-1$
 
 	private static final String[] BUNDLE_IU_PROPERTY_MAP = {Constants.BUNDLE_NAME, IInstallableUnit.PROP_NAME, Constants.BUNDLE_DESCRIPTION, IInstallableUnit.PROP_DESCRIPTION, Constants.BUNDLE_VENDOR, IInstallableUnit.PROP_PROVIDER, Constants.BUNDLE_CONTACTADDRESS, IInstallableUnit.PROP_CONTACT, Constants.BUNDLE_DOCURL, IInstallableUnit.PROP_DOC_URL, Constants.BUNDLE_UPDATELOCATION, IInstallableUnit.PROP_BUNDLE_LOCALIZATION, Constants.BUNDLE_LOCALIZATION, IInstallableUnit.PROP_BUNDLE_LOCALIZATION};
 	public static final int BUNDLE_LOCALIZATION_INDEX = PublisherHelper.BUNDLE_LOCALIZED_PROPERTIES.length - 1;
@@ -248,10 +248,9 @@ public class BundlesAction extends AbstractPublisherAction {
 
 	private IInstallableUnitFragment createHostLocalizationFragment(IInstallableUnit bundleIU, BundleDescription bd, String hostId, String[] hostBundleManifestValues) {
 		Map<Locale, Map<String, String>> hostLocalizations = getHostLocalizations(new File(bd.getLocation()), hostBundleManifestValues);
-		if (hostLocalizations != null) {
-			return createLocalizationFragmentOfHost(bd, hostId, hostBundleManifestValues, hostLocalizations);
-		}
-		return null;
+		if (hostLocalizations == null || hostLocalizations.isEmpty())
+			return null;
+		return createLocalizationFragmentOfHost(bd, hostId, hostBundleManifestValues, hostLocalizations);
 	}
 
 	/*
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
index b99b1c8..3d77fde 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
@@ -15,6 +15,7 @@ import java.util.*;
 import java.util.Map.Entry;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.frameworkadmin.BundleInfo;
+import org.eclipse.equinox.internal.p2.metadata.TouchpointInstruction;
 import org.eclipse.equinox.internal.p2.publisher.eclipse.GeneratorBundleInfo;
 import org.eclipse.equinox.p2.metadata.*;
 import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
@@ -246,8 +247,12 @@ public class ConfigCUsAction extends AbstractPublisherAction {
 				String key = aProperty.getKey();
 				if (shouldPublishProperty(key) && !properties.contains(key)) {
 					properties.add(key);
-					configurationData += "setProgramProperty(propName:" + key + ", propValue:" + aProperty.getValue() + ");"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					unconfigurationData += "setProgramProperty(propName:" + key + ", propValue:);"; //$NON-NLS-1$ //$NON-NLS-2$
+					Map<String, String> parameters = new LinkedHashMap<String, String>();
+					parameters.put("propName", key); //$NON-NLS-1$
+					parameters.put("propValue", aProperty.getValue()); //$NON-NLS-1$
+					configurationData += TouchpointInstruction.encodeAction("setProgramProperty", parameters); //$NON-NLS-1$
+					parameters.put("propValue", ""); //$NON-NLS-1$//$NON-NLS-2$
+					unconfigurationData += TouchpointInstruction.encodeAction("setProgramProperty", parameters); //$NON-NLS-1$
 				}
 			}
 		}
@@ -270,6 +275,7 @@ public class ConfigCUsAction extends AbstractPublisherAction {
 		String configurationData = ""; //$NON-NLS-1$
 		String unconfigurationData = ""; //$NON-NLS-1$
 
+		Map<String, String> touchpointParameters = new LinkedHashMap<String, String>();
 		Set<String> jvmSet = new HashSet<String>();
 		Set<String> programSet = new HashSet<String>();
 		for (IExecutableAdvice advice : launchingAdvice) {
@@ -277,16 +283,20 @@ public class ConfigCUsAction extends AbstractPublisherAction {
 			for (int i = 0; i < jvmArgs.length; i++)
 				if (shouldPublishJvmArg(jvmArgs[i]) && !jvmSet.contains(jvmArgs[i])) {
 					jvmSet.add(jvmArgs[i]);
-					configurationData += "addJvmArg(jvmArg:" + jvmArgs[i] + ");"; //$NON-NLS-1$ //$NON-NLS-2$
-					unconfigurationData += "removeJvmArg(jvmArg:" + jvmArgs[i] + ");"; //$NON-NLS-1$ //$NON-NLS-2$
+					touchpointParameters.clear();
+					touchpointParameters.put("jvmArg", jvmArgs[i]); //$NON-NLS-1$
+					configurationData += TouchpointInstruction.encodeAction("addJvmArg", touchpointParameters); //$NON-NLS-1$
+					unconfigurationData += TouchpointInstruction.encodeAction("removeJvmArg", touchpointParameters); //$NON-NLS-1$
 				}
 			String[] programArgs = advice.getProgramArguments();
 			for (int i = 0; i < programArgs.length; i++)
 				if (shouldPublishProgramArg(programArgs[i]) && !programSet.contains(programArgs[i])) {
 					if (programArgs[i].startsWith("-")) //$NON-NLS-1$
 						programSet.add(programArgs[i]);
-					configurationData += "addProgramArg(programArg:" + programArgs[i] + ");"; //$NON-NLS-1$ //$NON-NLS-2$
-					unconfigurationData += "removeProgramArg(programArg:" + programArgs[i] + ");"; //$NON-NLS-1$ //$NON-NLS-2$
+					touchpointParameters.clear();
+					touchpointParameters.put("programArg", programArgs[i]); //$NON-NLS-1$
+					configurationData += TouchpointInstruction.encodeAction("addProgramArg", touchpointParameters); //$NON-NLS-1$
+					unconfigurationData += TouchpointInstruction.encodeAction("removeProgramArg", touchpointParameters); //$NON-NLS-1$
 				} else if (i + 1 < programArgs.length && !programArgs[i + 1].startsWith("-")) { //$NON-NLS-1$
 					// if we are not publishing then skip over the following arg as it is assumed to be a parameter
 					// to this command line arg.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
index db80201..32d1e2e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
@@ -72,7 +72,7 @@ public final class LocalizationHelper {
 				Locale nextLocale = getLocale(LocalizationHelper.getLocaleString(nextFile, localizationFile));
 
 				try {
-					Map<String, String> properties = loadProperties(root, nextFile);
+					Map<String, String> properties = loadProperties(localizationDir, nextFile);
 					Map<String, String> localizedStrings = getLocalizedProperties(propertyKeys, properties);
 					if (localizedStrings.size() > 0) {
 						localizations.put(nextLocale, localizedStrings);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Messages.java
index 79296ff..4d3cde8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc. - Ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.reconciler.dropins;
 
@@ -23,6 +24,8 @@ public class Messages extends NLS {
 	public static String metadata_repo_manager_not_registered;
 	public static String error_reading_link;
 	public static String error_resolving_link;
+	public static String remove_root;
+	public static String remove_all_roots;
 
 	static {
 		// initialize resource bundle
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
index 08304e3..5e5bea0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
@@ -34,6 +34,7 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
 import org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository;
 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
 import org.eclipse.osgi.service.environment.EnvironmentInfo;
+import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
@@ -46,6 +47,9 @@ public class ProfileSynchronizer {
 	private static final String PROFILE_TIMESTAMP = "PROFILE"; //$NON-NLS-1$
 	private static final String NO_TIMESTAMP = "-1"; //$NON-NLS-1$
 	private static final String PROP_FROM_DROPINS = "org.eclipse.equinox.p2.reconciler.dropins"; //$NON-NLS-1$
+	private static final String INCLUSION_RULES = "org.eclipse.equinox.p2.internal.inclusion.rules"; //$NON-NLS-1$
+	private static final String INCLUSION_OPTIONAL = "OPTIONAL"; //$NON-NLS-1$
+	private static final String INCLUSION_STRICT = "STRICT"; //$NON-NLS-1$
 
 	private static final String CACHE_EXTENSIONS = "org.eclipse.equinox.p2.cache.extensions"; //$NON-NLS-1$
 	private static final String PIPE = "|"; //$NON-NLS-1$
@@ -56,12 +60,23 @@ public class ProfileSynchronizer {
 	private Map<String, String> timestamps;
 	private final IProvisioningAgent agent;
 
+	/*
+	 * Specialized profile change request so we can keep track of IUs which have moved
+	 * locations on disk.
+	 */
 	static class ReconcilerProfileChangeRequest extends ProfileChangeRequest {
-		boolean isMove = false;
+		List<IInstallableUnit> toMove = new ArrayList<IInstallableUnit>();
 
-		public ReconcilerProfileChangeRequest(IProfile profile, boolean isMove) {
+		public ReconcilerProfileChangeRequest(IProfile profile) {
 			super(profile);
-			this.isMove = isMove;
+		}
+
+		void moveAll(Collection<IInstallableUnit> list) {
+			toMove.addAll(list);
+		}
+
+		Collection<IInstallableUnit> getMoves() {
+			return toMove;
 		}
 	}
 
@@ -79,6 +94,7 @@ public class ProfileSynchronizer {
 
 	/*
 	 * Synchronize the profile with the list of metadata repositories.
+	 * TODO fix progress monitoring (although in practice the user doesn't see it or have a chance to cancel)
 	 */
 	public IStatus synchronize(IProgressMonitor monitor) {
 		readTimestamps();
@@ -88,53 +104,161 @@ public class ProfileSynchronizer {
 		ProvisioningContext context = getContext();
 		context.setProperty(EXPLANATION, new Boolean(Tracing.DEBUG_RECONCILER).toString());
 
-		boolean done = false;
-		while (!done) {
-			// figure out if we really have anything to install/uninstall
-			ReconcilerProfileChangeRequest request = createProfileChangeRequest(context);
-			String updatedCacheExtensions = synchronizeCacheExtensions();
-			if (request == null) {
-				if (updatedCacheExtensions != null) {
-					IStatus engineResult = setProperty(CACHE_EXTENSIONS, updatedCacheExtensions, context, null);
-					if (engineResult.getSeverity() != IStatus.ERROR && engineResult.getSeverity() != IStatus.CANCEL)
-						writeTimestamps();
-					return engineResult;
-				}
+		String updatedCacheExtensions = synchronizeCacheExtensions();
+
+		// figure out if we really have anything to install/uninstall.
+		ReconcilerProfileChangeRequest request = createProfileChangeRequest(context);
+		if (request == null) {
+			if (updatedCacheExtensions == null)
 				return Status.OK_STATUS;
-			}
-			if (updatedCacheExtensions != null)
-				request.setProfileProperty(CACHE_EXTENSIONS, updatedCacheExtensions);
+			IStatus engineResult = setProperty(CACHE_EXTENSIONS, updatedCacheExtensions, context, null);
+			if (engineResult.getSeverity() != IStatus.ERROR && engineResult.getSeverity() != IStatus.CANCEL)
+				writeTimestamps();
+			return engineResult;
+		}
+		if (updatedCacheExtensions != null)
+			request.setProfileProperty(CACHE_EXTENSIONS, updatedCacheExtensions);
 
-			SubMonitor sub = SubMonitor.convert(monitor, 100);
-			try {
-				//create the provisioning plan
-				IProvisioningPlan plan = createProvisioningPlan(request, context, sub.newChild(50));
-				IStatus status = plan.getStatus();
-				if (status.getSeverity() == IStatus.ERROR || status.getSeverity() == IStatus.CANCEL)
-					return status;
-				debug(request, plan);
-
-				// if there is no work to do then just write out the timestamps and return.
-				if (plan.getAdditions().query(QueryUtil.createIUAnyQuery(), null).isEmpty() && plan.getRemovals().query(QueryUtil.createIUAnyQuery(), null).isEmpty()) {
-					writeTimestamps();
-					return status;
-				}
+		// if some of the IUs move locations then construct a special plan and execute that first
+		IStatus moveResult = performRemoveForMovedIUs(request, context, monitor);
+		if (moveResult.getSeverity() == IStatus.ERROR || moveResult.getSeverity() == IStatus.CANCEL)
+			return moveResult;
 
-				//invoke the engine to perform installs/uninstalls
-				IStatus engineResult = executePlan(plan, context, sub.newChild(50));
-				if (engineResult.getSeverity() == IStatus.ERROR || engineResult.getSeverity() == IStatus.CANCEL)
-					return engineResult;
+		// now create a plan for the rest of the work and execute it
+		IStatus addRemoveResult = performAddRemove(request, context, monitor);
+		if (addRemoveResult.getSeverity() == IStatus.ERROR || addRemoveResult.getSeverity() == IStatus.CANCEL)
+			return addRemoveResult;
 
-			} finally {
-				done = !request.isMove;
-				sub.done();
-			}
-		}
 		// write out the new timestamps (for caching) and apply the configuration
 		writeTimestamps();
 		return applyConfiguration(false);
 	}
 
+	/*
+	 * Return a list of the roots in the profile.
+	 */
+	private IQueryResult<IInstallableUnit> getStrictRoots() {
+		return profile.query(new IUProfilePropertyQuery(INCLUSION_RULES, INCLUSION_STRICT), null);
+	}
+
+	/*
+	 * Convert the profile change request into operands and have the engine execute them. There
+	 * is fancy logic here in case we are trying to remove IUs which are depended on by something
+	 * which is installed via the UI. Since the bundle has been removed from the file-system it is a forced
+	 * removal so we have to uninstall the UI-installed IU.
+	 */
+	private IStatus performAddRemove(ReconcilerProfileChangeRequest request, ProvisioningContext context, IProgressMonitor monitor) {
+		// if we have moves then we have previously removed them. 
+		// now we need to add them back (at the new location)
+		for (IInstallableUnit iu : request.getMoves()) {
+			request.add(iu);
+			request.setInstallableUnitProfileProperty(iu, PROP_FROM_DROPINS, Boolean.TRUE.toString());
+			request.setInstallableUnitInclusionRules(iu, ProfileInclusionRules.createOptionalInclusionRule(iu));
+			request.setInstallableUnitProfileProperty(iu, IProfile.PROP_PROFILE_LOCKED_IU, Integer.toString(IProfile.LOCK_UNINSTALL));
+		}
+
+		Collection<IInstallableUnit> additions = request.getAdditions();
+		Collection<IInstallableUnit> removals = request.getRemovals();
+		// see if there is any work to do
+		if (additions.isEmpty() && removals.isEmpty())
+			return Status.OK_STATUS;
+
+		// TODO See bug 270195. Eventually we will attempt to remove strictly installed IUs if their 
+		// dependent bundles have been deleted.
+		boolean removeStrictRoots = false;
+		if (removeStrictRoots)
+			return performStrictRootRemoval(request, context, monitor);
+		IProvisioningPlan plan = createProvisioningPlan(request, context, monitor);
+		debug(request, plan);
+		return executePlan(plan, context, monitor);
+	}
+
+	// TODO re-enable after resolving bug 270195.
+	private IStatus performStrictRootRemoval(ReconcilerProfileChangeRequest request, ProvisioningContext context, IProgressMonitor monitor) {
+		Collection<IInstallableUnit> removals = request.getRemovals();
+		// if we don't have any removals then we don't have to worry about potentially
+		// invalidating things we already have installed, removal of roots, etc so just 
+		// create a regular plan.
+		IProvisioningPlan plan = null;
+		if (removals.isEmpty()) {
+			plan = createProvisioningPlan(request, context, monitor);
+			debug(request, plan);
+		} else {
+			// We are now creating a backup of the original request that will be used to create the final plan (where no optional magic is used)
+			ProfileChangeRequest finalRequest = (ProfileChangeRequest) request.clone();
+
+			// otherwise collect the roots, pretend they are optional, and see
+			// if the resulting plan affects them
+			Set<IInstallableUnit> strictRoots = getStrictRoots().toUnmodifiableSet();
+			Collection<IRequirement> forceNegation = new ArrayList<IRequirement>(removals.size());
+			for (IInstallableUnit iu : removals)
+				forceNegation.add(createNegation(iu));
+			request.addExtraRequirements(forceNegation);
+
+			// set all the profile roots to be optional to see how they would be effected by the plan
+			for (IInstallableUnit iu : strictRoots)
+				request.setInstallableUnitProfileProperty(iu, INCLUSION_RULES, INCLUSION_OPTIONAL);
+
+			// get the tentative plan back from the planner
+			plan = createProvisioningPlan(request, context, monitor);
+			debug(request, plan);
+			if (!plan.getStatus().isOK())
+				return plan.getStatus();
+
+			// Analyze the plan to see if any of the strict roots are being uninstalled.
+			int removedRoots = 0;
+			for (IInstallableUnit initialRoot : strictRoots) {
+				// if the root wasn't uninstalled, then continue
+				if (plan.getRemovals().query(QueryUtil.createIUQuery(initialRoot), null).isEmpty())
+					continue;
+				// otherwise add its removal to the change request, along with a negation and 
+				// change of strict to optional for their inclusion rule.
+				finalRequest.remove(initialRoot);
+				finalRequest.setInstallableUnitProfileProperty(initialRoot, INCLUSION_RULES, INCLUSION_OPTIONAL);
+				IRequirement negation = createNegation(initialRoot);
+				Collection<IRequirement> extra = new ArrayList<IRequirement>();
+				extra.add(negation);
+				request.addExtraRequirements(extra);
+				LogHelper.log(new Status(IStatus.INFO, Activator.ID, NLS.bind(Messages.remove_root, initialRoot.getId(), initialRoot.getVersion())));
+				removedRoots++;
+			}
+
+			// Check for the case where all the strict roots are being removed.
+			if (removedRoots == strictRoots.size())
+				return new Status(IStatus.ERROR, Activator.ID, Messages.remove_all_roots);
+			plan = createProvisioningPlan(finalRequest, context, monitor);
+			if (!plan.getStatus().isOK()) {
+				System.out.println("original request"); //$NON-NLS-1$
+				System.out.println(request);
+				System.out.println("final request"); //$NON-NLS-1$
+				System.out.println(finalRequest);
+				throw new IllegalStateException("The second plan is not resolvable."); //$NON-NLS-1$
+			}
+		}
+
+		// execute the plan and return the status
+		return executePlan(plan, context, monitor);
+	}
+
+	/*
+	 * If the request contains IUs to be moved then create and execute a plan which 
+	 * removes them. Otherwise just return.
+	 */
+	private IStatus performRemoveForMovedIUs(ReconcilerProfileChangeRequest request, ProvisioningContext context, IProgressMonitor monitor) {
+		Collection<IInstallableUnit> moves = request.getMoves();
+		if (moves.isEmpty())
+			return Status.OK_STATUS;
+		IEngine engine = (IEngine) agent.getService(IEngine.SERVICE_NAME);
+		IProvisioningPlan plan = engine.createPlan(profile, context);
+		for (IInstallableUnit unit : moves)
+			plan.removeInstallableUnit(unit);
+		return executePlan(plan, context, monitor);
+	}
+
+	/*
+	 * Write out the timestamps of various repositories and folders/file to help 
+	 * us cache and detect cases where we don't have to perform a reconciliation.
+	 */
 	private void writeTimestamps() {
 		timestamps.clear();
 		timestamps.put(PROFILE_TIMESTAMP, Long.toString(profile.getTimestamp()));
@@ -167,6 +291,10 @@ public class ProfileSynchronizer {
 		}
 	}
 
+	/*
+	 * Check timestamps and return true if the profile is considered to be up-to-date or
+	 * false if we should perform a reconciliation.
+	 */
 	private boolean isUpToDate() {
 		// the user might want to force a reconciliation
 		if ("true".equals(Activator.getContext().getProperty("osgi.checkConfiguration"))) //$NON-NLS-1$//$NON-NLS-2$
@@ -205,6 +333,9 @@ public class ProfileSynchronizer {
 		return true;
 	}
 
+	/*
+	 * Read the values of the stored timestamps that we use for caching.
+	 */
 	private void readTimestamps() {
 		File file = Activator.getContext().getDataFile(TIMESTAMPS_FILE_PREFIX + profile.getProfileId().hashCode());
 		try {
@@ -339,7 +470,7 @@ public class ProfileSynchronizer {
 	 * as part of equality)
 	 */
 	public ReconcilerProfileChangeRequest createProfileChangeRequest(ProvisioningContext context) {
-		ReconcilerProfileChangeRequest request = new ReconcilerProfileChangeRequest(profile, false);
+		ReconcilerProfileChangeRequest request = new ReconcilerProfileChangeRequest(profile);
 
 		boolean resolve = Boolean.valueOf(profile.getProperty("org.eclipse.equinox.p2.resolve")).booleanValue(); //$NON-NLS-1$
 		if (resolve)
@@ -418,41 +549,37 @@ public class ProfileSynchronizer {
 			return null;
 		}
 
-		// if we have just a regular add/remove then set up the change request as per normal
-		if (toMove.isEmpty()) {
-			context.setExtraInstallableUnits(toAdd);
-			request.addAll(toAdd);
-			request.removeAll(toRemove);
-		} else {
-			// if we had some bundles which moved locations then we need to create a move change request
-			// and remove the moved bundles first. The caller of this method will take care of calling us again
-			// to re-add the bundles at their new location (and other bundles which need adding)
-			request = new ReconcilerProfileChangeRequest(profile, true);
-			request.removeAll(toMove);
-		}
-
-		// force removal of all moved and removed IUs, which will also remove anything which depends on them
-		// see: bug 306424#c6 and bug 308934.
-		Collection<IRequirement> extraReqs = new ArrayList<IRequirement>();
-		for (IInstallableUnit unit : request.getRemovals()) {
-			IRequirement negation = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, unit.getId(), //
-					new VersionRange(unit.getVersion(), true, unit.getVersion(), true), null, 0, 0, false);
-			extraReqs.add(negation);
-		}
-		request.addExtraRequirements(extraReqs);
+		context.setExtraInstallableUnits(toAdd);
+		request.addAll(toAdd);
+		request.removeAll(toRemove);
+		request.moveAll(toMove);
+
 		debug(request);
 		return request;
 	}
 
-	private void debug(ProfileChangeRequest request, IProvisioningPlan plan) {
+	/*
+	 * Create and return a negated requirement saying that the given IU must not exist in the profile.
+	 */
+	private IRequirement createNegation(IInstallableUnit unit) {
+		return MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, unit.getId(), //
+				new VersionRange(unit.getVersion(), true, unit.getVersion(), true), null, 0, 0, false);
+	}
+
+	/*
+	 * If in debug mode, print out information which tells us whether or not the given 
+	 * provisioning plan matches the request.
+	 */
+	private void debug(ReconcilerProfileChangeRequest request, IProvisioningPlan plan) {
 		if (!Tracing.DEBUG_RECONCILER)
 			return;
 		final String PREFIX = "[reconciler] [plan] "; //$NON-NLS-1$
 		// get the request
 		List<IInstallableUnit> toAdd = new ArrayList<IInstallableUnit>(request.getAdditions());
 		List<IInstallableUnit> toRemove = new ArrayList<IInstallableUnit>(request.getRemovals());
-		// remove from the request everything that is in the plan
+		List<IInstallableUnit> toMove = new ArrayList<IInstallableUnit>(request.getMoves());
 
+		// remove from the request everything that is in the plan
 		for (Iterator<IInstallableUnit> iterator = plan.getRemovals().query(QueryUtil.createIUAnyQuery(), null).iterator(); iterator.hasNext();) {
 			IInstallableUnit iu = iterator.next();
 			toRemove.remove(iu);
@@ -461,6 +588,10 @@ public class ProfileSynchronizer {
 			IInstallableUnit iu = iterator.next();
 			toAdd.remove(iu);
 		}
+		// Move operations are treated as doing a remove/add. The removes have already happened
+		// and at this point we are adding the moved IUs back at their new location. Remove the moved
+		// IUs from the added list because this will just confuse the user.
+		toAdd.removeAll(toMove);
 
 		// if anything is left in the request, then something is wrong with the plan
 		if (toAdd.size() == 0 && toRemove.size() == 0)
@@ -480,7 +611,7 @@ public class ProfileSynchronizer {
 	/*
 	 * If debugging is turned on, then print out the details for the given profile change request.
 	 */
-	private void debug(ProfileChangeRequest request) {
+	private void debug(ReconcilerProfileChangeRequest request) {
 		if (!Tracing.DEBUG_RECONCILER)
 			return;
 		final String PREFIX = "[reconciler] "; //$NON-NLS-1$
@@ -518,6 +649,14 @@ public class ProfileSynchronizer {
 			}
 		}
 
+		Collection<IInstallableUnit> toMove = request.getMoves();
+		if (toMove == null || toMove.isEmpty()) {
+			Tracing.debug(PREFIX + "No installable units to move."); //$NON-NLS-1$
+		} else {
+			for (IInstallableUnit move : toMove)
+				Tracing.debug(PREFIX + "Moving IU: " + move.getId() + ' ' + move.getVersion()); //$NON-NLS-1$
+		}
+
 		Collection<IRequirement> extra = request.getExtraRequirements();
 		if (extra == null || extra.isEmpty()) {
 			Tracing.debug(PREFIX + "No extra requirements."); //$NON-NLS-1$
@@ -540,11 +679,17 @@ public class ProfileSynchronizer {
 		return allRepos;
 	}
 
+	/*
+	 * Create and return a provisioning plan for the given change request.
+	 */
 	private IProvisioningPlan createProvisioningPlan(ProfileChangeRequest request, ProvisioningContext provisioningContext, IProgressMonitor monitor) {
 		IPlanner planner = (IPlanner) agent.getService(IPlanner.SERVICE_NAME);
 		return planner.getProvisioningPlan(request, provisioningContext, monitor);
 	}
 
+	/*
+	 * Call the engine to set the given property on the profile.
+	 */
 	private IStatus setProperty(String key, String value, ProvisioningContext provisioningContext, IProgressMonitor monitor) {
 		IEngine engine = (IEngine) agent.getService(IEngine.SERVICE_NAME);
 		IProvisioningPlan plan = engine.createPlan(profile, provisioningContext);
@@ -553,6 +698,9 @@ public class ProfileSynchronizer {
 		return engine.perform(plan, phaseSet, monitor);
 	}
 
+	/*
+	 * Execute the given plan.
+	 */
 	private IStatus executePlan(IProvisioningPlan plan, ProvisioningContext provisioningContext, IProgressMonitor monitor) {
 		IEngine engine = (IEngine) agent.getService(IEngine.SERVICE_NAME);
 		IPhaseSet phaseSet = PhaseSetFactory.createDefaultPhaseSetExcluding(new String[] {PhaseSetFactory.PHASE_COLLECT, PhaseSetFactory.PHASE_CHECK_TRUST});
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/messages.properties
index c8b618c..148b27a 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
+# Copyright (c) 2007, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
 #
 # Contributors:
 #     IBM Corporation - initial API and implementation
+#		Sonatype Inc. - Ongoing development
 ###############################################################################
 artifact_repo_manager_not_registered=ArtifactRepositoryManager not registered.
 errorLoadingRepository=Error occurred while loading repository at {0}.
@@ -14,4 +15,5 @@ errorProcessingConfg=Exception while processing configuration.
 metadata_repo_manager_not_registered=MetadataRepositoryManager not registered.
 error_reading_link = Error occurred while reading link file at {0}.
 error_resolving_link = Error occurred while resolving linked folder {0} from {1}.
- 
\ No newline at end of file
+remove_root = The installable unit {0} version {1} has been uninstalled during the reconciliation.
+remove_all_roots = The reconciliation has been aborted because the changes made to the installation are causing the loss of all roots.
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
index d4168db..30fca24 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
@@ -182,7 +182,7 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
 			IQueryable<IInstallableUnit> slice = slice(new NullProgressMonitor());
 			if (destinationArtifactRepository != null) {
 				mirrorStatus = mirrorArtifacts(slice, new NullProgressMonitor());
-				if (mirrorStatus.getSeverity() == IStatus.ERROR)
+				if (failOnError && mirrorStatus.getSeverity() == IStatus.ERROR)
 					return mirrorStatus;
 			}
 			if (destinationMetadataRepository != null)
@@ -272,8 +272,8 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
 			sourceIUs = new ArrayList<IInstallableUnit>();
 			for (int i = 0; i < rootIUs.length; i++) {
 				String[] segments = getArrayArgsFromString(rootIUs[i], "/"); //$NON-NLS-1$
-				VersionRange range = segments.length > 1 ? new VersionRange(segments[i]) : null;
-				Iterator<IInstallableUnit> queryResult = metadataRepo.query(QueryUtil.createIUQuery(segments[i], range), null).iterator();
+				VersionRange range = segments.length > 1 ? new VersionRange(segments[1]) : null;
+				Iterator<IInstallableUnit> queryResult = metadataRepo.query(QueryUtil.createIUQuery(segments[0], range), null).iterator();
 				while (queryResult.hasNext())
 					sourceIUs.add(queryResult.next());
 			}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
index adaa79a..bd2a2b8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
@@ -7,12 +7,12 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 
 package org.eclipse.equinox.p2.internal.repository.tools;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.URI;
 import java.util.*;
 import org.eclipse.core.runtime.*;
@@ -84,14 +84,10 @@ public class RecreateRepositoryApplication extends AbstractApplication {
 		manager.removeRepository(repository.getLocation());
 
 		boolean compressed = Boolean.valueOf(repoProperties.get(IRepository.PROP_COMPRESSED)).booleanValue();
-		try {
-			URI realLocation = SimpleArtifactRepository.getActualLocation(repository.getLocation(), compressed);
-			File realFile = URIUtil.toFile(realLocation);
-			if (!realFile.exists() || !realFile.delete())
-				throw new ProvisionException(NLS.bind(Messages.exception_unableToRemoveRepo, realFile.toString()));
-		} catch (IOException e) {
-			throw new ProvisionException(NLS.bind(Messages.exception_unableToRemoveRepo, repository.getLocation().toString()));
-		}
+		URI realLocation = SimpleArtifactRepository.getActualLocation(repository.getLocation(), compressed);
+		File realFile = URIUtil.toFile(realLocation);
+		if (!realFile.exists() || !realFile.delete())
+			throw new ProvisionException(NLS.bind(Messages.exception_unableToRemoveRepo, realFile.toString()));
 	}
 
 	private void recreateRepository(IProgressMonitor monitor) throws ProvisionException {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
index 04f5e7f..57818e5 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.equinox.p2.internal.repository.tools;
 
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.*;
 import org.eclipse.core.runtime.*;
@@ -125,6 +126,8 @@ public class Repo2Runnable extends AbstractApplication implements IApplication {
 			if (engine == null)
 				throw new ProvisionException(Messages.exception_noEngineService);
 			ProvisioningContext context = new ProvisioningContext(agent);
+			context.setMetadataRepositories(getRepositories(true));
+			context.setArtifactRepositories(getRepositories(false));
 			IProvisioningPlan plan = engine.createPlan(profile, context);
 			for (Iterator<IInstallableUnit> iterator = processedIUs.iterator(); iterator.hasNext();) {
 				plan.addInstallableUnit(iterator.next());
@@ -146,6 +149,15 @@ public class Repo2Runnable extends AbstractApplication implements IApplication {
 		}
 	}
 
+	protected URI[] getRepositories(boolean metadata) {
+		List<URI> repos = new ArrayList<URI>();
+		for (RepositoryDescriptor repo : sourceRepositories) {
+			if (metadata ? repo.isMetadata() : repo.isArtifact())
+				repos.add(repo.getRepoLocation());
+		}
+		return repos.toArray(new URI[repos.size()]);
+	}
+
 	protected PhaseSet getPhaseSet() {
 		return new PhaseSet(new Phase[] {new Collect(100)}) { /* nothing to override */};
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/MirrorTask.java b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/MirrorTask.java
index b4cd7fe..8221b13 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/MirrorTask.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/MirrorTask.java
@@ -27,6 +27,7 @@ public class MirrorTask extends AbstractRepositoryTask {
 
 	private File mirrorLog; // file to log mirror output to (optional)
 	private ComparatorDescription comparator;
+	private boolean ignoreErrors = false;
 
 	public MirrorTask() {
 		application = new MirrorApplication();
@@ -59,7 +60,7 @@ public class MirrorTask extends AbstractRepositoryTask {
 			List<IInstallableUnit> ius = prepareIUs();
 			application.setSourceIUs(ius);
 			IStatus result = application.run(null);
-			if (result.matches(IStatus.ERROR))
+			if (!ignoreErrors && result.matches(IStatus.ERROR))
 				throw new BuildException(TaskHelper.statusToString(result, IStatus.ERROR, null).toString());
 		} catch (ProvisionException e) {
 			throw new BuildException(e);
@@ -111,6 +112,7 @@ public class MirrorTask extends AbstractRepositoryTask {
 	 * Set whether or not we should ignore errors when running the mirror application.
 	 */
 	public void setIgnoreErrors(boolean value) {
+		ignoreErrors = value;
 		((MirrorApplication) application).setIgnoreErrors(value);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/RemoveIUTask.java b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/RemoveIUTask.java
index 566e522..447f605 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/RemoveIUTask.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/RemoveIUTask.java
@@ -81,7 +81,7 @@ public class RemoveIUTask extends AbstractRepositoryTask {
 						}
 
 						//we will only remove the metadata if all artifacts were removed
-						boolean removeMetadata = true;
+						boolean removeMetadata = (filter != null ? keys.size() > 0 : true);
 						for (IArtifactKey key : keys) {
 							if (filter == null) {
 								artifacts.removeDescriptor(key);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/.project b/eclipse/plugins/org.eclipse.equinox.p2.repository/.project
index 120c042..ee1e670 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/.project
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/.project
@@ -25,6 +25,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
index 8c9fb23..63428ef 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
@@ -55,3 +55,4 @@ Import-Package: javax.xml.parsers,
  org.osgi.util.tracker;version="1.3.0",
  org.xml.sax,
  org.xml.sax.helpers
+Service-Component: OSGI-INF/cacheManager.xml
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/OSGI-INF/cacheManager.xml b/eclipse/plugins/org.eclipse.equinox.p2.repository/OSGI-INF/cacheManager.xml
new file mode 100644
index 0000000..d04c8df
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/OSGI-INF/cacheManager.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.equinox.p2.repository">
+   <implementation class="org.eclipse.equinox.internal.p2.repository.CacheManagerComponent"/>
+   <service>
+      <provide interface="org.eclipse.equinox.p2.core.spi.IAgentServiceFactory"/>
+   </service>
+   <property name="p2.agent.servicename" type="String" value="org.eclipse.equinox.internal.p2.repository.CacheManager"/>
+</scr:component>
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/build.properties b/eclipse/plugins/org.eclipse.equinox.p2.repository/build.properties
index 7ac06b4..82222b8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/build.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/build.properties
@@ -1,19 +1,10 @@
-###############################################################################
-#  Copyright (c) 2005, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
-#      IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
                about.html,\
-               plugin.properties
+               plugin.properties,\
+               OSGI-INF/cacheManager.xml
 src.includes = about.html
-javacTarget=jsr14
-javacSource=1.5
+javacSource = 1.5
+javacTarget = jsr14
+source.. = src/
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
new file mode 100644
index 0000000..e2fe061
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     Cloudsmith Inc - additional implementation
+ *     Sonatype Inc - additional implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.repository;
+
+import java.io.*;
+import java.net.URI;
+import java.util.EventObject;
+import java.util.HashSet;
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.filetransfer.UserCancelledException;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
+import org.eclipse.equinox.internal.provisional.p2.core.eventbus.SynchronousProvisioningListener;
+import org.eclipse.equinox.internal.provisional.p2.repository.IStateful;
+import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
+import org.eclipse.equinox.p2.core.IAgentLocation;
+import org.eclipse.equinox.p2.core.ProvisionException;
+import org.eclipse.equinox.p2.repository.IRepository;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * A class to manage metadata cache files. Creating the cache files will place
+ * the file in the AgentData location in a cache directory.
+ * 
+ * Using the bus listeners will allow the manager to listen for repository
+ * events. When a repository is removed, it will remove the cache file if one
+ * was created for the repository.
+ */
+public class CacheManager {
+	/**
+	 * Service name for the internal cache manager service.
+	 */
+	public static final String SERVICE_NAME = CacheManager.class.getName();
+
+	private final IAgentLocation agentLocation;
+
+	/**
+	 * IStateful implementation of BufferedOutputStream. Class is used to get the status from
+	 * a download operation.
+	 */
+	private static class StatefulStream extends BufferedOutputStream implements IStateful {
+		private IStatus status;
+
+		public StatefulStream(OutputStream stream) {
+			super(stream);
+		}
+
+		public IStatus getStatus() {
+
+			return status;
+		}
+
+		public void setStatus(IStatus aStatus) {
+			status = aStatus;
+		}
+
+	}
+
+	public CacheManager(IAgentLocation agentLocation) {
+		this.agentLocation = agentLocation;
+	}
+
+	private static SynchronousProvisioningListener busListener;
+	private static final String DOWNLOADING = "downloading"; //$NON-NLS-1$
+	private static final String JAR_EXTENSION = ".jar"; //$NON-NLS-1$
+	private static final String XML_EXTENSION = ".xml"; //$NON-NLS-1$
+
+	private final HashSet<String> knownPrefixes = new HashSet<String>(5);
+
+	/**
+	 * Returns a hash of the repository location.
+	 */
+	private int computeHash(URI repositoryLocation) {
+		return repositoryLocation.hashCode();
+	}
+
+	/**
+	 * Returns a local cache file with the contents of the given remote location,
+	 * or <code>null</code> if a local cache could not be created.
+	 * 
+	 * @param repositoryLocation The remote location to be cached
+	 * @param prefix The prefix to use when creating the cache file
+	 * @param monitor a progress monitor
+	 * @return A {@link File} object pointing to the cache file or <code>null</code>
+	 * if the location is not a repository.
+	 * @throws FileNotFoundException if neither jar nor xml index file exists at given location 
+	 * @throws AuthenticationFailedException if jar not available and xml causes authentication fail
+	 * @throws IOException on general IO errors
+	 * @throws ProvisionException on any error (e.g. user cancellation, unknown host, malformed address, connection refused, etc.)
+	 * @throws OperationCanceledException - if user canceled
+	 */
+	public File createCache(URI repositoryLocation, String prefix, IProgressMonitor monitor) throws IOException, ProvisionException {
+
+		SubMonitor submonitor = SubMonitor.convert(monitor, 1000);
+		try {
+			knownPrefixes.add(prefix);
+			File cacheFile = getCache(repositoryLocation, prefix);
+			URI jarLocation = URIUtil.append(repositoryLocation, prefix + JAR_EXTENSION);
+			URI xmlLocation = URIUtil.append(repositoryLocation, prefix + XML_EXTENSION);
+			int hashCode = computeHash(repositoryLocation);
+
+			// Knowing if cache is stale is complicated by the fact that a jar could have been 
+			// produced after an xml index (and vice versa), and by the need to capture any
+			// errors, as these needs to be reported to the user as something meaningful - instead of
+			// just a general "can't read repository".
+			// (Previous impl of stale checking ignored errors, and caused multiple round-trips)
+			boolean stale = true;
+			long lastModified = 0L;
+			String name = null;
+			String useExtension = JAR_EXTENSION;
+			URI remoteFile = jarLocation;
+
+			if (cacheFile != null) {
+				lastModified = cacheFile.lastModified();
+				name = cacheFile.getName();
+			}
+			// get last modified on jar
+			long lastModifiedRemote = 0L;
+			// bug 269588 - server may return 0 when file exists, so extra flag is needed
+			boolean useJar = true;
+			try {
+				lastModifiedRemote = getTransport().getLastModified(jarLocation, submonitor.newChild(1));
+				if (lastModifiedRemote <= 0)
+					LogHelper.log(new Status(IStatus.WARNING, Activator.ID, "Server returned lastModified <= 0 for " + jarLocation)); //$NON-NLS-1$
+			} catch (AuthenticationFailedException e) {
+				// it is not meaningful to continue - the credentials are for the server
+				// do not pass the exception - it gives no additional meaningful user information
+				throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_AUTHENTICATION, NLS.bind(Messages.CacheManager_AuthenticationFaileFor_0, repositoryLocation), null));
+			} catch (CoreException e) {
+				useJar = false;
+				// give up on a timeout - if we did not get a 404 on the jar, we will just prolong the pain
+				// by (almost certainly) also timing out on the xml.
+				if (e.getStatus() != null && e.getStatus().getException() != null) {
+					Throwable ex = e.getStatus().getException();
+					if (ex.getClass() == java.net.SocketTimeoutException.class)
+						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_READ, NLS.bind(Messages.CacheManager_FailedCommunicationWithRepo_0, repositoryLocation), ex));
+				}
+			} catch (OperationCanceledException e) {
+				// must pass this on
+				throw e;
+			} catch (Exception e) {
+				// not ideal, just skip the jar on error, and try the xml instead - report errors for
+				// the xml.
+				useJar = false;
+			}
+			if (submonitor.isCanceled())
+				throw new OperationCanceledException();
+
+			if (useJar) {
+				// There is a jar, and it should be used - cache is stale if it is xml based or
+				// if older (irrespective of jar or xml).
+				// Bug 269588 - also stale if remote reports 0
+				stale = lastModifiedRemote > lastModified || (name != null && name.endsWith(XML_EXTENSION) || lastModifiedRemote <= 0);
+			} else {
+				// Also need to check remote XML file, and handle cancel, and errors
+				// (Status is reported based on finding the XML file as giving up on certain errors
+				// when checking for the jar may not be correct).
+				try {
+					lastModifiedRemote = getTransport().getLastModified(xmlLocation, submonitor.newChild(1));
+					// if lastModifiedRemote is 0 - something is wrong in the communication stack, as 
+					// a FileNotFound exception should have been thrown.
+					// bug 269588 - server may return 0 when file exists - site is not correctly configured
+					if (lastModifiedRemote <= 0)
+						LogHelper.log(new Status(IStatus.WARNING, Activator.ID, "Server returned lastModified <= 0 for " + xmlLocation)); //$NON-NLS-1$
+
+				} catch (UserCancelledException e) {
+					throw new OperationCanceledException();
+				} catch (FileNotFoundException e) {
+					throw new FileNotFoundException(NLS.bind(Messages.CacheManager_Neither_0_nor_1_found, jarLocation, xmlLocation));
+				} catch (AuthenticationFailedException e) {
+					// do not pass the exception, it provides no additional meaningful user information
+					throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_AUTHENTICATION, NLS.bind(Messages.CacheManager_AuthenticationFaileFor_0, repositoryLocation), null));
+				} catch (CoreException e) {
+					IStatus status = e.getStatus();
+					if (status == null)
+						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, NLS.bind(Messages.CacheManager_FailedCommunicationWithRepo_0, repositoryLocation), e));
+					else if (status.getException() instanceof FileNotFoundException)
+						throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, status.getMessage(), null));
+					throw new ProvisionException(status);
+
+				}
+				// There is an xml, and it should be used - cache is stale if it is jar based or
+				// if older (irrespective of jar or xml).
+				// bug 269588 - server may return 0 when file exists - assume it is stale
+				stale = lastModifiedRemote > lastModified || (name != null && name.endsWith(JAR_EXTENSION) || lastModifiedRemote <= 0);
+				useExtension = XML_EXTENSION;
+				remoteFile = xmlLocation;
+			}
+
+			if (!stale)
+				return cacheFile;
+
+			// The cache is stale or missing, so we need to update it from the remote location
+			cacheFile = new File(getCacheDirectory(), prefix + hashCode + useExtension);
+			updateCache(cacheFile, remoteFile, lastModifiedRemote, submonitor);
+			return cacheFile;
+		} finally {
+			submonitor.done();
+		}
+	}
+
+	/**
+	 * Deletes the local cache file(s) for the given repository
+	 * @param repositoryLocation
+	 */
+	void deleteCache(URI repositoryLocation) {
+		for (String prefix : knownPrefixes) {
+			File[] cacheFiles = getCacheFiles(repositoryLocation, prefix);
+			for (int i = 0; i < cacheFiles.length; i++) {
+				// delete the cache file if it exists
+				safeDelete(cacheFiles[i]);
+				// delete a resumable download if it exists
+				safeDelete(new File(new File(cacheFiles[i].getParentFile(), DOWNLOADING), cacheFiles[i].getName()));
+			}
+		}
+	}
+
+	/**
+	 * Determines the local file path of the repository's cache file.
+	 * @param repositoryLocation The location to compute the cache for
+	 * @param prefix The prefix to use for this location
+	 * @return A {@link File} pointing to the cache file or <code>null</code> if
+	 * the cache file does not exist.
+	 */
+	private File getCache(URI repositoryLocation, String prefix) {
+		File[] files = getCacheFiles(repositoryLocation, prefix);
+		if (files[0].exists())
+			return files[0];
+		return files[1].exists() ? files[1] : null;
+	}
+
+	/**
+	 * Returns the file corresponding to the data area to be used by the cache manager.
+	 */
+	private File getCacheDirectory() {
+		return URIUtil.toFile(agentLocation.getDataArea(Activator.ID + "/cache/")); //$NON-NLS-1$
+	}
+
+	/**
+	 * Determines the local file paths of the repository's potential cache files.
+	 * @param repositoryLocation The location to compute the cache for
+	 * @param prefix The prefix to use for this location
+	 * @return A {@link File} array with the cache files for JAR and XML extensions.
+	 */
+	private File[] getCacheFiles(URI repositoryLocation, String prefix) {
+		File[] files = new File[2];
+		File dataAreaFile = getCacheDirectory();
+		int hashCode = computeHash(repositoryLocation);
+		files[0] = new File(dataAreaFile, prefix + hashCode + JAR_EXTENSION);
+		files[1] = new File(dataAreaFile, prefix + hashCode + XML_EXTENSION);
+		return files;
+	}
+
+	private RepositoryTransport getTransport() {
+		return RepositoryTransport.getInstance();
+	}
+
+	/**
+	 * Adds a {@link SynchronousProvisioningListener} to the event bus for
+	 * deleting cache files when the corresponding repository is deleted.
+	 */
+	private void registerRepoEventListener(IProvisioningEventBus eventBus) {
+		if (busListener == null) {
+			busListener = new SynchronousProvisioningListener() {
+				public void notify(EventObject o) {
+					if (o instanceof RepositoryEvent) {
+						RepositoryEvent event = (RepositoryEvent) o;
+						if (RepositoryEvent.REMOVED == event.getKind() && IRepository.TYPE_METADATA == event.getRepositoryType()) {
+							deleteCache(event.getRepositoryLocation());
+						}
+					}
+				}
+			};
+		}
+		// the bus could have disappeared and is now back again - so do this every time
+		eventBus.addListener(busListener);
+	}
+
+	private boolean safeDelete(File file) {
+		if (file.exists()) {
+			if (!file.delete()) {
+				file.deleteOnExit();
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public void setEventBus(IProvisioningEventBus newBus) {
+		registerRepoEventListener(newBus);
+	}
+
+	public void unsetEventBus(IProvisioningEventBus oldBus) {
+		unregisterRepoEventListener(oldBus);
+	}
+
+	/**
+	 * Removes the {@link SynchronousProvisioningListener} that cleans up the
+	 * cache file from the event bus.
+	 */
+	private void unregisterRepoEventListener(IProvisioningEventBus bus) {
+		if (bus != null && busListener != null)
+			bus.removeListener(busListener);
+	}
+
+	private void updateCache(File cacheFile, URI remoteFile, long lastModifiedRemote, SubMonitor submonitor) throws FileNotFoundException, IOException, ProvisionException {
+		cacheFile.getParentFile().mkdirs();
+		File downloadDir = new File(cacheFile.getParentFile(), DOWNLOADING);
+		if (!downloadDir.exists())
+			downloadDir.mkdir();
+		File tempFile = new File(downloadDir, cacheFile.getName());
+		// Ensure that the file from a previous download attempt is removed 
+		if (tempFile.exists())
+			safeDelete(tempFile);
+
+		tempFile.createNewFile();
+
+		StatefulStream stream = null;
+		try {
+			stream = new StatefulStream(new FileOutputStream(tempFile));
+		} catch (Exception e) {
+			throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, e.getMessage(), e));
+		}
+		IStatus result = null;
+		try {
+			submonitor.setWorkRemaining(1000);
+			result = getTransport().download(remoteFile, stream, submonitor.newChild(1000));
+		} catch (OperationCanceledException e) {
+			// need to pick up the status - a new operation canceled exception is thrown at the end
+			// as status will be CANCEL.
+			result = stream.getStatus();
+		} finally {
+			stream.close();
+			// If there was any problem fetching the file, delete the temp file
+			if (result == null || !result.isOK())
+				safeDelete(tempFile);
+		}
+		if (result.isOK()) {
+			if (cacheFile.exists())
+				safeDelete(cacheFile);
+			if (tempFile.renameTo(cacheFile))
+				return;
+		}
+
+		if (result.getSeverity() == IStatus.CANCEL || submonitor.isCanceled())
+			throw new OperationCanceledException();
+		throw new ProvisionException(result);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManagerComponent.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManagerComponent.java
new file mode 100644
index 0000000..26d5851
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManagerComponent.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ *  Copyright (c) 2010 Sonatype, Inc and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.repository;
+
+import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
+import org.eclipse.equinox.p2.core.IAgentLocation;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
+
+public class CacheManagerComponent implements IAgentServiceFactory {
+
+	public Object createService(IProvisioningAgent agent) {
+		final IProvisioningEventBus eventBus = (IProvisioningEventBus) agent.getService(IProvisioningEventBus.SERVICE_NAME);
+		CacheManager cache = new CacheManager((IAgentLocation) agent.getService(IAgentLocation.SERVICE_NAME));
+		cache.setEventBus(eventBus);
+		return cache;
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
index d45e858..0a9bb7e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, IBM Corporation and others.
+ * Copyright (c) 2009,2010 IBM Corporation and others.
  * The code, documentation and other materials contained herein have been
  * licensed under the Eclipse Public License - v 1.0 by the copyright holder
  * listed above, as the Initial Contributor under such license. The text of
@@ -7,6 +7,7 @@
  * Contributors:
  * 	IBM Corporation - Initial API and implementation
  *  Cloudsmith Inc - Implementation
+ *  Sonatype Inc - Ongoing development
  ******************************************************************************/
 
 package org.eclipse.equinox.internal.p2.repository;
@@ -195,8 +196,8 @@ public class Credentials {
 				}
 
 				UIServices.AuthenticationInfo latest = restoreFromMemory(nodeName);
-				if (latest != null && lastUsed != null)
-					if (!(latest.getUserName().equals(lastUsed.getUserName()) && latest.getPassword().equals(lastUsed.getPassword())))
+				if (latest != null)
+					if (lastUsed == null || !(latest.getUserName().equals(lastUsed.getUserName()) && latest.getPassword().equals(lastUsed.getPassword())))
 						return latest;
 
 				// check if number of prompts have been exceeded for the host - if so
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/FileReader.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/FileReader.java
index 7531104..fcc92c2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/FileReader.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/FileReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 Cloudsmith Inc.
+ * Copyright (c) 2006, 2010 Cloudsmith Inc.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
  *  Contributors:
  * 	Cloudsmith Inc - initial API and implementation
  * 	IBM Corporation - ongoing development
+ *  Sonatype Inc - ongoing development
  ******************************************************************************/
 package org.eclipse.equinox.internal.p2.repository;
 
@@ -257,6 +258,11 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
 				if (t instanceof IOException)
 					e = (IOException) t;
 				else {
+					if (t instanceof UserCancelledException) {
+						Throwable cause = t;
+						t = new OperationCanceledException(t.getMessage());
+						t.initCause(cause);
+					}
 					e = new IOException(t.getMessage());
 					e.initCause(t);
 				}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
index 2ed09a9..daf6642 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
@@ -8,6 +8,7 @@
  *  Contributors:
  *     IBM Corporation - initial API and implementation
  *     Cloudsmith Inc - additional messages
+ *     Sonatype Inc - ongoing development
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.repository;
 
@@ -16,6 +17,10 @@ import org.eclipse.osgi.util.NLS;
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.repository.messages"; //$NON-NLS-1$
 
+	public static String CacheManager_AuthenticationFaileFor_0;
+	public static String CacheManager_FailedCommunicationWithRepo_0;
+	public static String CacheManager_Neither_0_nor_1_found;
+
 	public static String artifact_not_found;
 	public static String io_failedRead;
 	public static String ecf_configuration_error;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
index 66e362f..b359e26 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
@@ -11,8 +11,7 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.repository.helpers;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
+import java.io.*;
 import java.lang.ref.SoftReference;
 import java.net.*;
 import java.util.*;
@@ -638,17 +637,9 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
 			//add the repository first so that it will be enabled, but don't send add event until after the load
 			added = addRepository(location, true, false);
 
-			// get the search order from the server, if it's available
-			ByteArrayOutputStream index = new ByteArrayOutputStream();
-			LocationProperties locationProperties = null;
-			try {
-				getTransport().download(getIndexFile(location), index, monitor);
-			} catch (Throwable e) {
-				// If any exceptions are thrown, just ignore the index file
-			}
+			LocationProperties indexFile = loadIndexFile(location, monitor);
 
-			locationProperties = LocationProperties.create(new ByteArrayInputStream(index.toByteArray()));
-			String[] preferredOrder = getPreferredRepositorySearchOrder(locationProperties);
+			String[] preferredOrder = getPreferredRepositorySearchOrder(indexFile);
 			String[] suffixes = sortSuffixes(getAllSuffixes(), location, preferredOrder);
 
 			SubMonitor sub = SubMonitor.convert(monitor, NLS.bind(Messages.repoMan_adding, location), suffixes.length * 100);
@@ -678,7 +669,7 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
 				//eagerly cleanup missing system repositories
 				if (Boolean.valueOf(getRepositoryProperty(location, IRepository.PROP_SYSTEM)).booleanValue())
 					removeRepository(location);
-				else if (failure == null || failure.getStatus().getCode() != ProvisionException.REPOSITORY_FAILED_AUTHENTICATION)
+				else if (failure == null || (failure.getStatus().getCode() != ProvisionException.REPOSITORY_FAILED_AUTHENTICATION && failure.getStatus().getCode() != ProvisionException.REPOSITORY_FAILED_READ))
 					rememberNotFound(location);
 				if (failure != null)
 					throw failure;
@@ -694,6 +685,49 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
 	}
 
 	/**
+	 * Fetches the p2.index file from the server. If the file could not be fetched
+	 * a NullSafe version is returned.
+	 */
+	private LocationProperties loadIndexFile(URI location, IProgressMonitor monitor) {
+		LocationProperties locationProperties = LocationProperties.createEmptyIndexFile();
+		//Handle the case of local repos
+		if ("file".equals(location.getScheme())) { //$NON-NLS-1$ 
+			InputStream localStream = null;
+			try {
+				try {
+					File indexFile = URIUtil.toFile(getIndexFileURI(location));
+					if (indexFile != null && indexFile.exists() && indexFile.canRead()) {
+						localStream = new FileInputStream(indexFile);
+						locationProperties = LocationProperties.create(localStream);
+					}
+				} catch (URISyntaxException e) {
+					LogHelper.log(new Status(IStatus.ERROR, Activator.ID, e.getMessage(), e));
+				} finally {
+					if (localStream != null)
+						localStream.close();
+				}
+			} catch (IOException e) {
+				//do nothing.
+			}
+			return locationProperties;
+		}
+
+		//Handle non local repos (i.e. not file:)
+		ByteArrayOutputStream index = new ByteArrayOutputStream();
+		IStatus indexFileStatus = null;
+		try {
+			indexFileStatus = getTransport().download(getIndexFileURI(location), index, monitor);
+		} catch (URISyntaxException uriSyntaxException) {
+			LogHelper.log(new Status(IStatus.ERROR, Activator.ID, uriSyntaxException.getMessage(), uriSyntaxException));
+			indexFileStatus = null;
+		}
+		if (indexFileStatus != null && indexFileStatus.isOK())
+			locationProperties = LocationProperties.create(new ByteArrayInputStream(index.toByteArray()));
+
+		return locationProperties;
+	}
+
+	/**
 	 * Basic sanity checking on location argument
 	 */
 	private URI checkValidLocation(URI location) {
@@ -1121,7 +1155,7 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
 		}
 	}
 
-	private static URI getIndexFile(URI base) throws URISyntaxException {
+	private static URI getIndexFileURI(URI base) throws URISyntaxException {
 		final String name = INDEX_FILE;
 		String spec = base.toString();
 		if (spec.endsWith(name))
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/LocationProperties.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/LocationProperties.java
index 716f6d6..1b39fd4 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/LocationProperties.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/LocationProperties.java
@@ -51,6 +51,10 @@ public class LocationProperties {
 	private String[] artifactSearchOrder = new String[0]; // Version 1
 	private Map<String, Boolean> md5Hashes = null; // Version 1
 
+	public static LocationProperties createEmptyIndexFile() {
+		return new LocationProperties();
+	}
+
 	/**
 	 * Creates a LocationProperties Object from an input stream. If the LocationProperties
 	 * could be created, it is returned.  If it could not be created, an empty LocationProperties
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
index 15728fe..510885b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
@@ -8,6 +8,7 @@
 #  Contributors:
 #     IBM Corporation - initial API and implementation
 #     Cloudsmith Inc - additional messages
+#     Sonatype Inc - ongoing implementation
 ###############################################################################
 artifact_not_found=Artifact not found: {0}.
 
@@ -18,9 +19,9 @@ ecf_configuration_error=Transport initialization error.
 repoMan_internalError=Internal error.
 repo_loading = Loading the repository {0}
 
-
-
-
+CacheManager_Neither_0_nor_1_found=Neither {0} nor {1} found.
+CacheManager_AuthenticationFaileFor_0=Authentication failed for {0}.
+CacheManager_FailedCommunicationWithRepo_0=Communication with repository at {0} failed.
 
 exception_malformedRepoURI = The repository location ({0}) must be a URI.
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/RepositoryEvent.java b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/RepositoryEvent.java
index 9de78fb..9342c6f 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/RepositoryEvent.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/RepositoryEvent.java
@@ -149,4 +149,40 @@ public class RepositoryEvent extends EventObject {
 		return isEnabled;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see java.util.EventObject#toString()
+	 */
+	public String toString() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append("RepositoryEvent["); //$NON-NLS-1$
+		switch (kind) {
+			case ADDED :
+				buffer.append("ADDED "); //$NON-NLS-1$
+				break;
+			case CHANGED :
+				buffer.append("CHANGED "); //$NON-NLS-1$
+				break;
+			case DISCOVERED :
+				buffer.append("DISCOVERED "); //$NON-NLS-1$
+				break;
+			case ENABLEMENT :
+				buffer.append("ENABLED "); //$NON-NLS-1$
+				break;
+			case REMOVED :
+				buffer.append("REMOVED "); //$NON-NLS-1$
+				break;
+		}
+		if (type == IRepository.TYPE_ARTIFACT)
+			buffer.append("Artifact "); //$NON-NLS-1$
+		else
+			buffer.append("Metadata "); //$NON-NLS-1$
+		// uri
+		buffer.append(getSource().toString());
+		if (nickname != null)
+			buffer.append("Nickname: " + nickname); //$NON-NLS-1$
+		buffer.append(" Enabled: " + Boolean.toString(isEnabled)); //$NON-NLS-1$
+		buffer.append("] "); //$NON-NLS-1$
+		return buffer.toString();
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetLauncherNameAction.java b/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetLauncherNameAction.java
index 01220b8..c9101fe 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetLauncherNameAction.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetLauncherNameAction.java
@@ -42,7 +42,10 @@ public class SetLauncherNameAction extends ProvisioningAction {
 	private static void setLauncher(Manipulator manipulator, IProfile profile, String launcherName) {
 		//Get the launcherData before changing the name so we don't lose anything from the old launcher.ini
 		LauncherData launcherData = manipulator.getLauncherData();
-		((Profile) profile).setProperty(EclipseTouchpoint.PROFILE_PROP_LAUNCHER_NAME, launcherName);
+		if (launcherName != null)
+			((Profile) profile).setProperty(EclipseTouchpoint.PROFILE_PROP_LAUNCHER_NAME, launcherName);
+		else
+			((Profile) profile).removeProperty(EclipseTouchpoint.PROFILE_PROP_LAUNCHER_NAME);
 		launcherData.setLauncher(Util.getLauncherPath(profile));
 	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/ConfigurationParser.java b/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/ConfigurationParser.java
index 14e9f50..ae3e2c3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/ConfigurationParser.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/ConfigurationParser.java
@@ -132,7 +132,7 @@ public class ConfigurationParser implements ConfigurationConstants {
 			try {
 				// do this to ensure the location is an encoded URI
 				URI uri = URIUtil.fromString(url);
-				URI osgiURI = URIUtil.toURI(osgiInstallArea);
+				URI osgiURI = osgiInstallArea != null ? URIUtil.toURI(osgiInstallArea) : null;
 				result.setUrl(getLocation(uri, osgiURI).toString());
 			} catch (URISyntaxException e) {
 				result.setUrl(url);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
index 59c799b..867c41c 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %bundleName
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-SymbolicName: org.eclipse.equinox.p2.ui.admin.rcp; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.p2.ui.admin.rcp.Activator
 Bundle-RequiredExecutionEnvironment: J2SE-1.4,
  CDC-1.1/Foundation-1.1
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java
index 43e5c56..7272c67 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java
@@ -81,7 +81,7 @@ public class ProfilesView extends ProvView {
 
 	protected void addListeners() {
 		super.addListeners();
-		listener = new StructuredViewerProvisioningListener(viewer, ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE);
+		listener = new StructuredViewerProvisioningListener(getClass().getName(), viewer, ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE);
 		ProvUI.addProvisioningListener(listener);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
index cf21efa..08af6d0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
@@ -96,7 +96,7 @@ abstract class RepositoriesView extends ProvView {
 
 	protected void addListeners() {
 		super.addListeners();
-		listener = new StructuredViewerProvisioningListener(viewer, getListenerEventTypes()) {
+		listener = new StructuredViewerProvisioningListener(getClass().getName(), viewer, getListenerEventTypes()) {
 			protected void refreshViewer() {
 				RepositoriesView.this.refreshAll(false);
 			}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
index 00f5f59..286ffc3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
@@ -4,6 +4,7 @@ Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.equinox.p2.ui.discovery;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ui,
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/plugin.xml b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/plugin.xml
index 84a08ec..0622068 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/plugin.xml
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/plugin.xml
@@ -16,10 +16,25 @@
       <command
             id="org.eclipse.equinox.p2.ui.discovery.commands.ShowBundleCatalog"
             name="Show Bundle Catalog">
+         <commandParameter
+               id="org.eclipse.equinox.p2.ui.discovery.commands.DirectoryParameter"
+               name="Directory URL"
+               optional="true">
+         </commandParameter>
+         <commandParameter
+               id="org.eclipse.equinox.p2.ui.discovery.commands.TagsParameter"
+               name="Tags"
+               optional="true">
+         </commandParameter>
       </command>
       <command
             id="org.eclipse.equinox.p2.ui.discovery.commands.ShowRepositoryCatalog"
             name="Show Repository Catalog">
+         <commandParameter
+               id="org.eclipse.equinox.p2.ui.discovery.commands.RepositoryParameter"
+               name="P2 Repository URI"
+               optional="true">
+         </commandParameter>
       </command>
    </extension>
    <extension
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/Messages.java
index cfbf9ea..e8b663a 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/Messages.java
@@ -13,16 +13,13 @@ package org.eclipse.equinox.internal.p2.ui.discovery.commands;
 
 import org.eclipse.osgi.util.NLS;
 
-/**
- * @author David Green
- */
 public class Messages extends NLS {
 
 	private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.ui.discovery.commands.messages"; //$NON-NLS-1$
 
-	public static String ShowConnectorDiscoveryWizardCommandHandler_Install_Connectors;
+	public static String ShowRepositoryCatalogCommandHandler_Location_not_valid_Error;
 
-	public static String ShowConnectorDiscoveryWizardCommandHandler_Unable_To_Install_No_P2;
+	public static String ShowRepositoryCatalogCommandHandler_Required_parameter_not_specified_Error;
 
 	static {
 		// initialize resource bundle
@@ -30,6 +27,7 @@ public class Messages extends NLS {
 	}
 
 	private Messages() {
+		// constructor
 	}
 
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowBundleCatalogCommandHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowBundleCatalogCommandHandler.java
index c6305a8..570bf29 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowBundleCatalogCommandHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowBundleCatalogCommandHandler.java
@@ -10,16 +10,17 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.ui.discovery.commands;
 
-import java.util.Arrays;
+import java.util.*;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.equinox.internal.p2.discovery.Catalog;
 import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore;
-import org.eclipse.equinox.internal.p2.discovery.compatibility.*;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.BundleDiscoveryStrategy;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.RemoteBundleDiscoveryStrategy;
+import org.eclipse.equinox.internal.p2.discovery.model.Tag;
 import org.eclipse.equinox.internal.p2.ui.discovery.util.WorkbenchUtil;
 import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration;
 import org.eclipse.equinox.internal.p2.ui.discovery.wizards.DiscoveryWizard;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardDialog;
 
 /**
@@ -29,43 +30,53 @@ import org.eclipse.jface.wizard.WizardDialog;
  */
 public class ShowBundleCatalogCommandHandler extends AbstractHandler {
 
-	private static final String DEFAULT_DIRECTORY_URL = "http://www.eclipse.org/mylyn/discovery/directory-3.3.xml"; //$NON-NLS-1$
+	private static final String ID_PARAMETER_DIRECTORY = "org.eclipse.equinox.p2.ui.discovery.commands.DirectoryParameter"; //$NON-NLS-1$
 
-	private static final String SYSTEM_PROPERTY_DIRECTORY_URL = "mylyn.discovery.directory"; //$NON-NLS-1$
-
-	private static final String ID_P2_INSTALL_UI = "org.eclipse.equinox.p2.ui.sdk/org.eclipse.equinox.p2.ui.sdk.install"; //$NON-NLS-1$
+	private static final String ID_PARAMETER_TAGS = "org.eclipse.equinox.p2.ui.discovery.commands.TagsParameter"; //$NON-NLS-1$
 
 	public Object execute(ExecutionEvent event) {
-		// check to make sure that the p2 install ui is enabled
-		if (WorkbenchUtil.allowUseOf(ID_P2_INSTALL_UI)) {
-			Catalog catalog = new Catalog();
-			catalog.setTags(Arrays.asList(ConnectorDiscoveryExtensionReader.TAGS));
-
-			// look for descriptors from installed bundles
-			catalog.getDiscoveryStrategies().add(new BundleDiscoveryStrategy());
-
-			// look for remote descriptor
-			String directoryUrl = System.getProperty(SYSTEM_PROPERTY_DIRECTORY_URL, DEFAULT_DIRECTORY_URL);
-			if (directoryUrl.length() > 0) {
-				RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy();
-				remoteDiscoveryStrategy.setDirectoryUrl(directoryUrl);
-				catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy);
+		Set<Tag> tags = new LinkedHashSet<Tag>();
+		String tagString = event.getParameter(ID_PARAMETER_TAGS);
+		if (tagString != null) {
+			String[] tagIds = tagString.split("\\s*,\\s*"); //$NON-NLS-1$
+			for (String id : tagIds) {
+				String[] text = id.split("=", 2); //$NON-NLS-1$
+				Tag tag;
+				if (text.length > 1) {
+					tag = new Tag(text[0], text[1]);
+				} else {
+					tag = new Tag(id, id);
+				}
+				tags.add(tag);
 			}
+		}
 
-			catalog.setEnvironment(DiscoveryCore.createEnvironment());
-			catalog.setVerifyUpdateSiteAvailability(false);
+		Catalog catalog = new Catalog();
 
-			CatalogConfiguration configuration = new CatalogConfiguration();
-			configuration.setShowTagFilter(true);
-			configuration.setSelectedTags(catalog.getTags());
+		// look for descriptors from installed bundles
+		catalog.getDiscoveryStrategies().add(new BundleDiscoveryStrategy());
 
-			DiscoveryWizard wizard = new DiscoveryWizard(catalog, configuration);
-			WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
-			dialog.open();
-		} else {
-			MessageDialog.openWarning(WorkbenchUtil.getShell(), Messages.ShowConnectorDiscoveryWizardCommandHandler_Install_Connectors, Messages.ShowConnectorDiscoveryWizardCommandHandler_Unable_To_Install_No_P2);
+		// look for remote descriptor
+		String directoryUrl = event.getParameter(ID_PARAMETER_DIRECTORY);
+		if (directoryUrl != null && directoryUrl.length() > 0) {
+			RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy();
+			remoteDiscoveryStrategy.setDirectoryUrl(directoryUrl);
+			catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy);
 		}
 
+		catalog.setEnvironment(DiscoveryCore.createEnvironment());
+		catalog.setVerifyUpdateSiteAvailability(true);
+		catalog.setTags(new ArrayList<Tag>(tags));
+
+		CatalogConfiguration configuration = new CatalogConfiguration();
+		configuration.setShowTagFilter(tags.size() > 0);
+		configuration.setSelectedTags(tags);
+
+		DiscoveryWizard wizard = new DiscoveryWizard(catalog, configuration);
+		WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
+		dialog.open();
+
 		return null;
 	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowRepositoryCatalogCommandHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowRepositoryCatalogCommandHandler.java
index 919781a..f4789b4 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowRepositoryCatalogCommandHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/ShowRepositoryCatalogCommandHandler.java
@@ -19,8 +19,8 @@ import org.eclipse.equinox.internal.p2.ui.discovery.repository.RepositoryDiscove
 import org.eclipse.equinox.internal.p2.ui.discovery.util.WorkbenchUtil;
 import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration;
 import org.eclipse.equinox.internal.p2.ui.discovery.wizards.DiscoveryWizard;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * A command that causes the {@link DiscoveryWizard} to appear in a dialog.
@@ -29,37 +29,37 @@ import org.eclipse.jface.wizard.WizardDialog;
  */
 public class ShowRepositoryCatalogCommandHandler extends AbstractHandler {
 
-	private static final String DEFAULT_REPOSITORY_URL = "http://download.eclipse.org/tools/mylyn/update/e3.4"; //$NON-NLS-1$
-
-	private static final String ID_P2_INSTALL_UI = "org.eclipse.equinox.p2.ui.sdk/org.eclipse.equinox.p2.ui.sdk.install"; //$NON-NLS-1$
+	private static final String ID_PARAMETER_REPOSITORY = "org.eclipse.equinox.p2.ui.discovery.commands.RepositoryParameter"; //$NON-NLS-1$
 
 	public Object execute(ExecutionEvent event) throws ExecutionException {
-		// check to make sure that the p2 install ui is enabled
-		if (WorkbenchUtil.allowUseOf(ID_P2_INSTALL_UI)) {
-			Catalog catalog = new Catalog();
+		String location = event.getParameter(ID_PARAMETER_REPOSITORY);
+		if (location == null) {
+			throw new ExecutionException(NLS.bind(Messages.ShowRepositoryCatalogCommandHandler_Required_parameter_not_specified_Error, ID_PARAMETER_REPOSITORY));
+		}
+		URI uri;
+		try {
+			uri = new URI(location);
+		} catch (URISyntaxException e) {
+			throw new ExecutionException(Messages.ShowRepositoryCatalogCommandHandler_Location_not_valid_Error, e);
+		}
 
-			// look for descriptors from installed bundles
-			RepositoryDiscoveryStrategy strategy = new RepositoryDiscoveryStrategy();
-			try {
-				strategy.addLocation(new URI(DEFAULT_REPOSITORY_URL));
-			} catch (URISyntaxException e) {
-				throw new ExecutionException("Invalid location format", e); //$NON-NLS-1$
-			}
-			catalog.getDiscoveryStrategies().add(strategy);
+		Catalog catalog = new Catalog();
 
-			catalog.setEnvironment(DiscoveryCore.createEnvironment());
-			catalog.setVerifyUpdateSiteAvailability(false);
+		RepositoryDiscoveryStrategy strategy = new RepositoryDiscoveryStrategy();
+		strategy.addLocation(uri);
+		catalog.getDiscoveryStrategies().add(strategy);
 
-			CatalogConfiguration configuration = new CatalogConfiguration();
-			configuration.setShowTagFilter(false);
+		catalog.setEnvironment(DiscoveryCore.createEnvironment());
+		catalog.setVerifyUpdateSiteAvailability(false);
 
-			DiscoveryWizard wizard = new DiscoveryWizard(catalog, configuration);
-			WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
-			dialog.open();
-		} else {
-			MessageDialog.openWarning(WorkbenchUtil.getShell(), Messages.ShowConnectorDiscoveryWizardCommandHandler_Install_Connectors, Messages.ShowConnectorDiscoveryWizardCommandHandler_Unable_To_Install_No_P2);
-		}
+		CatalogConfiguration configuration = new CatalogConfiguration();
+		configuration.setShowTagFilter(false);
+
+		DiscoveryWizard wizard = new DiscoveryWizard(catalog, configuration);
+		WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
+		dialog.open();
 
 		return null;
 	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/messages.properties
index 7b53ed3..ec058da 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/commands/messages.properties
@@ -1,2 +1,2 @@
-ShowConnectorDiscoveryWizardCommandHandler_Install_Connectors=Install Connectors
-ShowConnectorDiscoveryWizardCommandHandler_Unable_To_Install_No_P2=Unable to launch connector install since the required p2 plugins are not available. Please contact your software vendor to correct this problem.
+ShowRepositoryCatalogCommandHandler_Location_not_valid_Error=Repository location is not a valid URI
+ShowRepositoryCatalogCommandHandler_Required_parameter_not_specified_Error=Required parameter {0} not specified.
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
index cd6d985..0013101 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
@@ -7,6 +7,7 @@
  * 
  * Contributors:
  *     Tasktop Technologies - initial API and implementation
+ *     David Dubrow - fix for bug 313412 
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.ui.discovery.operations;
 
@@ -204,7 +205,7 @@ public class DiscoveryInstallOperation implements IRunnableWithProgress {
 		Map<String, Version> symbolicNameToVersion = new HashMap<String, Version>();
 		for (IInstallableUnit unit : installableUnits) {
 			Version version = symbolicNameToVersion.get(unit.getId());
-			if (version == null || version.compareTo(unit.getVersion()) == -1) {
+			if (version == null || version.compareTo(unit.getVersion()) < 0) {
 				symbolicNameToVersion.put(unit.getId(), unit.getVersion());
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/ControlListViewer.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/ControlListViewer.java
index ef38792..fc5a6ea 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/ControlListViewer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/ControlListViewer.java
@@ -52,13 +52,15 @@ public abstract class ControlListViewer extends StructuredViewer {
 		scrolled.getVerticalBar().setIncrement(height * 2);
 		scrolled.setExpandHorizontal(true);
 		scrolled.setExpandVertical(true);
+		// bug 311276: can cause unintended scrolling of viewer
+		//scrolled.setShowFocusedControl(true);
 
 		control = new Composite(scrolled, SWT.NONE) {
-			@Override
-			public boolean setFocus() {
-				forceFocus();
-				return true;
-			}
+//			@Override
+//			public boolean setFocus() {
+//				forceFocus();
+//				return true;
+//			}
 
 			@Override
 			public void setVisible(boolean visible) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/FilteredViewer.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/FilteredViewer.java
index c1859b0..6b78e39 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/FilteredViewer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/FilteredViewer.java
@@ -94,13 +94,25 @@ public abstract class FilteredViewer {
 	private void doCreateFindControl(Composite parent) {
 		Label label = new Label(parent, SWT.NONE);
 		label.setText(Messages.ConnectorDiscoveryWizardMainPage_filterLabel);
+		GridDataFactory.swtDefaults().align(SWT.BEGINNING, SWT.CENTER).applyTo(label);
 
 		filterText = new TextSearchControl(parent, automaticFind);
-		filterText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				filterTextChanged();
-			}
-		});
+		if (automaticFind) {
+			filterText.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					filterTextChanged();
+				}
+			});
+		} else {
+			filterText.getTextControl().addTraverseListener(new TraverseListener() {
+				public void keyTraversed(TraverseEvent e) {
+					if (e.detail == SWT.TRAVERSE_RETURN) {
+						e.doit = false;
+						filterTextChanged();
+					}
+				}
+			});
+		}
 		filterText.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetDefaultSelected(SelectionEvent e) {
@@ -112,7 +124,7 @@ public abstract class FilteredViewer {
 				}
 			}
 		});
-		GridDataFactory.fillDefaults().grab(true, false).applyTo(filterText);
+		GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(filterText);
 	}
 
 	private void doCreateHeader() {
@@ -173,7 +185,10 @@ public abstract class FilteredViewer {
 		viewer.refresh(true);
 	}
 
-	void filterTextChanged() {
+	/**
+	 * Invoked whenever the filter text is changed or the user otherwise causes the filter text to change.
+	 */
+	protected void filterTextChanged() {
 		if (refreshJob == null) {
 			refreshJob = doCreateRefreshJob();
 		} else {
@@ -182,6 +197,13 @@ public abstract class FilteredViewer {
 		refreshJob.schedule(refreshJobDelay);
 	}
 
+	/**
+	 * Provides the text string of the search widget.
+	 */
+	protected String getFilterText() {
+		return filterText == null ? null : filterText.getTextControl().getText();
+	}
+
 	public Control getControl() {
 		return container;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
index 245f6e4..6f7d1b9 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
@@ -16,6 +16,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.SiteVerifier;
 import org.eclipse.equinox.internal.p2.discovery.model.*;
 import org.eclipse.equinox.internal.p2.discovery.util.CatalogCategoryComparator;
 import org.eclipse.equinox.internal.p2.discovery.util.CatalogItemComparator;
@@ -235,21 +236,25 @@ public class CatalogViewer extends FilteredViewer {
 	}
 
 	protected void catalogUpdated(boolean wasCancelled, boolean wasError) {
-		if (catalog != null && !wasCancelled) {
-			int categoryWithConnectorCount = 0;
-			for (CatalogCategory category : catalog.getCategories()) {
-				categoryWithConnectorCount += category.getItems().size();
-			}
-			if (categoryWithConnectorCount == 0 && !wasError) {
-				// nothing was discovered: notify the user
-				MessageDialog.openWarning(getShell(), Messages.ConnectorDiscoveryWizardMainPage_noConnectorsFound, Messages.ConnectorDiscoveryWizardMainPage_noConnectorsFound_description);
-			}
+		if (catalog != null && !wasCancelled && !wasError) {
+			doCheckCatalog();
 		}
 		viewer.setInput(catalog);
 		selectionProvider.setSelection(StructuredSelection.EMPTY);
 	}
 
-	private IStatus computeStatus(InvocationTargetException e, String message) {
+	protected void doCheckCatalog() {
+		int categoryWithConnectorCount = 0;
+		for (CatalogCategory category : catalog.getCategories()) {
+			categoryWithConnectorCount += category.getItems().size();
+		}
+		if (categoryWithConnectorCount == 0) {
+			// nothing was discovered: notify the user
+			MessageDialog.openWarning(getShell(), Messages.ConnectorDiscoveryWizardMainPage_noConnectorsFound, Messages.ConnectorDiscoveryWizardMainPage_noConnectorsFound_description);
+		}
+	}
+
+	protected IStatus computeStatus(InvocationTargetException e, String message) {
 		Throwable cause = e.getCause();
 		if (cause.getMessage() != null) {
 			message = NLS.bind(Messages.ConnectorDiscoveryWizardMainPage_message_with_cause, message, cause.getMessage());
@@ -441,10 +446,12 @@ public class CatalogViewer extends FilteredViewer {
 	protected Set<String> getInstalledFeatures(IProgressMonitor monitor) {
 		Set<String> features = new HashSet<String>();
 		IProfile profile = ProvUI.getProfileRegistry(ProvisioningUI.getDefaultUI().getSession()).getProfile(ProvisioningUI.getDefaultUI().getProfileId());
-		IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
-		for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
-			IInstallableUnit unit = it.next();
-			features.add(unit.getId());
+		if (profile != null) {
+			IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
+			for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
+				IInstallableUnit unit = it.next();
+				features.add(unit.getId());
+			}
 		}
 		return features;
 	}
@@ -582,27 +589,30 @@ public class CatalogViewer extends FilteredViewer {
 		}
 		if (catalog != null) {
 			catalogUpdated(wasCancelled, wasError);
-			if (configuration.isVerifyUpdateSiteAvailability() && !catalog.getItems().isEmpty()) {
-				try {
-					context.run(true, true, new IRunnableWithProgress() {
-						public void run(IProgressMonitor monitor) {
-							//discovery.verifySiteAvailability(monitor);
-						}
-					});
-				} catch (InvocationTargetException e) {
-					IStatus status = computeStatus(e, Messages.ConnectorDiscoveryWizardMainPage_unexpectedException);
-					StatusManager.getManager().handle(status, StatusManager.SHOW | StatusManager.BLOCK | StatusManager.LOG);
-					wasError = true;
-				} catch (InterruptedException e) {
-					// cancelled by user so nothing to do here.
-					wasCancelled = true;
-				}
-			}
+			verifyUpdateSiteAvailability();
 		}
 		// help UI tests
 		viewer.setData("discoveryComplete", "true"); //$NON-NLS-1$//$NON-NLS-2$
 	}
 
+	protected void verifyUpdateSiteAvailability() {
+		if (configuration.isVerifyUpdateSiteAvailability() && !catalog.getItems().isEmpty()) {
+			try {
+				context.run(true, true, new IRunnableWithProgress() {
+					public void run(IProgressMonitor monitor) {
+						SiteVerifier verifier = new SiteVerifier(catalog);
+						verifier.verifySiteAvailability(monitor);
+					}
+				});
+			} catch (InvocationTargetException e) {
+				IStatus status = computeStatus(e, Messages.ConnectorDiscoveryWizardMainPage_unexpectedException);
+				StatusManager.getManager().handle(status, StatusManager.SHOW | StatusManager.BLOCK | StatusManager.LOG);
+			} catch (InterruptedException e) {
+				// cancelled by user so nothing to do here.
+			}
+		}
+	}
+
 	private void updateState() {
 		setComplete(!checkedItems.isEmpty());
 		selectionProvider.setSelection(new StructuredSelection(getCheckedItems()));
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/Messages.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/Messages.java
index 7494a33..91a02be 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/Messages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/Messages.java
@@ -38,10 +38,6 @@ public class Messages extends NLS {
 
 	public static String InstallConnectorsJob_unexpectedError_url;
 
-	public static String ConnectorDiscoveryWizardMainPage_clearButton_accessibleListener;
-
-	public static String ConnectorDiscoveryWizardMainPage_clearButton_toolTip;
-
 	public static String ConnectorDiscoveryWizardMainPage_connectorDiscovery;
 
 	public static String ConnectorDiscoveryWizardMainPage_filterLabel;
@@ -84,6 +80,7 @@ public class Messages extends NLS {
 	}
 
 	private Messages() {
+		// constructor
 	}
 
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/messages.properties
index 345f1cc..6eb5285 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/messages.properties
@@ -8,16 +8,14 @@
 # Contributors:
 #      Tasktop Technologies - initial API and implementation
 ###############################################################################
-ConnectorDescriptorToolTip_detailsLink=<a>Learn More</a>
+ConnectorDescriptorToolTip_detailsLink=<a>Learn more</a>
 ConnectorDescriptorToolTip_detailsLink_tooltip=Open {0} in an external browser
 ConnectorDiscoveryWizard_installProblems=Problems occurred while performing installation: {0}
-ConnectorDiscoveryWizardMainPage_clearButton_accessibleListener=Clear filter field
-ConnectorDiscoveryWizardMainPage_clearButton_toolTip=Clear
-ConnectorDiscoveryWizardMainPage_connectorDiscovery=Mylyn Connector Discovery
-ConnectorDiscoveryWizardMainPage_filterLabel=Find:
+ConnectorDiscoveryWizardMainPage_connectorDiscovery=Install Extensions
+ConnectorDiscoveryWizardMainPage_filterLabel=F&ind:
 ConnectorDiscoveryWizardMainPage_message_with_cause={0}: {1}
-ConnectorDiscoveryWizardMainPage_noConnectorsFound=No Connectors Found
-ConnectorDiscoveryWizardMainPage_noConnectorsFound_description=Connector discovery completed without finding any connectors.  Please check your Internet connection and try again.
+ConnectorDiscoveryWizardMainPage_noConnectorsFound=No Extensions Found
+ConnectorDiscoveryWizardMainPage_noConnectorsFound_description=Discovery completed without finding any extensions.  Please check your network connection and try again.
 ConnectorDiscoveryWizardMainPage_pageDescription=\
 	Select extensions to install. Press Finish to proceed with installation.\n\
 	Press the information button to see a detailed overview and a link to more information.
@@ -25,17 +23,17 @@ ConnectorDiscoveryWizardMainPage_provider_and_license=by {0}, {1}
 ConnectorDiscoveryWizardMainPage_tooltip_showOverview=Show Overview
 ConnectorDiscoveryWizardMainPage_unexpectedException=Unexpected exception
 ConnectorDiscoveryWizardMainPage_warningMessageConnectorUnavailable=Sorry, {0} is unavailable.  Please try again later.
-ConnectorDiscoveryWizardMainPage_warningTitleConnectorUnavailable=Connector Unavailable
+ConnectorDiscoveryWizardMainPage_warningTitleConnectorUnavailable=Extension Unavailable
 DiscoveryItem_Connector_already_installed_Error_Message={0} is already installed.
-DiscoveryItem_Connector_already_installed_Error_Title=Install Connector
+DiscoveryItem_Connector_already_installed_Error_Title=Install Extension
 DiscoveryItem_Extension_installed={0} (installed)
 DiscoveryViewer_Certification_Label0=by {0}, {1}, <a>Certified</a>
-DiscoveryViewer_Show_Installed=Show Installed
+DiscoveryViewer_Show_Installed=Show &Installed
 DiscoveryWizard_Install_Window_Title=Install
 InstallConnectorsJob_commaSeparator=, 
-InstallConnectorsJob_connectorsNotAvailable=The following connectors are not available: {0}
+InstallConnectorsJob_connectorsNotAvailable=The following extensions are not available: {0}
 InstallConnectorsJob_questionProceed=Proceed With Installation?
-InstallConnectorsJob_questionProceed_long=The following connectors are not available: {0}\nProceed with the installation anyways?
+InstallConnectorsJob_questionProceed_long=The following extensions are not available: {0}\nProceed with the installation anyways?
 InstallConnectorsJob_task_configuring=Configuring installation selection
 InstallConnectorsJob_unexpectedError_url=Unexpected error handling repository URL
 PrepareInstallProfileJob_notFoundDescriptorDetail={0} (id={1}, site={2})
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreferenceInitializer.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreferenceInitializer.java
index e75357d..6bb840b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreferenceInitializer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreferenceInitializer.java
@@ -69,21 +69,20 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
 				// there. We don't migrate if the value was never set.
 				// We use string literals rather than pref constants because we want to
 				// ensure we match the 3.4 values.
-				if (node34.get("enabled", null) == null) { //$NON-NLS-1$
+				if (pref.get(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, null) == null && node34.get("enabled", null) != null) { //$NON-NLS-1$
 					pref.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, node34.getBoolean("enabled", false)); //$NON-NLS-1$
 				}
-				if (node34.get("schedule", null) == null) { //$NON-NLS-1$
+				if (pref.get(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, null) == null && node34.get("schedule", null) != null) { //$NON-NLS-1$
 					pref.put(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, node34.get("schedule", //$NON-NLS-1$
 							PreferenceConstants.PREF_UPDATE_ON_STARTUP));
 				}
-				if (node34.get("download", null) == null) { //$NON-NLS-1$
+				if (pref.get(PreferenceConstants.PREF_DOWNLOAD_ONLY, null) == null && node34.get("download", null) != null) { //$NON-NLS-1$
 					pref.putBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, node34.getBoolean("download", false)); //$NON-NLS-1$
 				}
-				if (node34.get("remindOnSchedule", null) == null) { //$NON-NLS-1$
+				if (pref.get(PreferenceConstants.PREF_REMIND_SCHEDULE, null) == null && node34.get("remindOnSchedule", null) != null) { //$NON-NLS-1$
 					pref.putBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, node34.getBoolean("remindOnSchedule", false)); //$NON-NLS-1$
 				}
-				if (node34.get("remindElapsedTime", null) == null) { //$NON-NLS-1$
-
+				if (pref.get(PreferenceConstants.PREF_REMIND_ELAPSED, null) == null && node34.get("remindElapsedTime", null) != null) { //$NON-NLS-1$
 					pref.put(PreferenceConstants.PREF_REMIND_ELAPSED, node34.get("remindElapsedTime", //$NON-NLS-1$
 							AutomaticUpdateMessages.AutomaticUpdateScheduler_30Minutes));
 				}
@@ -113,7 +112,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
 				boolean enableUpdate = prefUM.getBoolean(P_ENABLED, false);
 				// set p2 automatic update preference to match UM preference,
 				// only if we haven't already set a value.
-				if (pref.get(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, null) == null) {
+				if (pref.get(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, null) == null && updateNodeExists) {
 					pref.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, enableUpdate);
 				}
 				// turn off UM automatic update preference if it exists
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/InstallNewSoftwareHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/InstallNewSoftwareHandler.java
index 0da34d4..5c6da40 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/InstallNewSoftwareHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/InstallNewSoftwareHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2009 IBM Corporation and others.
+ *  Copyright (c) 2008, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
index 7a20a9f..e1f89a9 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,10 +14,16 @@ import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.*;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.IProfileRegistry;
 import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
 import org.eclipse.equinox.p2.ui.ProvisioningUI;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.statushandlers.StatusManager;
 
 /**
  * PreloadingRepositoryHandler provides background loading of
@@ -38,7 +44,31 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler {
 	 * Execute the command.
 	 */
 	public Object execute(ExecutionEvent event) {
-		doExecuteAndLoad();
+		// Look for a profile.  We may not immediately need it in the
+		// handler, but if we don't have one, whatever we are trying to do
+		// will ultimately fail in a more subtle/low-level way.  So determine
+		// up front if the system is configured properly.
+		String profileId = getProvisioningUI().getProfileId();
+		IProvisioningAgent agent = getProvisioningUI().getSession().getProvisioningAgent();
+		IProfile profile = null;
+		if (agent != null) {
+			IProfileRegistry registry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME);
+			if (registry != null) {
+				profile = registry.getProfile(profileId);
+			}
+		}
+		if (profile == null) {
+			// Inform the user nicely
+			MessageDialog.openInformation(null, ProvSDKMessages.Handler_SDKUpdateUIMessageTitle, ProvSDKMessages.Handler_CannotLaunchUI);
+			// Log the detailed message
+			StatusManager.getManager().handle(ProvSDKUIActivator.getNoSelfProfileStatus());
+		} else {
+			BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
+				public void run() {
+					doExecuteAndLoad();
+				}
+			});
+		}
 		return null;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
index 4a258e6..022c13c 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,8 @@ public class ProvSDKMessages extends NLS {
 		// load message values from bundle file
 		NLS.initializeMessages(BUNDLE_NAME, ProvSDKMessages.class);
 	}
+	public static String Handler_CannotLaunchUI;
+	public static String Handler_SDKUpdateUIMessageTitle;
 	public static String InstallNewSoftwareHandler_ProgressTaskName;
 	public static String PreferenceInitializer_Error;
 	public static String ProvisioningPreferencePage_AlwaysOpenWizard;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
index 792fb63..1fd23f0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/RevertProfilePageWithCompare.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/RevertProfilePageWithCompare.java
index 0cd99a4..9a1f777 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/RevertProfilePageWithCompare.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/RevertProfilePageWithCompare.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
+ *  Copyright (c) 2007, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
index 0305cf0..c6149bc 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
index b0abbe9..166b2ef 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java
index 9bdfdb7..f2ce43a 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,6 +36,8 @@ public class UpdateHandler extends PreloadingRepositoryHandler {
 			}
 			return;
 		}
+		// Report any missing repositories.
+		job.reportAccumulatedStatus();
 		if (getProvisioningUI().getPolicy().continueWorkingWithOperation(operation, getShell())) {
 			getProvisioningUI().openUpdateWizard(false, operation, job);
 		}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
index 8c95028..03d9528 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
@@ -9,6 +9,8 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 
+Handler_CannotLaunchUI=Cannot complete the request.  This installation has not been configured properly for Software Updates.  See the error log for details.
+Handler_SDKUpdateUIMessageTitle=Software Updates
 InstallNewSoftwareHandler_ProgressTaskName=Searching for available software...
 PreferenceInitializer_Error=Error accessing preferences.
 ProvSDKUIActivator_ErrorSavingPrefs=Error saving update preferences
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
index abb5085..144ac50 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2008 IBM Corporation and others.
+ *  Copyright (c) 2007, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
index 29417af..3c63cf0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
+ *  Copyright (c) 2007, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ColocatedRepositoryTracker.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ColocatedRepositoryTracker.java
index a7dc318..81e40fd 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ColocatedRepositoryTracker.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ColocatedRepositoryTracker.java
@@ -40,6 +40,8 @@ import org.eclipse.ui.statushandlers.StatusManager;
 public class ColocatedRepositoryTracker extends RepositoryTracker {
 
 	ProvisioningUI ui;
+	String parsedNickname;
+	URI parsedLocation;
 
 	public ColocatedRepositoryTracker() {
 		this(ProvisioningUI.getDefaultUI());
@@ -169,4 +171,62 @@ public class ColocatedRepositoryTracker extends RepositoryTracker {
 	IArtifactRepositoryManager getArtifactRepositoryManager() {
 		return ProvUI.getArtifactRepositoryManager(ui.getSession());
 	}
+
+	/*
+	 * Overridden to support "Name - Location" parsing
+	 * (non-Javadoc)
+	 * @see org.eclipse.equinox.p2.operations.RepositoryTracker#locationFromString(java.lang.String)
+	 */
+	public URI locationFromString(String locationString) {
+		URI uri = super.locationFromString(locationString);
+		if (uri != null)
+			return uri;
+		// Look for the "Name - Location" pattern
+		// There could be a hyphen in the name or URI, so we have to visit all combinations
+		int start = 0;
+		int index = 0;
+		String locationSubset;
+		String pattern = ProvUIMessages.RepositorySelectionGroup_NameAndLocationSeparator;
+		while (index >= 0) {
+			index = locationString.indexOf(pattern, start);
+			if (index >= 0) {
+				start = index + pattern.length();
+				locationSubset = locationString.substring(start);
+				uri = super.locationFromString(locationSubset);
+				if (uri != null) {
+					parsedLocation = uri;
+					parsedNickname = locationString.substring(0, index);
+					return uri;
+				}
+			}
+		}
+		return null;
+	}
+
+	/*
+	 * Used by the UI to get a name that might have been supplied when the
+	 * location was originally parsed.
+	 * see https://bugs.eclipse.org/bugs/show_bug.cgi?id=293068
+	 */
+	public String getParsedNickname(URI location) {
+		if (parsedNickname == null || parsedLocation == null)
+			return null;
+		if (location.toString().equals(parsedLocation.toString()))
+			return parsedNickname;
+		return null;
+	}
+
+	/*
+	 * Overridden to do a better job of finding duplicates
+	 * (non-Javadoc)
+	 * @see org.eclipse.equinox.p2.operations.RepositoryTracker#validateRepositoryLocation(org.eclipse.equinox.p2.operations.ProvisioningSession, java.net.URI, boolean, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus validateRepositoryLocation(ProvisioningSession session, URI location, boolean contactRepositories, IProgressMonitor monitor) {
+		IStatus status = super.validateRepositoryLocation(session, location, contactRepositories, monitor);
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=268580
+		if (status.isOK() && getMetadataRepositoryManager().contains(location))
+			return new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, STATUS_INVALID_REPOSITORY_LOCATION, ProvUIMessages.RepositoryTracker_DuplicateLocation, null);
+		return status;
+
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
index 1583bcc..edbfb0b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
@@ -169,6 +169,12 @@ public class ProvUI {
 		runCommand(INSTALLATION_DIALOG, ProvUIMessages.ProvUI_InstallDialogError, event);
 	}
 
+	public static boolean isUpdateManagerInstallerPresent() {
+		ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
+		Command command = commandService.getCommand(UPDATE_MANAGER_FIND_AND_INSTALL);
+		return command.isDefined();
+	}
+
 	public static QueryProvider getQueryProvider() {
 		if (queryProvider == null)
 			queryProvider = new QueryProvider(ProvUIActivator.getDefault().getProvisioningUI());
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
index 6a964e0..8a0fb51 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
@@ -149,6 +149,7 @@ public class ProvUIMessages extends NLS {
 	public static String RepositoryNameAndLocationDialog_Title;
 
 	public static String RepositorySelectionGroup_GenericSiteLinkTitle;
+	public static String RepositorySelectionGroup_NameAndLocationSeparator;
 	public static String RepositorySelectionGroup_PrefPageLink;
 	public static String RepositorySelectionGroup_PrefPageName;
 	public static String ResolutionWizardPage_Canceled;
@@ -174,6 +175,7 @@ public class ProvUIMessages extends NLS {
 	public static String AvailableIUsPage_GroupByCategory;
 	public static String AvailableIUsPage_HideInstalledItems;
 	public static String AvailableIUsPage_LocalSites;
+	public static String AvailableIUsPage_MultipleSelectionCount;
 	public static String AvailableIUsPage_NameWithLocation;
 	public static String AvailableIUsPage_NoSites;
 	public static String AvailableIUsPage_RepoFilterInstructions;
@@ -181,16 +183,17 @@ public class ProvUIMessages extends NLS {
 	public static String AvailableIUsPage_ResolveAllCheckbox;
 	public static String AvailableIUsPage_SelectASite;
 	public static String AvailableIUsPage_ShowLatestVersions;
+	public static String AvailableIUsPage_SingleSelectionCount;
 	public static String AvailableIUsPage_Title;
 	public static String AvailableIUWrapper_AllAreInstalled;
 	public static String IUViewQueryContext_AllAreInstalledDescription;
-	public static String ElementUtils_UpdateJobTitle;
 	public static String Label_Profiles;
 	public static String Label_Repositories;
 	public static String LaunchUpdateManagerButton;
 	public static String LoadMetadataRepositoryJob_ContactSitesProgress;
 	public static String LoadMetadataRepositoryJob_SitesMissingError;
 	public static String RepositoryElement_NotFound;
+	public static String RepositoryTracker_DuplicateLocation;
 	public static String MetadataRepositoryElement_RepositoryLoadError;
 	public static String UpdateAction_UpdatesAvailableMessage;
 	public static String UpdateAction_UpdatesAvailableTitle;
@@ -232,6 +235,7 @@ public class ProvUIMessages extends NLS {
 	public static String UpdateManagerCompatibility_ImportSitesTitle;
 	public static String UpdateManagerCompatibility_InvalidSiteFileMessage;
 	public static String UpdateManagerCompatibility_InvalidSitesTitle;
+	public static String UpdateManagerCompatibility_ItemRequiresUpdateManager;
 	public static String UpdateManagerCompatibility_UnableToOpenFindAndInstall;
 	public static String UpdateManagerCompatibility_UnableToOpenManageConfiguration;
 	public static String ServiceUI_LoginDetails;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
index f1614de..05972f6 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
@@ -12,10 +12,12 @@
 package org.eclipse.equinox.internal.p2.ui;
 
 import java.util.EventObject;
+import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
 import org.eclipse.equinox.internal.provisional.p2.core.eventbus.SynchronousProvisioningListener;
 import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
 import org.eclipse.equinox.p2.engine.IProfileEvent;
 import org.eclipse.equinox.p2.repository.IRepository;
+import org.eclipse.equinox.p2.ui.ProvisioningUI;
 
 /**
  * ProvisioningListener which handles event batching and other
@@ -32,29 +34,58 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
 	public static final int PROV_EVENT_ARTIFACT_REPOSITORY = 0x0008;
 
 	int eventTypes = 0;
-	int batchCount = 0;
+	String name;
 
-	public ProvUIProvisioningListener(int eventTypes) {
+	public ProvUIProvisioningListener(String name, int eventTypes) {
+		this.name = name;
 		this.eventTypes = eventTypes;
 	}
 
 	public void notify(EventObject o) {
 		if (o instanceof RepositoryOperationBeginningEvent) {
-			batchCount++;
+			if (Tracing.DEBUG_EVENTS_CLIENT)
+				Tracing.debug("Batch Eventing:  Ignore Following Events. " + getReceiverString()); //$NON-NLS-1$
 		} else if (o instanceof RepositoryOperationEndingEvent) {
-			batchCount--;
+			RepositoryOperationEndingEvent event = (RepositoryOperationEndingEvent) o;
+
+			if (Tracing.DEBUG_EVENTS_CLIENT)
+				Tracing.debug("Batch Eventing:  Batch Ended. " + getReceiverString()); //$NON-NLS-1$
 			// A batch operation completed.  Refresh.
-			if (batchCount <= 0) {
-				RepositoryOperationEndingEvent event = (RepositoryOperationEndingEvent) o;
-				if (event.getEvent() == null && event.update())
+			if (ProvisioningUI.getDefaultUI().getOperationRunner().eventBatchCount <= 0) {
+				if (Tracing.DEBUG_EVENTS_CLIENT)
+					Tracing.debug("Batch Eventing Complete." + getReceiverString()); //$NON-NLS-1$
+				if (event.getEvent() == null && event.update()) {
+					if (Tracing.DEBUG_EVENTS_CLIENT) {
+						Tracing.debug("Refreshing After Batch." + getReceiverString()); //$NON-NLS-1$
+					}
 					refreshAll();
-				else if (event.update())
+				} else if (event.update()) {
+					if (Tracing.DEBUG_EVENTS_CLIENT)
+						Tracing.debug("Dispatching Last Event in Batch." + getReceiverString()); //$NON-NLS-1$
 					notify(event.getEvent());
+				} else if (Tracing.DEBUG_EVENTS_CLIENT) {
+					Tracing.debug("No Refresh on Batch Complete."); //$NON-NLS-1$
+				}
+			} else {
+				// We are still in the middle of a batch operation, but we've been notified
+				// about a nested batch that ended.  See if it ended with a specific event.  
+				// If it did, this means there was a user action involving a repository 
+				// (rather than side-effect events).  For example, the user might add a repo while a full 
+				// background load is running.  We want to honor that
+				// event.  See https://bugs.eclipse.org/bugs/show_bug.cgi?id=305478
+				RepositoryEvent innerEvent = event.getEvent();
+				if (innerEvent != null) {
+					handleRepositoryEvent(innerEvent);
+				}
 			}
-		} else if (batchCount > 0) {
-			// We are in the middle of a batch operation
+		} else if (ProvisioningUI.getDefaultUI().getOperationRunner().eventBatchCount > 0) {
+			// ignore raw events during a batch
+			if (Tracing.DEBUG_EVENTS_CLIENT)
+				Tracing.debug(name + " Ignoring: " + o.toString()); //$NON-NLS-1$
 			return;
 		} else if (o instanceof IProfileEvent && (((eventTypes & PROV_EVENT_IU) == PROV_EVENT_IU) || ((eventTypes & PROV_EVENT_PROFILE) == PROV_EVENT_PROFILE))) {
+			if (Tracing.DEBUG_EVENTS_CLIENT)
+				Tracing.debug(o.toString() + getReceiverString());
 			IProfileEvent event = (IProfileEvent) o;
 			if (event.getReason() == IProfileEvent.CHANGED) {
 				profileChanged(event.getProfileId());
@@ -64,20 +95,29 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
 				profileRemoved(event.getProfileId());
 			}
 		} else if (o instanceof RepositoryEvent) {
-			RepositoryEvent event = (RepositoryEvent) o;
-			// Do not handle unless this is the type of repo that we are interested in
-			if ((event.getRepositoryType() == IRepository.TYPE_METADATA && (eventTypes & PROV_EVENT_METADATA_REPOSITORY) == PROV_EVENT_METADATA_REPOSITORY) || (event.getRepositoryType() == IRepository.TYPE_ARTIFACT && (eventTypes & PROV_EVENT_ARTIFACT_REPOSITORY) == PROV_EVENT_ARTIFACT_REPOSITORY)) {
-				if (event.getKind() == RepositoryEvent.ADDED && event.isRepositoryEnabled()) {
-					repositoryAdded(event);
-				} else if (event.getKind() == RepositoryEvent.REMOVED && event.isRepositoryEnabled()) {
-					repositoryRemoved(event);
-				} else if (event.getKind() == RepositoryEvent.DISCOVERED) {
-					repositoryDiscovered(event);
-				} else if (event.getKind() == RepositoryEvent.CHANGED) {
-					repositoryChanged(event);
-				} else if (event.getKind() == RepositoryEvent.ENABLEMENT) {
-					repositoryEnablement(event);
-				}
+			if (Tracing.DEBUG_EVENTS_CLIENT)
+				Tracing.debug(o.toString() + getReceiverString());
+			handleRepositoryEvent((RepositoryEvent) o);
+		}
+	}
+
+	private String getReceiverString() {
+		return " --  <" + name + "> "; //$NON-NLS-1$//$NON-NLS-2$
+	}
+
+	private void handleRepositoryEvent(RepositoryEvent event) {
+		// Do not handle unless this is the type of repo that we are interested in
+		if ((event.getRepositoryType() == IRepository.TYPE_METADATA && (eventTypes & PROV_EVENT_METADATA_REPOSITORY) == PROV_EVENT_METADATA_REPOSITORY) || (event.getRepositoryType() == IRepository.TYPE_ARTIFACT && (eventTypes & PROV_EVENT_ARTIFACT_REPOSITORY) == PROV_EVENT_ARTIFACT_REPOSITORY)) {
+			if (event.getKind() == RepositoryEvent.ADDED && event.isRepositoryEnabled()) {
+				repositoryAdded(event);
+			} else if (event.getKind() == RepositoryEvent.REMOVED && event.isRepositoryEnabled()) {
+				repositoryRemoved(event);
+			} else if (event.getKind() == RepositoryEvent.DISCOVERED) {
+				repositoryDiscovered(event);
+			} else if (event.getKind() == RepositoryEvent.CHANGED) {
+				repositoryChanged(event);
+			} else if (event.getKind() == RepositoryEvent.ENABLEMENT) {
+				repositoryEnablement(event);
 			}
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
index e6f97ee..0abe634 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
@@ -38,6 +38,7 @@ public class ProvisioningOperationRunner {
 
 	boolean suppressRestart = false;
 	ProvisioningUI ui;
+	public int eventBatchCount = 0;
 
 	public ProvisioningOperationRunner(ProvisioningUI ui) {
 		this.ui = ui;
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
index 4f10b46..8223eb2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
@@ -99,7 +99,15 @@ public class QueryProvider {
 					// children of a category should drill down according to the context.  If we aren't in a category, we are already drilling down and
 					// continue to do so.
 					boolean drillDownTheChildren = element instanceof CategoryElement ? context.getShowAvailableChildren() : true;
-					IQuery<IInstallableUnit> memberOfCategoryQuery = QueryUtil.createIUCategoryMemberQuery(((IIUElement) element).getIU());
+					IQuery<IInstallableUnit> memberOfCategoryQuery;
+					if (element instanceof CategoryElement) {
+						// We need an expression that uses the requirements of the element's requirements, which could be merged
+						// from multiple category IUs shown as one in the UI.
+						IExpression matchesRequirementsExpression = ExpressionUtil.parse("$0.exists(r | this ~= r)"); //$NON-NLS-1$
+						memberOfCategoryQuery = QueryUtil.createMatchQuery(matchesRequirementsExpression, ((CategoryElement) element).getRequirements());
+					} else {
+						memberOfCategoryQuery = QueryUtil.createIUCategoryMemberQuery(((IIUElement) element).getIU());
+					}
 					availableIUWrapper = new AvailableIUWrapper(queryable, element, true, drillDownTheChildren);
 					if (targetProfile != null)
 						availableIUWrapper.markInstalledIUs(targetProfile, hideInstalled);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
index 9ca0cd6..1effbe3 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
@@ -10,8 +10,6 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.p2.ui;
 
-import org.eclipse.equinox.p2.query.QueryUtil;
-
 import java.io.*;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -23,7 +21,9 @@ import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement;
 import org.eclipse.equinox.p2.engine.IProvisioningPlan;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Shell;
@@ -167,15 +167,14 @@ public class UpdateManagerCompatibility {
 		}
 	}
 
-	public static boolean requiresInstallHandlerSupport(IProvisioningPlan plan) {
+	public static IStatus getInstallHandlerStatus(IProvisioningPlan plan) {
 		IQueryResult<IInstallableUnit> result = plan.getAdditions().query(QueryUtil.createIUAnyQuery(), null);
 		for (Iterator<IInstallableUnit> iterator = result.iterator(); iterator.hasNext();) {
 			IInstallableUnit iu = iterator.next();
 			if (iu != null && iu.getProperty(ECLIPSE_INSTALL_HANDLER_PROP) != null)
-				return true;
+				return new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, NLS.bind(ProvUIMessages.UpdateManagerCompatibility_ItemRequiresUpdateManager, iu.getId()));
 		}
-		return false;
-
+		return Status.OK_STATUS;
 	}
 
 	/**
@@ -229,6 +228,7 @@ public class UpdateManagerCompatibility {
 		dialog.setText(ProvUIMessages.UpdateManagerCompatibility_ExportSitesTitle);
 		dialog.setFileName("bookmarks.xml"); //$NON-NLS-1$
 		dialog.setFilterExtensions(new String[] {"*.xml", "*"}); //$NON-NLS-1$ //$NON-NLS-2$
+		dialog.setOverwrite(true);
 
 		String bookmarksFile = dialog.open();
 		if (bookmarksFile == null)
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
index a242299..aab30eb 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
@@ -23,6 +23,7 @@ import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
 import org.eclipse.equinox.p2.core.ProvisionException;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.equinox.p2.repository.IRepositoryManager;
+import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
 import org.eclipse.equinox.p2.ui.ProvisioningUI;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.osgi.util.NLS;
@@ -127,7 +128,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
 
 	protected StructuredViewer createViewer(Composite parent) {
 		// Table of available IU's
-		filteredTree = new DelayedFilterCheckboxTree(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, filter);
+		filteredTree = new DelayedFilterCheckboxTree(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, filter, getPreFilterJobProvider());
 		final TreeViewer availableIUViewer = filteredTree.getViewer();
 
 		// If the user expanded or collapsed anything while we were loading a repo
@@ -167,7 +168,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
 		// after content has been retrieved.
 		filteredTree.contentProviderSet(contentProvider);
 
-		final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(availableIUViewer, ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
+		final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(getClass().getName(), availableIUViewer, ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
 			protected void repositoryAdded(final RepositoryEvent event) {
 				makeRepositoryVisible(event.getRepositoryLocation());
 			}
@@ -439,9 +440,12 @@ public class AvailableIUGroup extends StructuredIUGroup {
 	 */
 	public void setChecked(Object[] selections) {
 		filteredTree.getCheckboxTreeViewer().setCheckedElements(selections);
-		// Relying on knowledge that DelayedFilterCheckbox doesn't care which element is in the listener
-		Object element = selections.length > 0 ? selections[0] : new Object();
-		filteredTree.getCheckboxTreeViewer().fireCheckStateChanged(element, true);
+		// TODO HACK ALERT!
+		// Since We don't have API for setAllChecked(boolean), clients have to use this method.
+		// We need to signal DelayedFilterCheckboxTree when everything needs to be deselected since
+		// we aren't firing an event for each item.
+		Object element = selections.length == 0 ? DelayedFilterCheckboxTree.ALL_ITEMS_HACK : selections[0];
+		filteredTree.getCheckboxTreeViewer().fireCheckStateChanged(element, selections.length > 0);
 	}
 
 	public void setRepositoryFilter(int filterFlag, URI repoLocation) {
@@ -473,4 +477,39 @@ public class AvailableIUGroup extends StructuredIUGroup {
 		updateAvailableViewState();
 		filteredTree.clearCheckStateCache();
 	}
+
+	private IPreFilterJobProvider getPreFilterJobProvider() {
+		return new IPreFilterJobProvider() {
+
+			public Job getPreFilterJob() {
+				switch (filterConstant) {
+					case AVAILABLE_ALL :
+						Job preFilterJob = new LoadMetadataRepositoryJob(getProvisioningUI());
+						preFilterJob.setProperty(LoadMetadataRepositoryJob.SUPPRESS_REPOSITORY_EVENTS, Boolean.toString(true));
+						return preFilterJob;
+					case AVAILABLE_NONE :
+					case AVAILABLE_LOCAL :
+						return null;
+					default :
+						if (repositoryFilter == null)
+							return null;
+						Job job = new Job("Repository Load Job") { //$NON-NLS-1$
+							@Override
+							protected IStatus run(IProgressMonitor monitor) {
+								try {
+									getProvisioningUI().loadMetadataRepository(repositoryFilter, false, monitor);
+									return Status.OK_STATUS;
+								} catch (ProvisionException e) {
+									return e.getStatus();
+								}
+							}
+
+						};
+						job.setPriority(Job.SHORT);
+						return job;
+				}
+			}
+
+		};
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
index 852c587..a2fa766 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
@@ -26,6 +26,7 @@ import org.eclipse.jface.dialogs.*;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.*;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.SashForm;
 import org.eclipse.swt.dnd.*;
@@ -59,6 +60,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 	int batchCount = 0;
 	RepositorySelectionGroup repoSelector;
 	IUDetailsGroup iuDetailsGroup;
+	Label selectionCount;
 
 	public AvailableIUsPage(ProvisioningUI ui, ProvisioningOperationWizard wizard) {
 		super("AvailableSoftwarePage", ui, wizard); //$NON-NLS-1$
@@ -92,6 +94,12 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 		GridData data = new GridData(GridData.FILL_BOTH);
 		sashForm.setLayoutData(data);
 
+		Composite aboveSash = new Composite(sashForm, SWT.NONE);
+		GridLayout grid = new GridLayout();
+		grid.marginWidth = 0;
+		grid.marginHeight = 0;
+		aboveSash.setLayout(grid);
+
 		// Now the available group 
 		// If repositories are visible, we want to default to showing no repos.  Otherwise all.
 		int filterConstant = AvailableIUGroup.AVAILABLE_NONE;
@@ -101,7 +109,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 		versionColumn = new IUColumnConfig(ProvUIMessages.ProvUI_VersionColumnTitle, IUColumnConfig.COLUMN_VERSION, ILayoutConstants.DEFAULT_COLUMN_WIDTH);
 
 		getColumnWidthsFromSettings();
-		availableIUGroup = new AvailableIUGroup(getProvisioningUI(), sashForm, JFaceResources.getDialogFont(), queryContext, new IUColumnConfig[] {nameColumn, versionColumn}, filterConstant);
+		availableIUGroup = new AvailableIUGroup(getProvisioningUI(), aboveSash, JFaceResources.getDialogFont(), queryContext, new IUColumnConfig[] {nameColumn, versionColumn}, filterConstant);
 
 		// Selection listeners must be registered on both the normal selection
 		// events and the check mark events.  Must be done after buttons 
@@ -125,6 +133,9 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 		setDropTarget(availableIUGroup.getStructuredViewer().getControl());
 		activateCopy(availableIUGroup.getStructuredViewer().getControl());
 
+		// select buttons
+		createSelectButtons(aboveSash);
+
 		// Details area
 		iuDetailsGroup = new IUDetailsGroup(sashForm, availableIUGroup.getStructuredViewer(), SWT.DEFAULT, true);
 
@@ -155,6 +166,65 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 		Dialog.applyDialogFont(composite);
 	}
 
+	private void createSelectButtons(Composite parent) {
+		Composite buttonParent = new Composite(parent, SWT.NONE);
+		GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 3;
+		gridLayout.marginWidth = 0;
+		gridLayout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+		buttonParent.setLayout(gridLayout);
+
+		GridData data = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+		buttonParent.setLayoutData(data);
+
+		Button selectAll = new Button(buttonParent, SWT.PUSH);
+		selectAll.setText(ProvUIMessages.SelectableIUsPage_Select_All);
+		setButtonLayoutData(selectAll);
+		selectAll.addListener(SWT.Selection, new Listener() {
+			public void handleEvent(Event event) {
+				setAllChecked(true);
+			}
+		});
+
+		Button deselectAll = new Button(buttonParent, SWT.PUSH);
+		deselectAll.setText(ProvUIMessages.SelectableIUsPage_Deselect_All);
+		setButtonLayoutData(deselectAll);
+		deselectAll.addListener(SWT.Selection, new Listener() {
+			public void handleEvent(Event event) {
+				setAllChecked(false);
+			}
+		});
+
+		// dummy to take extra space
+		selectionCount = new Label(buttonParent, SWT.NONE);
+		data = new GridData(SWT.FILL, SWT.CENTER, true, true);
+		data.horizontalIndent = 20; // breathing room
+		selectionCount.setLayoutData(data);
+
+		// separator underneath
+		Label sep = new Label(buttonParent, SWT.HORIZONTAL | SWT.SEPARATOR);
+		data = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+		data.horizontalSpan = 3;
+		sep.setLayoutData(data);
+	}
+
+	// The viewer method is deprecated because it only applies to visible items,
+	// but this is exactly the behavior we want.
+	@SuppressWarnings("deprecation")
+	void setAllChecked(boolean checked) {
+		if (checked) {
+			// TODO ideally there should be API on AvailableIUGroup to do this.
+			// This is reachy and too knowledgeable of the group's implementation.
+			availableIUGroup.getCheckboxTreeViewer().setAllChecked(checked);
+			// to ensure that the listeners get processed.
+			availableIUGroup.setChecked(availableIUGroup.getCheckboxTreeViewer().getCheckedElements());
+
+		} else {
+			availableIUGroup.setChecked(new Object[0]);
+		}
+		updateSelection();
+	}
+
 	private void createViewControlsArea(Composite parent) {
 		showLatestVersionsCheckbox = new Button(parent, SWT.CHECK);
 		showLatestVersionsCheckbox.setText(ProvUIMessages.AvailableIUsPage_ShowLatestVersions);
@@ -227,6 +297,21 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 					repoComboSelectionChanged(repoChoice, repoLocation);
 				}
 			});
+			// The ProvisioningOperationWizard signals the start of a repository operation as a way
+			// to keep side-effect events from changing the selections or state of the wizard.
+			// This is the one case where we want to respond to repo events, because we are
+			// launching the repo manipulation page from the wizard.  So we signal the wizard's
+			// operation as complete and then resignal the start when done.
+			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=277265#c38
+			repoSelector.setRepositoryManipulationHook(new IRepositoryManipulationHook() {
+				public void preManipulateRepositories() {
+					getProvisioningUI().signalRepositoryOperationComplete(null, false);
+				}
+
+				public void postManipulateRepositories() {
+					getProvisioningUI().signalRepositoryOperationStart();
+				}
+			});
 		}
 	}
 
@@ -241,8 +326,15 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 	}
 
 	void updateSelection() {
-		setPageComplete(availableIUGroup.getCheckedLeafIUs().length > 0);
-		getProvisioningWizard().mainPageSelectionsChanged();
+		int count = availableIUGroup.getCheckedLeafIUs().length;
+		setPageComplete(count > 0);
+		if (count == 0)
+			selectionCount.setText(""); //$NON-NLS-1$
+		else {
+			String message = count == 1 ? ProvUIMessages.AvailableIUsPage_SingleSelectionCount : ProvUIMessages.AvailableIUsPage_MultipleSelectionCount;
+			selectionCount.setText(NLS.bind(message, Integer.toString(count)));
+		}
+		getProvisioningWizard().operationSelectionsChanged(this);
 	}
 
 	void updateQueryContext() {
@@ -525,7 +617,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
 		// We might need to adjust the content of the available IU group's viewer
 		// according to installation changes.  We want to be very selective about refreshing,
 		// because the viewer has its own listeners installed.
-		profileListener = new StructuredViewerProvisioningListener(availableIUGroup.getStructuredViewer(), ProvUIProvisioningListener.PROV_EVENT_PROFILE) {
+		profileListener = new StructuredViewerProvisioningListener(getClass().getName(), availableIUGroup.getStructuredViewer(), ProvUIProvisioningListener.PROV_EVENT_PROFILE) {
 			protected void profileAdded(String id) {
 				// do nothing
 			}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
index 9859823..296faa0 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
@@ -12,11 +12,8 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
 
 import java.util.*;
 import org.eclipse.core.runtime.jobs.*;
-import org.eclipse.equinox.internal.p2.ui.model.RootElement;
 import org.eclipse.equinox.internal.p2.ui.viewers.DeferredQueryContentProvider;
 import org.eclipse.equinox.internal.p2.ui.viewers.IInputChangeListener;
-import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
-import org.eclipse.equinox.p2.ui.ProvisioningUI;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
@@ -39,12 +36,15 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 
 	private static final long FILTER_DELAY = 400;
 
+	public static final Object ALL_ITEMS_HACK = new Object();
+
 	ToolBar toolBar;
 	Display display;
 	PatternFilter patternFilter;
+	IPreFilterJobProvider jobProvider;
 	DeferredQueryContentProvider contentProvider;
 	String savedFilterText;
-	Job loadJob;
+	Job preFilterJob;
 	WorkbenchJob filterJob;
 	boolean ignoreFiltering = true;
 	Object viewerInput;
@@ -52,7 +52,7 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 	Set<Object> expanded = new HashSet<Object>();
 	ContainerCheckedTreeViewer checkboxViewer;
 
-	public DelayedFilterCheckboxTree(Composite parent, int treeStyle, PatternFilter filter) {
+	public DelayedFilterCheckboxTree(Composite parent, int treeStyle, PatternFilter filter, IPreFilterJobProvider jobProvider) {
 		super(parent, true);
 		this.display = parent.getDisplay();
 		this.patternFilter = filter;
@@ -66,35 +66,39 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 				// We use an additive check state cache so we need to remove
 				// previously checked items if the user unchecked them.
 				if (!event.getChecked() && checkState != null) {
-					ArrayList<Object> toRemove = new ArrayList<Object>(1);
-					// See bug 258117.  Ideally we would get check state changes 
-					// for children when the parent state changed, but we aren't, so
-					// we need to remove all children from the additive check state
-					// cache.
-					if (contentProvider.hasChildren(event.getElement())) {
-						Set<Object> unchecked = new HashSet<Object>();
-						Object[] children = contentProvider.getChildren(event.getElement());
-						for (int i = 0; i < children.length; i++) {
-							unchecked.add(children[i]);
-						}
-						Iterator<Object> iter = checkState.iterator();
-						while (iter.hasNext()) {
-							Object current = iter.next();
-							if (current != null && unchecked.contains(current)) {
-								toRemove.add(current);
+					if (event.getElement() == ALL_ITEMS_HACK)
+						clearCheckStateCache();
+					else {
+						ArrayList<Object> toRemove = new ArrayList<Object>(1);
+						// See bug 258117.  Ideally we would get check state changes 
+						// for children when the parent state changed, but we aren't, so
+						// we need to remove all children from the additive check state
+						// cache.
+						if (contentProvider.hasChildren(event.getElement())) {
+							Set<Object> unchecked = new HashSet<Object>();
+							Object[] children = contentProvider.getChildren(event.getElement());
+							for (int i = 0; i < children.length; i++) {
+								unchecked.add(children[i]);
 							}
-						}
-					} else {
-						for (Object element : checkState) {
-							if (checkboxViewer.getComparer().equals(element, event.getElement())) {
-								toRemove.add(element);
-								// Do not break out of the loop.  We may have duplicate equal
-								// elements in the cache.  Since the cache is additive, we want
-								// to be sure we've gotten everything.
+							Iterator<Object> iter = checkState.iterator();
+							while (iter.hasNext()) {
+								Object current = iter.next();
+								if (current != null && unchecked.contains(current)) {
+									toRemove.add(current);
+								}
+							}
+						} else {
+							for (Object element : checkState) {
+								if (checkboxViewer.getComparer().equals(element, event.getElement())) {
+									toRemove.add(element);
+									// Do not break out of the loop.  We may have duplicate equal
+									// elements in the cache.  Since the cache is additive, we want
+									// to be sure we've gotten everything.
+								}
 							}
 						}
+						checkState.removeAll(toRemove);
 					}
-					checkState.removeAll(toRemove);
 				} else if (event.getChecked()) {
 					rememberLeafCheckState();
 				}
@@ -107,7 +111,7 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 		super.createFilterControls(filterParent);
 		filterParent.addDisposeListener(new DisposeListener() {
 			public void widgetDisposed(DisposeEvent e) {
-				cancelLoadJob();
+				cancelPreFilterJob();
 			}
 		});
 		return filterParent;
@@ -117,14 +121,15 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 		this.contentProvider = deferredProvider;
 		deferredProvider.addListener(new IInputChangeListener() {
 			public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-				if (newInput == null)
+				if (newInput == null) {
 					return;
+				}
 				// Store the input because it's not reset in the viewer until
 				// after this listener is run.
 				viewerInput = newInput;
 
 				// If we were loading repos, we want to cancel because there may be more.
-				cancelLoadJob();
+				cancelPreFilterJob();
 				// Cancel any filtering
 				cancelAndResetFilterJob();
 				contentProvider.setSynchronous(false);
@@ -166,35 +171,34 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 				// If we know we've already filtered and loaded repos, nothing more to do
 				if (!ignoreFiltering)
 					return;
-				final boolean[] shouldLoad = new boolean[1];
-				shouldLoad[0] = false;
+				final boolean[] shouldPreFilter = new boolean[1];
+				shouldPreFilter[0] = false;
 				display.syncExec(new Runnable() {
 					public void run() {
 						if (filterText != null && !filterText.isDisposed()) {
 							String text = getFilterString();
 							// If we are about to filter and there is
-							// actually filtering to do, force a load
-							// of the input and set the content
-							// provider to synchronous mode.  We want the
-							// load job to complete before continuing with filtering.
+							// actually filtering to do, check for a prefilter
+							// job and the content  provider to synchronous mode.
+							// We want the prefilter job to complete before continuing with filtering.
 							if (text == null || (initialText != null && initialText.equals(text)))
 								return;
-							if (!contentProvider.getSynchronous() && loadJob == null) {
+							if (!contentProvider.getSynchronous() && preFilterJob == null) {
 								if (filterText != null && !filterText.isDisposed()) {
-									shouldLoad[0] = true;
+									shouldPreFilter[0] = true;
 								}
 							}
 						}
 					}
 				});
-				if (shouldLoad[0]) {
+				if (shouldPreFilter[0]) {
 					event.getJob().sleep();
-					scheduleLoadJob();
+					schedulePreFilterJob();
 				} else if (ignoreFiltering) {
 					event.getJob().sleep();
 				} else {
-					// shouldn't get here unless the load job finished and ignoreFiltering became false 
-					// since we entered this listener.
+					// shouldn't get here unless the prefilter job finished 
+					// and ignoreFiltering became false since we entered this listener.
 					rememberLeafCheckState();
 				}
 			}
@@ -230,36 +234,35 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 		return filterJob;
 	}
 
-	void scheduleLoadJob() {
-		if (loadJob != null)
+	void schedulePreFilterJob() {
+		// cancel any existing jobs
+		cancelPreFilterJob();
+		ignoreFiltering = false;
+		preFilterJob = jobProvider == null ? null : jobProvider.getPreFilterJob();
+		if (preFilterJob == null) {
+			if (filterJob != null)
+				filterJob.wakeUp();
 			return;
-		ProvisioningUI ui;
-		if (viewerInput instanceof RootElement)
-			ui = ((RootElement) viewerInput).getProvisioningUI();
-		else
-			ui = ProvisioningUI.getDefaultUI();
-		loadJob = new LoadMetadataRepositoryJob(ui);
-		loadJob.addJobChangeListener(new JobChangeAdapter() {
+		}
+		ignoreFiltering = true;
+		preFilterJob.addJobChangeListener(new JobChangeAdapter() {
 			public void done(IJobChangeEvent event) {
-				if (event.getResult().isOK()) {
-					contentProvider.setSynchronous(true);
-					ignoreFiltering = false;
-					if (filterJob != null)
-						filterJob.wakeUp();
-				}
-				loadJob = null;
+				ignoreFiltering = false;
+				contentProvider.setSynchronous(true);
+				if (filterJob != null)
+					filterJob.wakeUp();
+				preFilterJob = null;
 			}
 		});
-		loadJob.setSystem(true);
-		loadJob.setUser(false);
-		loadJob.setProperty(LoadMetadataRepositoryJob.SUPPRESS_REPOSITORY_EVENTS, Boolean.toString(true));
-		loadJob.schedule();
+		preFilterJob.setSystem(true);
+		preFilterJob.setUser(false);
+		preFilterJob.schedule();
 	}
 
-	void cancelLoadJob() {
-		if (loadJob != null) {
-			loadJob.cancel();
-			loadJob = null;
+	void cancelPreFilterJob() {
+		if (preFilterJob != null) {
+			preFilterJob.cancel();
+			preFilterJob = null;
 		}
 	}
 
@@ -267,7 +270,6 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
 		if (filterJob != null) {
 			filterJob.cancel();
 		}
-		ignoreFiltering = true;
 	}
 
 	void rememberLeafCheckState() {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java
new file mode 100644
index 0000000..b4e72b8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ *  Copyright (c) 2010 IBM Corporation and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.ui.dialogs;
+
+import org.eclipse.core.runtime.jobs.Job;
+
+/**
+ * IPreFilterJobProvider provides an optional job that must be run before
+ * filtering can be allowed to occur in a filtered tree.  The client is assumed
+ * to have set the expected job priority.
+ * 
+ */
+public interface IPreFilterJobProvider {
+	public Job getPreFilterJob();
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java
new file mode 100644
index 0000000..fe9e167
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ *  Copyright (c) 2010 IBM Corporation and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.ui.dialogs;
+
+
+/**
+ * IRepositoryManipulationHood defines callbacks that are called when the
+ * UI is manipulating repositories.
+ */
+public interface IRepositoryManipulationHook {
+	public void preManipulateRepositories();
+
+	public void postManipulateRepositories();
+}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
index 89c1ce4..142b788 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
+ *  Copyright (c) 2007, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -13,8 +13,8 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import org.eclipse.equinox.internal.p2.ui.ProvUIImages;
-import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.p2.ui.*;
 import org.eclipse.equinox.internal.p2.ui.model.*;
 import org.eclipse.equinox.p2.engine.ProvisioningContext;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -22,7 +22,13 @@ import org.eclipse.equinox.p2.operations.InstallOperation;
 import org.eclipse.equinox.p2.operations.ProfileChangeOperation;
 import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
 import org.eclipse.equinox.p2.ui.ProvisioningUI;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
 
 /**
  * An install wizard that allows the users to browse all of the repositories
@@ -33,6 +39,8 @@ import org.eclipse.jface.wizard.IWizardPage;
 public class InstallWizard extends WizardWithLicenses {
 
 	SelectableIUsPage errorReportingPage;
+	boolean ignoreSelectionChanges = false;
+	IStatus installHandlerStatus;
 
 	public InstallWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob preloadJob) {
 		super(ui, operation, initialSelections == null ? null : initialSelections.toArray(), preloadJob);
@@ -70,6 +78,29 @@ public class InstallWizard extends WizardWithLicenses {
 		planSelections = selections.toArray();
 	}
 
+	/*
+	 * Overridden to dynamically determine which page to get
+	 * selections from.  (non-Javadoc)
+	 * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#getOperationSelections()
+	 */
+	protected Object[] getOperationSelections() {
+		return getOperationSelectionsPage().getCheckedIUElements();
+	}
+
+	/*
+	 * Get the page that is driving operation selections.  This is
+	 * usually the main page, but it could be error page if there
+	 * was a resolution error and the user decides to change selections
+	 * and try again without going back.
+	 */
+	protected ISelectableIUsPage getOperationSelectionsPage() {
+		IWizardPage page = getContainer().getCurrentPage();
+		if (page instanceof ISelectableIUsPage)
+			return (ISelectableIUsPage) page;
+		// return the main page if we weren't on main or error page
+		return mainPage;
+	}
+
 	protected ProvisioningContext getProvisioningContext() {
 		return ((AvailableIUsPage) mainPage).getProvisioningContext();
 	}
@@ -85,18 +116,6 @@ public class InstallWizard extends WizardWithLicenses {
 		return errorReportingPage;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.jface.wizard.Wizard#getPreviousPage(org.eclipse.jface.wizard.IWizardPage)
-	 */
-	public IWizardPage getPreviousPage(IWizardPage page) {
-		if (page == errorReportingPage) {
-			mainPage.setCheckedElements(errorReportingPage.getCheckedIUElements());
-			return mainPage;
-		}
-		return super.getPreviousPage(page);
-	}
-
 	/* (non-Javadoc)
 	 * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#getProfileChangeOperation(java.lang.Object[])
 	 */
@@ -114,4 +133,97 @@ public class InstallWizard extends WizardWithLicenses {
 		// error page.
 		return getContainer().getCurrentPage() == mainPage && super.shouldUpdateErrorPageModelOnPlanChange();
 	}
+
+	protected void planChanged() {
+		super.planChanged();
+		synchSelections(getOperationSelectionsPage());
+	}
+
+	/*
+	 * overridden to ensure that the main page selections stay in synch
+	 * with changes to the error page.
+	 * (non-Javadoc)
+	 * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#operationSelectionsChanged(org.eclipse.equinox.internal.p2.ui.dialogs.ISelectableIUsPage)
+	 */
+	public void operationSelectionsChanged(ISelectableIUsPage page) {
+		if (ignoreSelectionChanges)
+			return;
+		super.operationSelectionsChanged(page);
+		// If we are on the error page, resolution has failed.
+		// Our ability to move on depends on whether the selections have changed.
+		// If they are the same selections, then we are not complete until selections are changed.
+		if (getOperationSelectionsPage() == errorPage)
+			((WizardPage) errorPage).setPageComplete(pageSelectionsHaveChanged(errorPage) && errorPage.getCheckedIUElements().length > 0);
+		synchSelections(page);
+	}
+
+	private void synchSelections(ISelectableIUsPage triggeringPage) {
+		// We don't want our programmatic changes to cause all this to happen again
+		ignoreSelectionChanges = true;
+		try {
+			if (triggeringPage == errorReportingPage) {
+				mainPage.setCheckedElements(triggeringPage.getCheckedIUElements());
+			} else if (triggeringPage == mainPage) {
+				errorReportingPage.setCheckedElements(triggeringPage.getCheckedIUElements());
+			}
+		} finally {
+			ignoreSelectionChanges = false;
+		}
+	}
+
+	/*
+	 * Overridden to check whether there are UpdateManager install handlers in the item
+	 * to be installed.  Operations don't know about this compatibility issue.
+	 * (non-Javadoc)
+	 * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#getCurrentStatus()
+	 */
+	public IStatus getCurrentStatus() {
+		IStatus originalStatus = super.getCurrentStatus();
+		int sev = originalStatus.getSeverity();
+		// Use the previously computed status if the user cancelled or if we were already in error.
+		// If we don't have an operation or a plan, we can't check this condition either, so just
+		// use the normal status.
+		if (sev == IStatus.CANCEL || sev == IStatus.ERROR || operation == null || operation.getProvisioningPlan() == null) {
+			return originalStatus;
+		}
+		// Does the plan require install handler support?
+		installHandlerStatus = UpdateManagerCompatibility.getInstallHandlerStatus(operation.getProvisioningPlan());
+		if (!installHandlerStatus.isOK()) {
+			// Set the status into the wizard.  This ensures future calls to this method won't
+			// repeat the work (and prompting).
+			couldNotResolveStatus = installHandlerStatus;
+
+			// Is the update manager installer present?  If so, offer to open it.
+			// In either case, the failure will be reported in this wizard.
+			if (ProvUI.isUpdateManagerInstallerPresent()) {
+				PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+					public void run() {
+						Shell shell = ProvUI.getDefaultParentShell();
+						MessageDialog dialog = new MessageDialog(shell, ProvUIMessages.Policy_RequiresUpdateManagerTitle, null, ProvUIMessages.Policy_RequiresUpdateManagerMessage, MessageDialog.WARNING, new String[] {ProvUIMessages.LaunchUpdateManagerButton, IDialogConstants.CANCEL_LABEL}, 0);
+						if (dialog.open() == 0)
+							BusyIndicator.showWhile(shell.getDisplay(), new Runnable() {
+								public void run() {
+									UpdateManagerCompatibility.openInstaller();
+								}
+							});
+					}
+				});
+			}
+			return installHandlerStatus;
+		}
+		return originalStatus;
+	}
+
+	/*
+	 * When we've found an install handler, that status trumps anything that the operation might have
+	 * determined.  We are relying here on the knowledge that the wizard's couldNotResolveStatus is 
+	 * reset on every new resolution, so that status only holds the installHandler status when it is 
+	 * the current status.  The installHandlerStatus must be non-OK for it to matter at all.
+	 * 
+	 * (non-Javadoc)
+	 * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#statusOverridesOperation()
+	 */
+	public boolean statusOverridesOperation() {
+		return installHandlerStatus != null && !installHandlerStatus.isOK() && couldNotResolveStatus == installHandlerStatus;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
index ceb7ab4..d944f93 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
@@ -71,7 +71,7 @@ public class InstalledIUGroup extends StructuredIUGroup {
 		// Input last.
 		installedIUViewer.setInput(getInput());
 
-		final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(installedIUViewer, ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE);
+		final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(getClass().getName(), installedIUViewer, ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE);
 		ProvUIActivator.getDefault().addProvisioningListener(listener);
 		installedIUViewer.getControl().addDisposeListener(new DisposeListener() {
 			public void widgetDisposed(DisposeEvent e) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
index 7748fc7..3175aa5 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
@@ -121,15 +121,16 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 	}
 
 	/**
-	 * The selections in the main page have changed.  We might need to
+	 * The selections that drive the provisioning operation have changed.  We might need to
 	 * change the completion state of the resolution page.
 	 */
-	public void mainPageSelectionsChanged() {
+	public void operationSelectionsChanged(ISelectableIUsPage page) {
 		if (resolutionPage != null) {
 			// If the page selections are different than what we may have resolved
 			// against, then this page is not complete.
 			boolean old = resolutionPage.isPageComplete();
-			resolutionPage.setPageComplete(!pageSelectionsHaveChanged(mainPage));
+			if (pageSelectionsHaveChanged(page))
+				resolutionPage.setPageComplete(false);
 			// If the state has truly changed, update the buttons.  
 			if (old != resolutionPage.isPageComplete()) {
 				IWizardContainer container = getContainer();
@@ -146,7 +147,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 		return waitingForOtherJobs || previouslyWaiting || previouslyCanceled || pageSelectionsHaveChanged(page) || provisioningContextChanged();
 	}
 
-	private boolean pageSelectionsHaveChanged(ISelectableIUsPage page) {
+	protected boolean pageSelectionsHaveChanged(ISelectableIUsPage page) {
 		HashSet<IInstallableUnit> selectedIUs = new HashSet<IInstallableUnit>();
 		Object[] currentSelections = page.getCheckedIUElements();
 		selectedIUs.addAll(ElementUtils.elementsToIUs(currentSelections));
@@ -181,7 +182,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 	protected abstract void initializeResolutionModelElements(Object[] selectedElements);
 
 	protected ProvisioningContext getProvisioningContext() {
-		return null;
+		return new ProvisioningContext(ui.getSession().getProvisioningAgent());
 	}
 
 	/**
@@ -193,7 +194,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 	public void recomputePlan(IRunnableContext runnableContext) {
 		couldNotResolveStatus = Status.OK_STATUS;
 		provisioningContext = getProvisioningContext();
-		initializeResolutionModelElements(mainPage.getCheckedIUElements());
+		initializeResolutionModelElements(getOperationSelections());
 		if (planSelections.length == 0) {
 			operation = null;
 			couldNotResolve(ProvUIMessages.ResolutionWizardPage_NoSelections);
@@ -217,6 +218,13 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 		planChanged();
 	}
 
+	/*
+	 * Get the selections that drive the provisioning operation.
+	 */
+	protected Object[] getOperationSelections() {
+		return mainPage.getCheckedIUElements();
+	}
+
 	protected abstract ProfileChangeOperation getProfileChangeOperation(Object[] elements);
 
 	void couldNotResolve(String message) {
@@ -229,6 +237,8 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 	}
 
 	public IStatus getCurrentStatus() {
+		if (statusOverridesOperation())
+			return couldNotResolveStatus;
 		if (operation != null && operation.getResolutionResult() != null)
 			return operation.getResolutionResult();
 		return couldNotResolveStatus;
@@ -268,6 +278,14 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 	 * @see org.eclipse.jface.wizard.Wizard#createPageControls(org.eclipse.swt.widgets.Composite)
 	 */
 	public void createPageControls(Composite pageContainer) {
+		// We call this so that wizards ignore all repository eventing that occurs while the wizard is
+		// open.  Otherwise, we can get an add event when a repository loads its references that we
+		// don't want to respond to.  Since repo discovery events can be received asynchronously by the
+		// manager, the subsequent add events generated by the manager aren't guaranteed to be synchronous,
+		// even if our listener is synchronous.  Thus, we can't fine-tune
+		// the "ignore" window to a specific operation.
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=277265#c38
+		ui.signalRepositoryOperationStart();
 		super.createPageControls(pageContainer);
 		if (repoPreloadJob != null) {
 			if (repoPreloadJob.getProperty(LoadMetadataRepositoryJob.WIZARD_CLIENT_SHOULD_SCHEDULE) != null) {
@@ -299,6 +317,15 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 		}
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.wizard.Wizard#dispose()
+	 */
+	public void dispose() {
+		ui.signalRepositoryOperationComplete(null, false);
+		super.dispose();
+	}
+
 	void asyncReportLoadFailures() {
 		if (repoPreloadJob != null && getShell() != null && !getShell().isDisposed()) {
 			getShell().getDisplay().asyncExec(new Runnable() {
@@ -309,4 +336,12 @@ public abstract class ProvisioningOperationWizard extends Wizard {
 			});
 		}
 	}
+
+	/*
+	 * Return a boolean indicating whether the wizard's current status should override any detail
+	 * reported by the operation.
+	 */
+	public boolean statusOverridesOperation() {
+		return false;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
index 90035f8..80616b1 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
@@ -73,6 +73,7 @@ public class RepositorySelectionGroup {
 	ControlDecoration repoDec;
 	ComboAutoCompleteField repoAutoComplete;
 	ProvUIProvisioningListener comboRepoListener;
+	IRepositoryManipulationHook repositoryManipulationHook;
 
 	Image info, warning, error;
 	URI[] comboRepos; // the URIs shown in the combo, kept in sync with combo items
@@ -204,7 +205,11 @@ public class RepositorySelectionGroup {
 		// Link to repository manipulator
 		repoManipulatorLink = createLink(comboComposite, new Action() {
 			public void runWithEvent(Event event) {
+				if (repositoryManipulationHook != null)
+					repositoryManipulationHook.preManipulateRepositories();
 				ui.manipulateRepositories(repoCombo.getShell());
+				if (repositoryManipulationHook != null)
+					repositoryManipulationHook.postManipulateRepositories();
 			}
 		}, getLinkLabel());
 		gd = new GridData(SWT.END, SWT.FILL, true, false);
@@ -259,6 +264,10 @@ public class RepositorySelectionGroup {
 		setRepoComboDecoration(null);
 	}
 
+	public void setRepositoryManipulationHook(IRepositoryManipulationHook hook) {
+		this.repositoryManipulationHook = hook;
+	}
+
 	protected void setRepoComboDecoration(final IStatus status) {
 		if (status == null || status.isOK() || status.getSeverity() == IStatus.CANCEL) {
 			repoDec.setShowOnlyOnFocus(true);
@@ -363,7 +372,7 @@ public class RepositorySelectionGroup {
 	String getSiteString(URI uri) {
 		String nickname = getMetadataRepositoryManager().getRepositoryProperty(uri, IRepository.PROP_NICKNAME);
 		if (nickname != null && nickname.length() > 0)
-			return NLS.bind(ProvUIMessages.AvailableIUsPage_NameWithLocation, nickname, URIUtil.toUnencodedString(uri));
+			return NLS.bind(ProvUIMessages.AvailableIUsPage_NameWithLocation, new Object[] {nickname, ProvUIMessages.RepositorySelectionGroup_NameAndLocationSeparator, URIUtil.toUnencodedString(uri)});
 		return URIUtil.toUnencodedString(uri);
 	}
 
@@ -464,12 +473,21 @@ public class RepositorySelectionGroup {
 		} catch (URISyntaxException e) {
 			// never mind
 		}
+
+		// Special case.  The user has typed a URI with a trailing slash.
+		// Make a URI without the trailing slash and see if it matches
+		// a location we know about.
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=268580
+		int length = repoText.length();
+		if (length > 0 && repoText.charAt(length - 1) == '/') {
+			return getComboIndex(repoText.substring(0, length - 1));
+		}
 		return -1;
 	}
 
 	void addComboProvisioningListeners() {
 		// We need to monitor repository events so that we can adjust the repo combo.
-		comboRepoListener = new ProvUIProvisioningListener(ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
+		comboRepoListener = new ProvUIProvisioningListener(getClass().getName(), ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
 			protected void repositoryAdded(RepositoryEvent e) {
 				fillRepoCombo(getSiteString(e.getRepositoryLocation()));
 			}
@@ -495,10 +513,7 @@ public class RepositorySelectionGroup {
 
 	/*
 	 *  Add a repository using the text in the combo or launch a dialog if the text
-	 *  represents an already known repo.  For any add operation spawned by this
-	 *  method, we do not want to notify the UI with a special listener.  This is to
-	 *  prevent a multiple update flash because we intend to reset the available IU
-	 *  filter as soon as the new repo is added.
+	 *  represents an already known repo.  
 	 */
 	void addRepository(boolean alwaysPrompt) {
 		final RepositoryTracker manipulator = ui.getRepositoryTracker();
@@ -513,11 +528,29 @@ public class RepositorySelectionGroup {
 			AddRepositoryDialog dialog = new AddRepositoryDialog(repoCombo.getShell(), ui) {
 
 				protected String getInitialLocationText() {
-					if (isNewText)
-						return selectedRepo;
+					if (isNewText) {
+						// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=293068
+						// we need to ensure any embedded nickname is stripped out
+						URI loc = manipulator.locationFromString(selectedRepo);
+						return loc.toString();
+					}
 					return super.getInitialLocationText();
 				}
 
+				@Override
+				protected String getInitialNameText() {
+					if (isNewText) {
+						URI loc = manipulator.locationFromString(selectedRepo);
+						// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=293068
+						if (loc != null && manipulator instanceof ColocatedRepositoryTracker) {
+							String parsedNickname = ((ColocatedRepositoryTracker) manipulator).getParsedNickname(loc);
+							if (parsedNickname != null)
+								return parsedNickname;
+						}
+					}
+					return super.getInitialNameText();
+				}
+
 			};
 			dialog.setTitle(ProvUIMessages.AddRepositoryDialog_Title);
 			dialog.open();
@@ -543,7 +576,10 @@ public class RepositorySelectionGroup {
 							}
 						}
 						if (status.isOK() && location != null) {
-							manipulator.addRepository(location, null, ui.getSession());
+							String nick = null;
+							if (manipulator instanceof ColocatedRepositoryTracker)
+								nick = ((ColocatedRepositoryTracker) manipulator).getParsedNickname(location);
+							manipulator.addRepository(location, nick, ui.getSession());
 							fillRepoCombo(getSiteString(location));
 						}
 						setRepoComboDecoration(status);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
index 04b9f33..ffbb09b 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
@@ -164,6 +164,10 @@ public abstract class ResolutionResultsWizardPage extends ResolutionStatusPage {
 		return units.get(0);
 	}
 
+	protected boolean shouldCompleteOnCancel() {
+		return false;
+	}
+
 	protected Collection<IInstallableUnit> getIUs() {
 		return ElementUtils.elementsToIUs(input.getChildren(input));
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
index 5abb148..f1af3f8 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
@@ -86,6 +86,8 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
 				messageType = IMessageProvider.WARNING;
 				// Log warnings for later support
 				ProvUI.reportStatus(currentStatus, StatusManager.LOG);
+			} else if (severity == IStatus.CANCEL) {
+				pageComplete = shouldCompleteOnCancel();
 			}
 		}
 		setPageComplete(pageComplete);
@@ -96,6 +98,10 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
 		setDetailText(op);
 	}
 
+	protected boolean shouldCompleteOnCancel() {
+		return true;
+	}
+
 	protected String getIUDescription(IInstallableUnit iu) {
 		// Get the iu description in the default locale
 		String description = iu.getProperty(IInstallableUnit.PROP_DESCRIPTION, null);
@@ -118,11 +124,16 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
 		String detail = null;
 		IInstallableUnit selectedIU = getSelectedIU();
 		IUDetailsGroup detailsGroup = getDetailsGroup();
+
 		// We either haven't resolved, or we failed to resolve and reported some error
-		// while doing so.  Since the specific error was already reported, the description
-		// text can be used for the selected IU.
-		if (resolvedOperation == null || !resolvedOperation.hasResolved()) {
-			if (selectedIU != null) {
+		// while doing so.  
+		if (resolvedOperation == null || !resolvedOperation.hasResolved() || getProvisioningWizard().statusOverridesOperation()) {
+			// See if the wizard status knows something more about it.
+			IStatus currentStatus = getProvisioningWizard().getCurrentStatus();
+			if (!currentStatus.isOK()) {
+				detail = currentStatus.getMessage();
+				detailsGroup.enablePropertyLink(false);
+			} else if (selectedIU != null) {
 				detail = getIUDescription(selectedIU);
 				detailsGroup.enablePropertyLink(true);
 			} else {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SelectableIUsPage.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SelectableIUsPage.java
index 997f448..6817c76 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SelectableIUsPage.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SelectableIUsPage.java
@@ -59,9 +59,11 @@ public class SelectableIUsPage extends ResolutionStatusPage implements IResoluti
 		this.root = root;
 		if (root == null)
 			root = new IUElementListRoot();
-		this.initialSelections = initialSelections;
 		if (initialSelections == null)
-			initialSelections = new IInstallableUnit[0];
+			this.initialSelections = new IInstallableUnit[0];
+		else
+			this.initialSelections = initialSelections;
+
 	}
 
 	/*
@@ -107,8 +109,7 @@ public class SelectableIUsPage extends ResolutionStatusPage implements IResoluti
 
 		tableViewer.addCheckStateListener(new ICheckStateListener() {
 			public void checkStateChanged(CheckStateChangedEvent event) {
-				setPageComplete(tableViewer.getCheckedElements().length > 0);
-				getProvisioningWizard().mainPageSelectionsChanged();
+				updateSelection();
 			}
 		});
 
@@ -153,7 +154,7 @@ public class SelectableIUsPage extends ResolutionStatusPage implements IResoluti
 		selectAll.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event event) {
 				tableViewer.setAllChecked(true);
-				setPageComplete(tableViewer.getCheckedElements().length > 0);
+				updateSelection();
 			}
 		});
 
@@ -163,7 +164,7 @@ public class SelectableIUsPage extends ResolutionStatusPage implements IResoluti
 		deselectAll.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event event) {
 				tableViewer.setAllChecked(false);
-				setPageComplete(tableViewer.getCheckedElements().length > 0);
+				updateSelection();
 			}
 		});
 
@@ -298,4 +299,9 @@ public class SelectableIUsPage extends ResolutionStatusPage implements IResoluti
 	protected int getColumnWidth(int index) {
 		return tableViewer.getTable().getColumn(index).getWidth();
 	}
+
+	void updateSelection() {
+		setPageComplete(tableViewer.getCheckedElements().length > 0);
+		getProvisioningWizard().operationSelectionsChanged(this);
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
index 34e7d9a..7a35c6f 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
@@ -98,6 +98,8 @@ RepositoryManipulatorDropTarget_DragAndDropJobLabel=Drag and Drop Operation
 RepositoryManipulatorDropTarget_DragSourceNotValid={0} was not accepted as a valid software site location.  Check the details.
 RepositoryNameAndLocationDialog_Title=Edit Site
 RepositorySelectionGroup_GenericSiteLinkTitle=<a>Work with the list of software sites</a>
+# Separator used between a site's name and URL when they are shown together, such as "http://update.example.com - Example Site"
+RepositorySelectionGroup_NameAndLocationSeparator=\ - 
 RepositorySelectionGroup_PrefPageLink=Find more software by working with the <a>"{0}"</a> preferences.
 RepositorySelectionGroup_PrefPageName=Software Sites
 ResolutionWizardPage_Canceled=The operation was cancelled.
@@ -128,6 +130,7 @@ UpdateManagerCompatibility_ExportSitesTitle=Export Sites
 UpdateManagerCompatibility_ImportSitesTitle=Import Sites
 UpdateManagerCompatibility_InvalidSiteFileMessage=The selected file does not contain any updates sites.  Please select another file.
 UpdateManagerCompatibility_InvalidSitesTitle=Invalid Sites File
+UpdateManagerCompatibility_ItemRequiresUpdateManager=The items selected for install include software ({0}) that requires install procedures from the older Eclipse Update Manager.  The installation cannot continue.
 UpdateManagerCompatibility_UnableToOpenFindAndInstall=Unable to open the Classic Update Manager 'Find and Install' wizard.
 UpdateManagerCompatibility_UnableToOpenManageConfiguration=Unable to open the Classic Update Manager 'Manage Configuration' dialog.
 Updates_Label=Updates Available
@@ -192,24 +195,25 @@ AvailableIUsPage_GotoProperties=<a>More...</a>
 AvailableIUsPage_GroupByCategory=&Group items by category
 AvailableIUsPage_HideInstalledItems=&Hide items that are already installed
 AvailableIUsPage_LocalSites=--Only Local Sites--
-# Usage is when a site's name is shown adjacent to its URL, such as "http://update.example.com - Example Site"
-AvailableIUsPage_NameWithLocation={0} - {1}
+AvailableIUsPage_MultipleSelectionCount={0} items selected
+AvailableIUsPage_NameWithLocation={0}{1}{2}
 AvailableIUsPage_NoSites=type or select a site
 AvailableIUsPage_RepoFilterInstructions=You can type a new site location and press 'Enter' to view software from that site.
 AvailableIUsPage_RepoFilterLabel=&Work with:
 AvailableIUsPage_ResolveAllCheckbox=&Contact all update sites during install to find required software
 AvailableIUsPage_SelectASite=Select a site or enter the location of a site.
 AvailableIUsPage_ShowLatestVersions=Show only the &latest versions of available software
+AvailableIUsPage_SingleSelectionCount={0} item selected
 AvailableIUsPage_Title=Available Software
 AvailableIUWrapper_AllAreInstalled=All items are installed
 IUViewQueryContext_AllAreInstalledDescription=You can uncheck the 'Hide items that are already installed' check box to see all items.
-ElementUtils_UpdateJobTitle=Updating Repository Information
 Label_Profiles=All Software Profiles
 Label_Repositories=Known Repositories
 LaunchUpdateManagerButton=Launch...
 LoadMetadataRepositoryJob_ContactSitesProgress=Contacting Software Sites
 LoadMetadataRepositoryJob_SitesMissingError=Some sites could not be found.  See the error log for more detail.
 RepositoryElement_NotFound=This repository is currently not available.
+RepositoryTracker_DuplicateLocation=Duplicate location
 MetadataRepositoryElement_RepositoryLoadError=Error loading repository {0}
 IUViewQueryContext_NoCategorizedItemsDescription=You can uncheck the 'Group items by category' check box to see items without categories.
 QueriedElementWrapper_NoCategorizedItemsExplanation=There are no categorized items
@@ -218,7 +222,7 @@ QueriedElementWrapper_SiteNotFound=Could not find {0}
 QueryableMetadataRepositoryManager_LoadRepositoryProgress=Contacting {0}
 QueryableProfileRegistry_QueryProfileProgress=Getting profiles
 QueryableUpdates_UpdateListProgress=Assembling list of updates
-SelectableIUsPage_Select_All=Select &All
+SelectableIUsPage_Select_All=&Select All
 SelectableIUsPage_Deselect_All=&Deselect All
 SizeComputingWizardPage_SizeJobTitle=Computing size
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
index bde26b2..f6a5ab2 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
@@ -14,9 +14,9 @@ package org.eclipse.equinox.internal.p2.ui.model;
 
 import java.net.URI;
 import java.util.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.equinox.internal.p2.ui.*;
+import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.equinox.internal.p2.ui.ProvUI;
+import org.eclipse.equinox.internal.p2.ui.ProvUIActivator;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.equinox.p2.repository.IRepository;
 import org.eclipse.equinox.p2.repository.IRepositoryManager;
@@ -34,68 +34,62 @@ import org.eclipse.swt.widgets.Shell;
 public class ElementUtils {
 
 	public static void updateRepositoryUsingElements(final MetadataRepositoryElement[] elements, final Shell shell) {
-		Job job = new Job(ProvUIMessages.ElementUtils_UpdateJobTitle) {
-			public IStatus run(IProgressMonitor monitor) {
-				final ProvisioningUI ui = ProvUIActivator.getDefault().getProvisioningUI();
-				ui.signalRepositoryOperationStart();
-				IMetadataRepositoryManager metaManager = ProvUI.getMetadataRepositoryManager(ui.getSession());
-				IArtifactRepositoryManager artManager = ProvUI.getArtifactRepositoryManager(ui.getSession());
-				try {
-					int visibilityFlags = ui.getRepositoryTracker().getMetadataRepositoryFlags();
-					URI[] currentlyEnabled = metaManager.getKnownRepositories(visibilityFlags);
-					URI[] currentlyDisabled = metaManager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED | visibilityFlags);
-					for (int i = 0; i < elements.length; i++) {
-						URI location = elements[i].getLocation();
-						if (elements[i].isEnabled()) {
-							if (containsURI(currentlyDisabled, location))
-								// It should be enabled and is not currently
-								setColocatedRepositoryEnablement(ui, location, true);
-							else if (!containsURI(currentlyEnabled, location)) {
-								// It is not known as enabled or disabled.  Add it.
-								metaManager.addRepository(location);
-								artManager.addRepository(location);
-							}
-						} else {
-							if (containsURI(currentlyEnabled, location))
-								// It should be disabled, and is currently enabled
-								setColocatedRepositoryEnablement(ui, location, false);
-							else if (!containsURI(currentlyDisabled, location)) {
-								// It is not known as enabled or disabled.  Add it and then disable it.
-								metaManager.addRepository(location);
-								artManager.addRepository(location);
-								setColocatedRepositoryEnablement(ui, location, false);
-							}
-						}
-						String name = elements[i].getName();
-						if (name != null && name.length() > 0) {
-							metaManager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
-							artManager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
-						}
+		final ProvisioningUI ui = ProvUIActivator.getDefault().getProvisioningUI();
+		ui.signalRepositoryOperationStart();
+		IMetadataRepositoryManager metaManager = ProvUI.getMetadataRepositoryManager(ui.getSession());
+		IArtifactRepositoryManager artManager = ProvUI.getArtifactRepositoryManager(ui.getSession());
+		try {
+			int visibilityFlags = ui.getRepositoryTracker().getMetadataRepositoryFlags();
+			URI[] currentlyEnabled = metaManager.getKnownRepositories(visibilityFlags);
+			URI[] currentlyDisabled = metaManager.getKnownRepositories(IRepositoryManager.REPOSITORIES_DISABLED | visibilityFlags);
+			for (int i = 0; i < elements.length; i++) {
+				URI location = elements[i].getLocation();
+				if (elements[i].isEnabled()) {
+					if (containsURI(currentlyDisabled, location))
+						// It should be enabled and is not currently
+						setColocatedRepositoryEnablement(ui, location, true);
+					else if (!containsURI(currentlyEnabled, location)) {
+						// It is not known as enabled or disabled.  Add it.
+						metaManager.addRepository(location);
+						artManager.addRepository(location);
 					}
-					// Are there any elements that need to be deleted?  Go over the original state
-					// and remove any elements that weren't in the elements we were given
-					Set<String> nowKnown = new HashSet<String>();
-					for (int i = 0; i < elements.length; i++)
-						nowKnown.add(URIUtil.toUnencodedString(elements[i].getLocation()));
-					for (int i = 0; i < currentlyEnabled.length; i++) {
-						if (!nowKnown.contains(URIUtil.toUnencodedString(currentlyEnabled[i]))) {
-							metaManager.removeRepository(currentlyEnabled[i]);
-							artManager.removeRepository(currentlyEnabled[i]);
-						}
+				} else {
+					if (containsURI(currentlyEnabled, location))
+						// It should be disabled, and is currently enabled
+						setColocatedRepositoryEnablement(ui, location, false);
+					else if (!containsURI(currentlyDisabled, location)) {
+						// It is not known as enabled or disabled.  Add it and then disable it.
+						metaManager.addRepository(location);
+						artManager.addRepository(location);
+						setColocatedRepositoryEnablement(ui, location, false);
 					}
-					for (int i = 0; i < currentlyDisabled.length; i++) {
-						if (!nowKnown.contains(URIUtil.toUnencodedString(currentlyDisabled[i]))) {
-							metaManager.removeRepository(currentlyDisabled[i]);
-							artManager.removeRepository(currentlyDisabled[i]);
-						}
-					}
-				} finally {
-					ui.signalRepositoryOperationComplete(null, true);
 				}
-				return Status.OK_STATUS;
+				String name = elements[i].getName();
+				if (name != null && name.length() > 0) {
+					metaManager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
+					artManager.setRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
+				}
+			}
+			// Are there any elements that need to be deleted?  Go over the original state
+			// and remove any elements that weren't in the elements we were given
+			Set<String> nowKnown = new HashSet<String>();
+			for (int i = 0; i < elements.length; i++)
+				nowKnown.add(URIUtil.toUnencodedString(elements[i].getLocation()));
+			for (int i = 0; i < currentlyEnabled.length; i++) {
+				if (!nowKnown.contains(URIUtil.toUnencodedString(currentlyEnabled[i]))) {
+					metaManager.removeRepository(currentlyEnabled[i]);
+					artManager.removeRepository(currentlyEnabled[i]);
+				}
 			}
-		};
-		job.schedule();
+			for (int i = 0; i < currentlyDisabled.length; i++) {
+				if (!nowKnown.contains(URIUtil.toUnencodedString(currentlyDisabled[i]))) {
+					metaManager.removeRepository(currentlyDisabled[i]);
+					artManager.removeRepository(currentlyDisabled[i]);
+				}
+			}
+		} finally {
+			ui.signalRepositoryOperationComplete(null, true);
+		}
 	}
 
 	private static void setColocatedRepositoryEnablement(ProvisioningUI ui, URI location, boolean enable) {
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
index a907f60..733fd9e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
@@ -33,8 +33,8 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
 	StructuredViewer viewer;
 	Display display;
 
-	public StructuredViewerProvisioningListener(StructuredViewer viewer, int eventTypes) {
-		super(eventTypes);
+	public StructuredViewerProvisioningListener(String name, StructuredViewer viewer, int eventTypes) {
+		super(name, eventTypes);
 		this.viewer = viewer;
 		this.display = viewer.getControl().getDisplay();
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java
index 312ac40..8d67bdb 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java
@@ -143,23 +143,23 @@ public class LoadMetadataRepositoryJob extends ProvisioningJob {
 	}
 
 	private boolean shouldAccumulateFailures() {
-		return getProperty(LoadMetadataRepositoryJob.SUPPRESS_AUTHENTICATION_JOB_MARKER) != null;
+		return getProperty(LoadMetadataRepositoryJob.ACCUMULATE_LOAD_ERRORS) != null;
 	}
 
 	/**
-	 * Report the accumulated status to the repository tracker.  If there has been
+	 * Report the accumulated status for repository load failures.  If there has been
 	 * no status accumulated, or if the job has been cancelled, do not report
-	 * anything.
+	 * anything.  Detailed errors have already been logged.
 	 */
 	public void reportAccumulatedStatus() {
 		IStatus status = getCurrentStatus();
 		if (status.isOK() || status.getSeverity() == IStatus.CANCEL)
 			return;
-		// report status
-		int flags = StatusManager.LOG;
-		if (ui.getPolicy().getRepositoriesVisible())
-			flags = flags | StatusManager.SHOW;
-		StatusManager.getManager().handle(status, flags);
+
+		// If user is unaware of individual sites, nothing to report here.
+		if (!ui.getPolicy().getRepositoriesVisible())
+			return;
+		StatusManager.getManager().handle(status, StatusManager.SHOW);
 		// Reset the accumulated status so that next time we only report the newly not found repos.
 		accumulatedStatus = null;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
index 4aab2bb..71e68ea 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
@@ -12,18 +12,14 @@ package org.eclipse.equinox.p2.ui;
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.equinox.internal.p2.ui.*;
+import org.eclipse.equinox.internal.p2.ui.ProvUI;
 import org.eclipse.equinox.p2.engine.query.UserVisibleRootQuery;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.equinox.p2.operations.ProfileChangeOperation;
 import org.eclipse.equinox.p2.operations.UpdateOperation;
 import org.eclipse.equinox.p2.query.IQuery;
 import org.eclipse.equinox.p2.query.QueryUtil;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.statushandlers.StatusManager;
 
 /**
@@ -112,23 +108,6 @@ public class Policy {
 			return false;
 		}
 
-		// If the plan requires install handler support, we want to open the old update UI and
-		// cancel this operation
-		if (UpdateManagerCompatibility.requiresInstallHandlerSupport(operation.getProvisioningPlan())) {
-			PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					Shell shell = ProvUI.getDefaultParentShell();
-					MessageDialog dialog = new MessageDialog(shell, ProvUIMessages.Policy_RequiresUpdateManagerTitle, null, ProvUIMessages.Policy_RequiresUpdateManagerMessage, MessageDialog.WARNING, new String[] {ProvUIMessages.LaunchUpdateManagerButton, IDialogConstants.CANCEL_LABEL}, 0);
-					if (dialog.open() == 0)
-						BusyIndicator.showWhile(shell.getDisplay(), new Runnable() {
-							public void run() {
-								UpdateManagerCompatibility.openInstaller();
-							}
-						});
-				}
-			});
-			return false;
-		}
 		// Allow the wizard to open otherwise.
 		return true;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
index 5975e7d..d918a69 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
@@ -17,6 +17,7 @@ import java.util.Collection;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
+import org.eclipse.equinox.internal.p2.core.helpers.Tracing;
 import org.eclipse.equinox.internal.p2.ui.*;
 import org.eclipse.equinox.internal.p2.ui.dialogs.*;
 import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
@@ -348,6 +349,9 @@ public class ProvisioningUI {
 	 * a corresponding operation ending event is signaled.
 	 */
 	public void signalRepositoryOperationStart() {
+		runner.eventBatchCount++;
+		if (Tracing.DEBUG_EVENTS_CLIENT)
+			Tracing.debug("Batch Count Incremented to:  " + Integer.toString(runner.eventBatchCount)); //$NON-NLS-1$
 		ProvUI.getProvisioningEventBus(getSession()).publishEvent(new RepositoryOperationBeginningEvent(this));
 	}
 
@@ -359,6 +363,9 @@ public class ProvisioningUI {
 	 * @param update <code>true</code> if the event should be reflected in the UI, false if it should be ignored.
 	 */
 	public void signalRepositoryOperationComplete(RepositoryEvent event, boolean update) {
+		runner.eventBatchCount--;
+		if (Tracing.DEBUG_EVENTS_CLIENT)
+			Tracing.debug("Batch Count Decremented to:  " + Integer.toString(runner.eventBatchCount)); //$NON-NLS-1$
 		ProvUI.getProvisioningEventBus(getSession()).publishEvent(new RepositoryOperationEndingEvent(this, update, event));
 	}
 
@@ -390,11 +397,8 @@ public class ProvisioningUI {
 		} catch (ProvisionException e) {
 			getRepositoryTracker().reportLoadFailure(location, e);
 		} finally {
-			// We have no idea how many repos may have been touched as a result of loading this one,
-			// so in theory we would not use a specific repository event to represent it.  
-			// In practice this can cause problems in the UI like losing selections in the repo combo.
-			// So we signal an add event.
-			signalRepositoryOperationComplete(new RepositoryEvent(location, IRepository.TYPE_METADATA, RepositoryEvent.ADDED, true), notify);
+			// We have no idea how many repos may have been touched as a result of loading this one.
+			signalRepositoryOperationComplete(null, notify);
 		}
 		return repo;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
index 91222f2..e1f2935 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
@@ -12,9 +12,11 @@ package org.eclipse.equinox.p2.ui;
 
 import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Hashtable;
 import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
 import org.eclipse.equinox.internal.p2.ui.*;
 import org.eclipse.equinox.internal.p2.ui.dialogs.*;
 import org.eclipse.equinox.internal.p2.ui.model.*;
@@ -99,6 +101,9 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 	RepositoryDetailsLabelProvider labelProvider;
 	RepositoryTracker tracker;
 	RepositoryTracker localCacheRepoManipulator;
+	/**
+	 * The input field is initialized lazily and should only be accessed via the {@link #getInput()} method.
+	 */
 	CachedMetadataRepositories input;
 	Text pattern, details;
 	PatternFilter filter;
@@ -106,7 +111,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 	Button addButton, removeButton, editButton, refreshButton, disableButton, exportButton;
 
 	class CachedMetadataRepositories extends MetadataRepositories {
-		Hashtable<String, Object> cachedElements;
+		private Hashtable<String, MetadataRepositoryElement> cachedElements;
 
 		CachedMetadataRepositories() {
 			super(ui);
@@ -120,15 +125,41 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 		public Object[] fetchChildren(Object o, IProgressMonitor monitor) {
 			if (cachedElements == null) {
 				Object[] children = super.fetchChildren(o, monitor);
-				cachedElements = new Hashtable<String, Object>(children.length);
+				cachedElements = new Hashtable<String, MetadataRepositoryElement>(children.length);
 				for (int i = 0; i < children.length; i++) {
-					if (children[i] instanceof MetadataRepositoryElement)
-						cachedElements.put(URIUtil.toUnencodedString(((MetadataRepositoryElement) children[i]).getLocation()), children[i]);
+					if (children[i] instanceof MetadataRepositoryElement) {
+						put((MetadataRepositoryElement) children[i]);
+					}
 				}
 			}
 			return cachedElements.values().toArray();
 		}
 
+		MetadataRepositoryElement[] getElements() {
+			return cachedElements.values().toArray(new MetadataRepositoryElement[cachedElements.size()]);
+		}
+
+		void remove(MetadataRepositoryElement element) {
+			cachedElements.remove(getKey(element.getLocation()));
+		}
+
+		void put(MetadataRepositoryElement element) {
+			cachedElements.put(getKey(element.getLocation()), element);
+		}
+
+		MetadataRepositoryElement get(URI location) {
+			return cachedElements.get(getKey(location));
+		}
+
+		String getKey(URI location) {
+			String key = URIUtil.toUnencodedString(location);
+			int length = key.length();
+			if (length > 0 && key.charAt(length - 1) == '/') {
+				key = key.substring(0, length - 1);
+			}
+			return key;
+		}
+
 	}
 
 	class MetadataRepositoryPatternFilter extends PatternFilter {
@@ -315,7 +346,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 				element.setEnabled(event.getChecked());
 				// paranoid that an equal but not identical element was passed in as the selection.
 				// update the cache map just in case.
-				input.cachedElements.put(URIUtil.toUnencodedString(element.getLocation()), element);
+				getInput().put(element);
 				// update the viewer to show the change
 				updateForEnablementChange(new MetadataRepositoryElement[] {element});
 			}
@@ -514,7 +545,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 	}
 
 	private StructuredViewerProvisioningListener getViewerProvisioningListener() {
-		return new StructuredViewerProvisioningListener(repositoryViewer, ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
+		return new StructuredViewerProvisioningListener(RepositoryManipulationPage.this.getClass().getName(), repositoryViewer, ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY) {
 			protected void repositoryDiscovered(RepositoryEvent e) {
 				RepositoryManipulationPage.this.safeRefresh(null);
 			}
@@ -526,7 +557,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 	}
 
 	MetadataRepositoryElement[] getElements() {
-		return getInput().cachedElements.values().toArray(new MetadataRepositoryElement[getInput().cachedElements.size()]);
+		return getInput().getElements();
 	}
 
 	MetadataRepositoryElement[] getSelectedElements() {
@@ -581,16 +612,38 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 				public void run(IProgressMonitor monitor) {
 					monitor.beginTask(NLS.bind(ProvUIMessages.RepositoryManipulationPage_ContactingSiteMessage, location), 100);
 					try {
+						// Batch the events for this operation so that any events on reload (discovery, etc.) will be ignored
+						// in the UI as they happen.
+						ui.signalRepositoryOperationStart();
 						tracker.clearRepositoryNotFound(location);
-						// If the manager doesn't know this repo, refreshing it will not work.
+						// If the managers don't know this repo, refreshing it will not work.
 						// We temporarily add it, but we must remove it in case the user cancels out of this page.
 						if (!includesRepo(tracker.getKnownRepositories(ui.getSession()), location)) {
-							// Start a batch operation so we can swallow events
 							remove[0] = true;
-							ui.signalRepositoryOperationStart();
-							tracker.addRepository(location, selected[0].getName(), ui.getSession());
+							// We don't want to use the tracker here because it ensures that additions are
+							// reported as user events to be responded to.  We don't want, for example, the
+							// install wizard to change combo selections based on what is done here.
+							ProvUI.getMetadataRepositoryManager(ui.getSession()).addRepository(location);
+							ProvUI.getArtifactRepositoryManager(ui.getSession()).addRepository(location);
+						}
+						// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=312332
+						// We assume repository colocation here.  Ideally we should not do this, but the
+						// RepositoryTracker API is swallowing the refresh errors.
+						SubMonitor sub = SubMonitor.convert(monitor, 200);
+						try {
+							ProvUI.getMetadataRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
+						} catch (ProvisionException e) {
+							fail[0] = e;
+						}
+						try {
+							ProvUI.getArtifactRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
+						} catch (ProvisionException e) {
+							// Failure in the artifact repository.  We will not report this because the user has no separate visibility
+							// of the artifact repository.  We should log the error.  If this repository fails during a download, the error
+							// will be reported at that time to the user, when it matters.  This also prevents false error reporting when
+							// a metadata repository didn't actually have a colocated artifact repository.
+							LogHelper.log(e);
 						}
-						tracker.refreshRepositories(new URI[] {location}, ui.getSession(), monitor);
 					} catch (OperationCanceledException e) {
 						// Catch canceled login attempts
 						fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled, e));
@@ -600,10 +653,10 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 							fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled));
 						// If we temporarily added a repo so we could read it, remove it.
 						if (remove[0]) {
-							tracker.removeRepositories(new URI[] {location}, ui.getSession());
-							// stop swallowing events
-							ui.signalRepositoryOperationComplete(null, false);
+							ProvUI.getMetadataRepositoryManager(ui.getSession()).removeRepository(location);
+							ProvUI.getArtifactRepositoryManager(ui.getSession()).removeRepository(location);
 						}
+						ui.signalRepositoryOperationComplete(null, false);
 					}
 				}
 			});
@@ -644,7 +697,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 			boolean enableSites = !toggleMeansDisable(selected);
 			for (int i = 0; i < selected.length; i++) {
 				selected[i].setEnabled(enableSites);
-				input.cachedElements.put(URIUtil.toUnencodedString(selected[i].getLocation()), selected[i]);
+				getInput().put(selected[i]);
 			}
 			updateForEnablementChange(selected);
 		}
@@ -665,10 +718,9 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 			public void run() {
 				MetadataRepositoryElement[] imported = UpdateManagerCompatibility.importSites(getShell());
 				if (imported.length > 0) {
-					Hashtable<String, Object> repos = getInput().cachedElements;
 					changed = true;
 					for (int i = 0; i < imported.length; i++)
-						repos.put(URIUtil.toUnencodedString(imported[i].getLocation()), imported[i]);
+						getInput().put(imported[i]);
 					safeRefresh(null);
 				}
 			}
@@ -801,7 +853,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 
 				changed = true;
 				for (int i = 0; i < selections.length; i++) {
-					getInput().cachedElements.remove(URIUtil.toUnencodedString(selections[i].getLocation()));
+					getInput().remove(selections[i]);
 				}
 				safeRefresh(null);
 			}
@@ -814,10 +866,10 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 		if (localCacheRepoManipulator == null)
 			localCacheRepoManipulator = new RepositoryTracker() {
 				public void addRepository(URI location, String nickname, ProvisioningSession session) {
-					MetadataRepositoryElement element = (MetadataRepositoryElement) getInput().cachedElements.get(URIUtil.toUnencodedString(location));
+					MetadataRepositoryElement element = getInput().get(location);
 					if (element == null) {
 						element = new MetadataRepositoryElement(getInput(), location, true);
-						getInput().cachedElements.put(URIUtil.toUnencodedString(location), element);
+						getInput().put(element);
 					}
 					if (nickname != null)
 						element.setNickname(nickname);
@@ -836,6 +888,24 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
 				public void refreshRepositories(URI[] locations, ProvisioningSession session, IProgressMonitor monitor) {
 					// Nothing to refresh in the local cache
 				}
+
+				public IStatus validateRepositoryLocation(ProvisioningSession session, URI location, boolean contactRepositories, IProgressMonitor monitor) {
+					IStatus status = super.validateRepositoryLocation(session, location, contactRepositories, monitor);
+					if (status.isOK()) {
+						String repoString = URIUtil.toUnencodedString(location);
+						int length = repoString.length();
+						if (length > 0 && repoString.charAt(length - 1) == '/') {
+							try {
+								location = URIUtil.fromString(repoString.substring(0, length - 1));
+							} catch (URISyntaxException e) {
+								return status;
+							}
+							status = super.validateRepositoryLocation(session, location, contactRepositories, monitor);
+						}
+					}
+					return status;
+
+				}
 			};
 		return localCacheRepoManipulator;
 	}
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
index a5ed6b4..cbd937e 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.p2.updatechecker;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.100.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.equinox.internal.p2.updatechecker;x-internal:=true,
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
index 6e338ef..4d5bd40 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
@@ -105,8 +105,8 @@ public class SiteXMLAction extends AbstractPublisherAction {
 		for (SiteFeature feature : featuresToCategories.keySet()) {
 			if (monitor.isCanceled())
 				return Status.CANCEL_STATUS;
-			IInstallableUnit iu = getFeatureIU(feature, publisherInfo, results);
-			if (iu == null)
+			Collection<IInstallableUnit> ius = getFeatureIU(feature, publisherInfo, results);
+			if (ius == null)
 				continue;
 			Set<SiteCategory> categories = featuresToCategories.get(feature);
 			// if there are no categories for this feature then add it to the default category.
@@ -118,7 +118,7 @@ public class SiteXMLAction extends AbstractPublisherAction {
 					featureIUs = new HashSet<IInstallableUnit>();
 					categoriesToIUs.put(category, featureIUs);
 				}
-				featureIUs.add(iu);
+				featureIUs.addAll(ius);
 			}
 		}
 		addSiteIUsToCategories(categoriesToIUs, publisherInfo, results);
@@ -183,13 +183,13 @@ public class SiteXMLAction extends AbstractPublisherAction {
 
 	private static final IExpression qualifierMatchExpr = ExpressionUtil.parse("id == $0 && version ~= $1"); //$NON-NLS-1$
 
-	private IInstallableUnit getFeatureIU(SiteFeature feature, IPublisherInfo publisherInfo, IPublisherResult results) {
+	private Collection<IInstallableUnit> getFeatureIU(SiteFeature feature, IPublisherInfo publisherInfo, IPublisherResult results) {
 		String id = feature.getFeatureIdentifier() + ".feature.group"; //$NON-NLS-1$
 		String versionString = feature.getFeatureVersion();
 		Version version = versionString != null && versionString.length() > 0 ? Version.create(versionString) : Version.emptyVersion;
 		IQuery<IInstallableUnit> query = null;
 		if (version.equals(Version.emptyVersion)) {
-			query = QueryUtil.createLatestQuery(QueryUtil.createIUQuery(id));
+			query = QueryUtil.createIUQuery(id);
 		} else {
 			String qualifier;
 			try {
@@ -200,7 +200,7 @@ public class SiteXMLAction extends AbstractPublisherAction {
 			if (qualifier != null && qualifier.endsWith(QUALIFIER)) {
 				VersionRange range = createVersionRange(version.toString());
 				IQuery<IInstallableUnit> qualifierQuery = QueryUtil.createMatchQuery(qualifierMatchExpr, id, range);
-				query = QueryUtil.createLatestQuery(qualifierQuery);
+				query = qualifierQuery;
 			} else {
 				query = QueryUtil.createLimitQuery(QueryUtil.createIUQuery(id, version), 1);
 			}
@@ -213,7 +213,7 @@ public class SiteXMLAction extends AbstractPublisherAction {
 			queryResult = publisherInfo.getContextMetadataRepository().query(query, null);
 
 		if (!queryResult.isEmpty())
-			return queryResult.iterator().next();
+			return queryResult.toUnmodifiableSet();
 		return null;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/UpdateSite.java b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/UpdateSite.java
index bf74c82..6c09b54 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/UpdateSite.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/UpdateSite.java
@@ -11,6 +11,7 @@
 package org.eclipse.equinox.internal.p2.updatesite;
 
 import java.io.*;
+import java.lang.ref.SoftReference;
 import java.net.*;
 import java.util.HashMap;
 import java.util.Map;
@@ -48,9 +49,9 @@ public class UpdateSite {
 	 * Some variables for caching.
 	 */
 	// map of String (URI.toString()) to UpdateSite
-	private static Map<String, UpdateSite> siteCache = new HashMap<String, UpdateSite>();
+	private static Map<String, SoftReference<UpdateSite>> siteCache = new HashMap<String, SoftReference<UpdateSite>>();
 	// map of String (URI.toString()) to UpdateSite (for category xmls)
-	private static Map<String, UpdateSite> categoryCache = new HashMap<String, UpdateSite>();
+	private static Map<String, SoftReference<UpdateSite>> categoryCache = new HashMap<String, SoftReference<UpdateSite>>();
 	// map of String (featureID_featureVersion) to Feature
 	private Map<String, Feature> featureCache = new HashMap<String, Feature>();
 
@@ -81,9 +82,15 @@ public class UpdateSite {
 	public static synchronized UpdateSite loadCategoryFile(URI location, IProgressMonitor monitor) throws ProvisionException {
 		if (location == null)
 			return null;
-		UpdateSite result = categoryCache.get(location.toString());
-		if (result != null)
-			return result;
+		UpdateSite result = null;
+		if (!PROTOCOL_FILE.equals(location.getScheme()) && categoryCache.containsKey(location.toString())) {
+			result = categoryCache.get(location.toString()).get();
+			if (result != null)
+				return result;
+			//else soft reference has been cleared, take it out of the cache
+			categoryCache.remove(location.toString());
+		}
+
 		InputStream input = null;
 		File siteFile = loadActualSiteFile(location, location, monitor);
 		try {
@@ -93,7 +100,8 @@ public class UpdateSite {
 			SiteModel siteModel = siteParser.parse(input);
 			String checksumString = Long.toString(checksum.getValue());
 			result = new UpdateSite(siteModel, location, checksumString);
-			categoryCache.put(location.toString(), result);
+			if (!PROTOCOL_FILE.equals(location.getScheme()))
+				categoryCache.put(location.toString(), new SoftReference<UpdateSite>(result));
 			return result;
 		} catch (SAXException e) {
 			String msg = NLS.bind(Messages.ErrorReadingSite, location);
@@ -119,9 +127,17 @@ public class UpdateSite {
 	public static synchronized UpdateSite load(URI location, IProgressMonitor monitor) throws ProvisionException {
 		if (location == null)
 			return null;
-		UpdateSite result = siteCache.get(location.toString());
-		if (result != null)
-			return result;
+
+		UpdateSite result = null;
+		//only caching remote sites
+		if (!PROTOCOL_FILE.equals(location.getScheme()) && siteCache.containsKey(location.toString())) {
+			result = siteCache.get(location.toString()).get();
+			if (result != null)
+				return result;
+			//else soft reference has been cleared, take it out of the cache
+			siteCache.remove(location.toString());
+		}
+
 		InputStream input = null;
 		File siteFile = loadSiteFile(location, monitor);
 		try {
@@ -131,7 +147,8 @@ public class UpdateSite {
 			SiteModel siteModel = siteParser.parse(input);
 			String checksumString = Long.toString(checksum.getValue());
 			result = new UpdateSite(siteModel, getSiteURI(location), checksumString);
-			siteCache.put(location.toString(), result);
+			if (!PROTOCOL_FILE.equals(location.getScheme()))
+				siteCache.put(location.toString(), new SoftReference<UpdateSite>(result));
 			return result;
 		} catch (SAXException e) {
 			String msg = NLS.bind(Messages.ErrorReadingSite, location);
diff --git a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/VersionSuffixGenerator.java b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/VersionSuffixGenerator.java
index d2f7cbd..788701d 100644
--- a/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/VersionSuffixGenerator.java
+++ b/eclipse/plugins/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/VersionSuffixGenerator.java
@@ -159,7 +159,7 @@ public class VersionSuffixGenerator {
 	}
 
 	public VersionSuffixGenerator(int maxVersionSuffixLenght, int significantDigits) {
-		this.maxVersionSuffixLength = maxVersionSuffixLenght < 0 ? 28 : maxVersionSuffixLenght;
+		this.maxVersionSuffixLength = maxVersionSuffixLenght < 0 ? 45 : maxVersionSuffixLenght;
 		this.significantDigits = significantDigits < 0 ? Integer.MAX_VALUE : significantDigits;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.equinox.security.win32.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.security.win32.x86/META-INF/MANIFEST.MF
index d4b3027..2a011c8 100644
--- a/eclipse/plugins/org.eclipse.equinox.security.win32.x86/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.security.win32.x86/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.equinox.security.win32.x86;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.equinox.security;bundle-version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties b/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
index ce456d5..ecb3dba 100644
--- a/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
@@ -108,7 +108,7 @@ fileManager_illegalInReadOnlyMode = Cannot perform operation while in read-only
 fileManager_notOpen = Manager is not opened.
 
 #Location messages
-location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking passing {2} as a VM argument.
+location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking by passing {2} as a VM argument.
 location_cannotLock = An error occurred while locking file \"{0}\".
 location_folderReadOnly = The folder \"{0}\" is read-only.
 location_notSet = The location has not been set.
diff --git a/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties b/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
index c814fce..1c73f44 100644
--- a/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
+++ b/eclipse/plugins/org.eclipse.equinox.supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
+# Copyright (c) 2003, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -25,9 +25,9 @@ BUNDLE_STATE_CHANGE_EXCEPTION=State change in progress for bundle \"{0}\" by thr
 BUNDLE_REFRESH_FAILURE=PackageAdmin.refreshPackages failed to complete
 BUNDLE_ACTIVATOR_EXCEPTION=Exception in {0}.{1}() of bundle {2}.
 BUNDLE_INVALID_ACTIVATOR_EXCEPTION=The activator {0} for bundle {1} is invalid
-BUNDLE_UNRESOLVED_EXCEPTION=The bundle could not be resolved
+BUNDLE_UNRESOLVED_EXCEPTION=The bundle \"{0}\" could not be resolved
 BUNDLE_UNRESOLVED_STATE_CONFLICT=The state indicates the bundle is resolved
-BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle could not be resolved. Reason: {0}
+BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle \"{0}\" could not be resolved. Reason: {1}
 BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION=The System Bundle cannot be uninstalled
 BUNDLE_READ_EXCEPTION=An error occurred trying to read the bundle
 BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION=The Bundle-ClassPath entry \"{0}\" was not found in the bundle: {1}
diff --git a/eclipse/plugins/org.eclipse.equinox.util/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.util/META-INF/MANIFEST.MF
index f52d160..303ee71 100644
--- a/eclipse/plugins/org.eclipse.equinox.util/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.equinox.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.equinox.util
 Bundle-Name: %bundleName
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Vendor: %bundleVendor
 Bundle-Activator: org.eclipse.equinox.internal.util.UtilActivator
 Bundle-Description: The Equinox Util Bundle contains services to facilitate bundle developers in their programming, and to lighten resource usage at runtime.
diff --git a/eclipse/plugins/org.eclipse.help.base/about.properties b/eclipse/plugins/org.eclipse.help.base/about.properties
index e46a525..de1090d 100644
--- a/eclipse/plugins/org.eclipse.help.base/about.properties
+++ b/eclipse/plugins/org.eclipse.help.base/about.properties
@@ -19,6 +19,6 @@ blurb=Eclipse Help\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/platform
 
diff --git a/eclipse/plugins/org.eclipse.help.base/plugin.properties b/eclipse/plugins/org.eclipse.help.base/plugin.properties
index 35d5307..73a5b39 100644
--- a/eclipse/plugins/org.eclipse.help.base/plugin.properties
+++ b/eclipse/plugins/org.eclipse.help.base/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -25,4 +25,6 @@ defaultBrowser = Default Web Browser (Change in System Preferences)
 preferences = Help System Base Preferences
 
 search_participant_extension_point_name = Lucene Search Participant
-server_extension_point_name = Help Server
\ No newline at end of file
+server_extension_point_name = Help Server
+help_search_participant_extension_point_name = Help Search Participant
+help_scope_extension_point_name = Help Scope
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.help.base/plugin.xml b/eclipse/plugins/org.eclipse.help.base/plugin.xml
index 9c446bb..45114fb 100644
--- a/eclipse/plugins/org.eclipse.help.base/plugin.xml
+++ b/eclipse/plugins/org.eclipse.help.base/plugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
+<?eclipse version="3.0"?>
+<!--
     Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
@@ -18,8 +19,8 @@
    <extension-point id="activitySupport" name="%activity_extension_point_name" schema="schema/activitySupport.exsd"/>
    <extension-point id="luceneSearchParticipants" name="%search_participant_extension_point_name" schema="schema/luceneSearchParticipants.exsd"/>
    <extension-point id="server" name="%server_extension_point_name" schema="schema/server.exsd"/>
-   <extension-point id="searchParticipant" name="Help Search Participant" schema="schema/searchParticipant.exsd"/>
-   <extension-point id="scope" name="Help Scope" schema="schema/scope.exsd"/>
+   <extension-point id="searchParticipant" name="%help_search_participant_extension_point_name" schema="schema/searchParticipant.exsd"/>
+   <extension-point id="scope" name="%help_scope_extension_point_name" schema="schema/scope.exsd"/>
 
 <!-- Stand-alone infocenter application -->
    <extension
diff --git a/eclipse/plugins/org.eclipse.help.base/schema/luceneSearchParticipants.exsd b/eclipse/plugins/org.eclipse.help.base/schema/luceneSearchParticipants.exsd
index 8d930cb..1a7f56e 100644
--- a/eclipse/plugins/org.eclipse.help.base/schema/luceneSearchParticipants.exsd
+++ b/eclipse/plugins/org.eclipse.help.base/schema/luceneSearchParticipants.exsd
@@ -6,7 +6,10 @@
          <meta.schema plugin="org.eclipse.help.base" id="luceneSearchParticipants" name="Lucene Search Participants"/>
       </appInfo>
       <documentation>
-         This extension point should be used to add document content to the Lucene search index. There are two cases were you would want to add a search participant:
+         &lt;p&gt;&lt;strong&gt;In Eclipse 3.6 the announcement was made that this API is deprecated and will be removed in a future release. Use org.eclipse.help.base.searchParticipant as a replacement.
+&lt;/strong&gt;&lt;/p&gt;
+
+This extension point should be used to add document content to the Lucene search index. There are two cases were you would want to add a search participant:
 &lt;ol&gt;
 &lt;li&gt;
 To index documents registered with the help system&apos;s TOC that are not of the HTML format (e.g. XML). In this case, the participant must declare file extensions it can handle. It will be called to index each matching document. In this case, the participant has the plug-in scope.
@@ -232,7 +235,7 @@ Search participants are associated with the plug-in the extension appears in. In
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2005, 2006 IBM Corporation and others.&lt;br&gt;
+         Copyright (c) 2005, 2010 IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 which accompanies 
 this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
diff --git a/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/internal/protocols/HelpURLConnection.java b/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/internal/protocols/HelpURLConnection.java
index 89c1b11..e7350de 100644
--- a/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/internal/protocols/HelpURLConnection.java
+++ b/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/internal/protocols/HelpURLConnection.java
@@ -10,13 +10,16 @@
  *******************************************************************************/
 package org.eclipse.help.internal.protocols;
 
+import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.Locale;
 import java.util.StringTokenizer;
 import java.util.Vector;
@@ -46,6 +49,8 @@ public class HelpURLConnection extends URLConnection {
 	private final static String PATH_RTOPIC = "/rtopic"; //$NON-NLS-1$
 	private static final String PROTOCOL_HTTP = "http://"; //$NON-NLS-1$
 	
+	private static Hashtable templates = new Hashtable();
+	
 	// document caching - disabled if running in dev mode
 	protected static boolean cachingEnabled = true;
 	static {
@@ -384,11 +389,13 @@ public class HelpURLConnection extends URLConnection {
 		}
 		return null;
 	}
-
-	private InputStream openRemoteStream(String remoteURL, String pathSuffix)  {
+	
+	private InputStream getUnverifiedStream(String remoteURL,String pathSuffix)
+	{
 		URL url;
 		InputStream in = null;
 		try {
+			
 			if(remoteURL.startsWith(PROTOCOL_HTTP))
 			{
 				url = new URL(remoteURL + pathSuffix);
@@ -400,11 +407,97 @@ public class HelpURLConnection extends URLConnection {
 				url = HttpsUtility.getHttpsURL(remoteURL + pathSuffix);
 				in = HttpsUtility.getHttpsStream(url);
 			}
+			
 		} catch (Exception e) {
 			// File not found on this server
 		}
 		return in;
 	}
+	
+
+	private InputStream openRemoteStream(String remoteURL, String pathSuffix)  {
+		InputStream in = getUnverifiedStream(remoteURL,pathSuffix);	
+
+		String errPage[] = (String[])templates.get(remoteURL);
+		if (errPage==null)
+		{
+			String error = getPageText(getUnverifiedStream(remoteURL,"/rtopic/fakeurltogetatestpage/_ACEGIKMOQ246.html")); //$NON-NLS-1$
+			if (error!=null)
+			{
+				errPage = error.split("\n"); //$NON-NLS-1$
+				templates.put(remoteURL,errPage);
+			}
+			else
+			{
+				errPage = new String[0];
+				templates.put(remoteURL,errPage);
+			}
+		}
+
+		
+		// No error page, InfoCenter is at least 3.6, so it is
+		// returning null already.
+		if (errPage.length==0)
+			return in;
+		
+		// Check to see if the URL is the error page for the 
+		// remote IC.  If so, return null.
+		if (compare(errPage,getUnverifiedStream(remoteURL,pathSuffix)))
+		{
+			try{
+				in.close();
+			}catch(Exception ex){}
+			return null;
+		}
+		return in;
+	}
+	
+	private boolean compare(String lines[],InputStream in)
+	{
+		try{
+			if (in!=null)
+			{
+				BufferedReader br = new BufferedReader(new InputStreamReader(in));
+				String line;
+				int count = 0;
+				
+				while ((line = br.readLine())!=null)
+				{
+					if (count>lines.length)
+						return false;
+					
+					if (!lines[count].equals(line))
+						return false;
+					count++;
+				}
+				br.close();
+				in.close();
+				return true;
+			}
+		}catch(Exception ex)
+		{}
+		return false;
+	}
+	
+	private String getPageText(InputStream in) {
+		try{
+			if (in!=null)
+			{
+				BufferedReader br = new BufferedReader(new InputStreamReader(in));
+				String line,result=""; //$NON-NLS-1$
+				
+				while ((line = br.readLine())!=null)
+				{
+					result+=line+'\n';
+				}
+				br.close();
+				in.close();
+				return result;
+			}
+		}catch(Exception ex){}
+		
+		return null;
+	}
 
 	private InputStream tryOpeningAllServers(String pathSuffix) {
 		PreferenceFileHandler prefHandler = new PreferenceFileHandler();
diff --git a/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/search/LuceneSearchParticipant.java b/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/search/LuceneSearchParticipant.java
index 6a19f1b..7650823 100644
--- a/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/search/LuceneSearchParticipant.java
+++ b/eclipse/plugins/org.eclipse.help.base/src/org/eclipse/help/search/LuceneSearchParticipant.java
@@ -56,6 +56,9 @@ import org.osgi.framework.Bundle;
  * which are not binary compatible between major release. The 
  * extension point org.eclipse.help.base.searchParticipant 
  * and the class SearchParticipant should be used instead.
+ * 
+ * In Eclipse 3.6 the announcement was made that this API class will be removed 
+ * in a future release.
  */
 public abstract class LuceneSearchParticipant {
 
diff --git a/eclipse/plugins/org.eclipse.help.ui/plugin.xml b/eclipse/plugins/org.eclipse.help.ui/plugin.xml
index 3821ca5..be3accd 100644
--- a/eclipse/plugins/org.eclipse.help.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.help.ui/plugin.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
-     All rights reserved. This program and the accompanying materials
-     are made available under the terms of the Eclipse Public License v1.0
-     which accompanies this distribution, and is available at
-     http://www.eclipse.org/legal/epl-v10.html
-    
-     Contributors:
+<?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/Messages.properties b/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/Messages.properties
index b7088e5..495719a 100644
--- a/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/Messages.properties
+++ b/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/Messages.properties
@@ -203,7 +203,7 @@ AddICDialog_2=Add new information center
 AddICDialog_4=&Name:
 AddICDialog_5=&Host:
 AddICDialog_7=&Path:
-AddICDialog_8=&Protocol:
+AddICDialog_8=Proto&col:
 AddICDialog_9=Use &default port
 AddICDialog_10=Use p&ort:
 AddICDialog_17=You must specify a Host
diff --git a/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/search/HelpCriteriaContentProvider.java b/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/search/HelpCriteriaContentProvider.java
index 9b9fe62..dfb9b53 100644
--- a/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/search/HelpCriteriaContentProvider.java
+++ b/eclipse/plugins/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/search/HelpCriteriaContentProvider.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.help.ui.internal.search;
 
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.help.internal.HelpPlugin;
 import org.eclipse.help.internal.base.BaseHelpSystem;
 import org.eclipse.help.ui.internal.Messages;
 import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -33,7 +35,7 @@ public class HelpCriteriaContentProvider implements ITreeContentProvider {
 		}
 		
 		public String getName() {
-			return id;
+			return HelpPlugin.getCriteriaManager().getCriterionDisplayName(id, Platform.getNL());
 		}
 
 		public Object getParent() {
@@ -70,7 +72,8 @@ public class HelpCriteriaContentProvider implements ITreeContentProvider {
 			if (id.equals(UNCATEGORIZED)) {
 				return Messages.UncategorizedCriteria;
 			}
-			return id;
+			CriterionName parentCriterion = (CriterionName) parent;
+			return HelpPlugin.getCriteriaManager().getCriterionValueDisplayName(parentCriterion.id, id, Platform.getNL());
 		}
 
 		public Object getParent() {
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/advanced.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/advanced.jsp
index 92f2da2..514a59f 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/advanced.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/advanced.jsp
@@ -16,7 +16,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <title><%=ServletResources.getString("Advanced", request)%></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/bookmarksView.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/bookmarksView.jsp
index 2fa543e..61b9ee3 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/bookmarksView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/bookmarksView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="Pragma" content="no-cache">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/confirmShowAll.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/confirmShowAll.jsp
index 8ca6894..de75e78 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/confirmShowAll.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/confirmShowAll.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2008 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <title><%=ServletResources.getString("confirmShowAllTitle", request)%></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/content.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/content.jsp
index 4aa7cea..74ad31c 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/content.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/content.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/deferredView.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/deferredView.jsp
index 698d10c..6a7a1e0 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/deferredView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/deferredView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2006 IBM Corporation and others.
+ Copyright (c) 2006, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title><%=ServletResources.getString("Loading", request)%></title>
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/err.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/err.jsp
index 68a65e3..fa317a4 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/err.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/err.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
 --%>
 <%@ page import="org.eclipse.help.internal.webapp.data.*" contentType="text/html; charset=UTF-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/help.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/help.jsp
index c1e6080..a21f3c2 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/help.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/help.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2008 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/helpToolbar.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/helpToolbar.jsp
index c20b7c6..d94d950 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/helpToolbar.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/helpToolbar.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2009 IBM Corporation and others.
+ Copyright (c) 2009, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -17,7 +17,7 @@
 	AbstractFrame frame = frameData.getHelpToolbarFrame();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title><%=ServletResources.getString("helpToolbarFrame", request)%></title>
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.css b/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.css
index a1a6002..f77c6b6 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.css
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.css
@@ -2,3 +2,7 @@
 	background-color:#FFFF66;
 	color: #000000;
 }
+
+a:link .resultofText, a:visited .resultofText {
+	text-decoration: underline;
+}
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.js b/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.js
index c3254c9..47f9e5d 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.js
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/highlight.js
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -140,24 +140,18 @@ function highlightWordInText(aWord, textNode){
 			replacementNode.appendChild(newBefore);
 			spanNode=document.createElement("span");
 			spanNode.setAttribute("name","resultofMatch");
-			if(isSafari){
-				if (defaultHighlight == true) {
-					spanNode.style.color="#000000";
-					spanNode.style.background="#FFFF66";
+
+			if ((defaultHighlight == false) && !document.styleSheets) {
+				if (isIE) spanNode.setAttribute("className",null);
+				else spanNode.setAttribute("class",null);
+			} else {
+				if (isIE) {
+				    spanNode.className ="resultofText";
 				} else {
-					spanNode.style.color=null;
-					spanNode.style.background=null;
-				}
-			}else{
-				if ((defaultHighlight == false) && !document.styleSheets) {
-					if (isIE) spanNode.setAttribute("className",null);
-					else spanNode.setAttribute("class",null);
-				}
-				else {
-					if (isIE) spanNode.setAttribute("className","resultofText");
-					else spanNode.setAttribute("class","resultofText");
+				    spanNode.setAttribute("class","resultofText");
 				}
 			}
+
 			replacementNode.appendChild(spanNode);
 			if(!firstNodeHighlighted){
 			firstNodeToBeHighlighted=spanNode;
@@ -261,24 +255,7 @@ function toggleHighlight() {
 
 function setHighlight(current) {
 	currentHighlight = (current==true);
-	if (isSafari) {
-		var color;
-		var backgnd;
-		if (currentHighlight) {
-			color = "#000000";
-			backgnd = "#FFFF66";
-		}
-		else {
-			color = null;
-			backgnd = null;
-		}
-		var elements = document.getElementsByName("resultofMatch");
-		for (var i = 0; i<elements.length; i++){
-			elements[i].style.color=color;
-			elements[i].style.backgroundColor= backgnd;
-		}
-	}
-	else if (document.styleSheets){
+    if (document.styleSheets){
 		var text;
 		if (currentHighlight) {
 			text = "COLOR: #000000; BACKGROUND-COLOR: #FFFF66;";
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/index.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/index.jsp
index e19149c..9febf8b 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/index.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/index.jsp
@@ -20,7 +20,7 @@
 	}
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/indexView.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/indexView.jsp
index 4864a0e..897f0cc 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/indexView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/indexView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2005, 2009 Intel Corporation and others.
+ Copyright (c) 2005, 2010 Intel Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
      IBM Corporation - 166695 [Webapp] Index View truncates button if large fonts are used
      IBM Corporation 2006, refactored index view into a single frame
      IBM Corporation 2009, css changes
+     IBM Corporation 2010, added lang to html tag
 --%>
 <%@ include file="fheader.jsp"%>
 
@@ -19,7 +20,7 @@
 	WebappPreferences prefs = requestData.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/nav.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/nav.jsp
index be2e8c2..06fd634 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/nav.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/nav.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2008 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/printConfirm.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/printConfirm.jsp
index 2908cb5..4c1738d 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/printConfirm.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/printConfirm.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2009 IBM Corporation and others.
+ Copyright (c) 2009, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -23,7 +23,7 @@
 	String notice = ServletResources.getString("topicNumExceeded", args, request);
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta http-equiv="Pragma" content="no-cache">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/printError.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/printError.jsp
index abceeb3..9ad0256 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/printError.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/printError.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2009 IBM Corporation and others.
+ Copyright (c) 2009, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -13,7 +13,7 @@
 	String msg = (String)request.getAttribute("msg");
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta http-equiv="Pragma" content="no-cache">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/quickSearch.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/quickSearch.jsp
index bcc106d..19a7c7b 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/quickSearch.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/quickSearch.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2009 IBM Corporation and others.
+ Copyright (c) 2009, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
     String quickSearchType = data.isSelectedTopicQuickSearchRequest()? "QuickSearchTopic":"QuickSearchToc";
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <title><%= ServletResources.getString(quickSearchType, request)%></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchScoped.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchScoped.jsp
index bdb5d89..c335089 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchScoped.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchScoped.jsp
@@ -17,7 +17,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchSimple.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchSimple.jsp
index a993fee..de69560 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchSimple.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchSimple.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchView.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchView.jsp
index b0fb8d8..ba9e1b9 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/searchView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/searchView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -20,7 +20,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="Pragma" content="no-cache">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/tabs.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/tabs.jsp
index 5e86ac6..6ef278e 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/tabs.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/tabs.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
 	AbstractView[] views = data.getViews();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/tocView.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/tocView.jsp
index 3120c04..97ac845 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/tocView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/tocView.jsp
@@ -15,7 +15,7 @@
 	WebappPreferences prefs = requestData.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/toolbar.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/toolbar.jsp
index 4cd2138..1fb1da2 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/toolbar.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/toolbar.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/utils.js b/eclipse/plugins/org.eclipse.help.webapp/advanced/utils.js
index d43a9d9..55b9bb6 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/utils.js
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/utils.js
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -159,7 +159,13 @@ function getCookie(name) {
 function setCookie(name, value) {
 	var date = new Date();
 	date.setTime(date.getTime()+(365*24*60*60*1000));
-	document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + ";path=/";
+	var path = window.location.pathname;
+	var cookiePath = "/help/";
+	var slash = path.indexOf('/', 1);
+	if(slash > 0) {
+	   cookiePath = path.substr(0, slash + 1); 
+	}			
+	document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + ";path=" + cookiePath;
 }
 
 function setCSSRule(selector, property, value) {
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/view.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/view.jsp
index 24d8b4c..5ebd572 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/view.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/view.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -17,7 +17,7 @@
 	if (view == null) return;
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/views.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/views.jsp
index 00a3521..bcc91cf 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/views.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/views.jsp
@@ -19,7 +19,7 @@
 %>	
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSet.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSet.jsp
index cf5192d..4102335 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSet.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSet.jsp
@@ -20,7 +20,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <title><%=ServletResources.getString(data.isEditMode()?"EditWorkingSet":"NewWorkingSet", request)%></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSetManager.jsp b/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSetManager.jsp
index 48f052e..6aa0ae7 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSetManager.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/advanced/workingSetManager.jsp
@@ -18,7 +18,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <title><%=ServletResources.getString("SelectWorkingSetTitle", request)%></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/err.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/err.jsp
index 196be27..9a63075 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/err.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/err.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -10,8 +10,8 @@
 --%>
 <%@ page import="org.eclipse.help.internal.webapp.data.*" contentType="text/html; charset=UTF-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
 
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title> Error </title>
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/help.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/help.jsp
index bf1d2b8..1a33a9e 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/help.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/help.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -13,7 +13,7 @@
 	LayoutData data = new LayoutData(application,request, response);
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/index.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/index.jsp
index eca2e6b..cce5202 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/index.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/index.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -13,7 +13,7 @@
 	LayoutData data = new LayoutData(application,request, response);
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/indexView.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/indexView.jsp
index 9120d47..abc241e 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/indexView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/indexView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2006 Intel Corporation and others.
+ Copyright (c) 2006, 2010 Intel Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/searchView.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/searchView.jsp
index b31b69a..9fd73ee 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/searchView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/searchView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	LayoutData ldata = new LayoutData(application,request, response);
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="Pragma" content="no-cache">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/tabs.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/tabs.jsp
index 1ccddf1..51782da 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/tabs.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/tabs.jsp
@@ -15,7 +15,7 @@
 	AbstractView[] views = data.getViews();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/tocView.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/tocView.jsp
index d096f73..d3a1829 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/tocView.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/tocView.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2004 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@
 	WebappPreferences prefs = data.getPrefs();
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/toolbar.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/toolbar.jsp
index fee32d6..eb6fc6a 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/toolbar.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/toolbar.jsp
@@ -15,7 +15,7 @@
 %>
 
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/basic/view.jsp b/eclipse/plugins/org.eclipse.help.webapp/basic/view.jsp
index 99a2d61..38a0636 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/basic/view.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/basic/view.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -15,7 +15,7 @@
 	if (view == null) return;
 %>
 
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
diff --git a/eclipse/plugins/org.eclipse.help.webapp/index.jsp b/eclipse/plugins/org.eclipse.help.webapp/index.jsp
index 7b7fc1d..d006e9b 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/index.jsp
+++ b/eclipse/plugins/org.eclipse.help.webapp/index.jsp
@@ -1,5 +1,5 @@
 <%--
- Copyright (c) 2000, 2009 IBM Corporation and others.
+ Copyright (c) 2000, 2010 IBM Corporation and others.
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
@@ -23,7 +23,7 @@
 		TocData tData = new TocData(application,request, response);
 %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html lang="<%=ServletResources.getString("locale", request)%>">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title><%=data.getWindowTitle()%></title>
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/WebappResources.properties b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/WebappResources.properties
index 9dd3ec4..0a12255 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/WebappResources.properties
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/WebappResources.properties
@@ -8,6 +8,12 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
+
+# The locale of this translation of the resource file, will be used as follows: <html lang = "en">
+# The resource "locale" is always translated to the name of the locale used for the other resources
+# in this file. For example locale=fr in the French translation of this file 
+locale=en
+
 browserTitle = Help - {0}
 SearchLabel=&Search:
 SearchResults=Search Results
@@ -83,7 +89,7 @@ bookmarks=Bookmarks
 
 Views=Navigation Views
 noLiveHelp=Active help is not enabled in your installation.
-noLieHelpInInfocenter=You must run help locally to perform "active help" actions.
+noLiveHelpInInfocenter=You must run help locally to perform "active help" actions.
 cookieSaveFailed=Saving scope failed.  Please reduce scope definitions.
 CookieUtil.tooManyCookiesNeeded=Too may cookies required to store data.
 cookiesRequired=This feature requires cookies to be enabled in your browser.
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/CookiesData.java b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/CookiesData.java
index 9604bc7..e51f602 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/CookiesData.java
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/CookiesData.java
@@ -41,7 +41,7 @@ public class CookiesData extends RequestData {
 		}
 		boolean isSynchToc = Platform.getPreferencesService().getBoolean
 		    (HelpBasePlugin.PLUGIN_ID, "advanced.syncDefault", false, null); //$NON-NLS-1$
-		CookieUtil.setCookieValue("synchToc", Boolean.toString(isSynchToc), response); //$NON-NLS-1$
+		CookieUtil.setCookieValue("synchToc", Boolean.toString(isSynchToc), request, response); //$NON-NLS-1$
 		return isSynchToc; 
     }
 
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/RequestScope.java b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/RequestScope.java
index 249385f..65b15e5 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/RequestScope.java
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/RequestScope.java
@@ -125,13 +125,14 @@ public class RequestScope {
 					scopeStr+=ScopeRegistry.SCOPE_AND;
 			}
 		}
-		saveScope(scopeStr, response);
+		CookieUtil.deleteObsoleteCookies(request, response);
+		saveScope(scopeStr, request, response);
 	}
 	
-	public static void saveScope(String scope, HttpServletResponse response) {
+	public static void saveScope(String scope, HttpServletRequest request, HttpServletResponse response) {
 		if (HelpSystem.isShared()) {
 			if (response != null) {	
-				CookieUtil.setCookieValue(SCOPE_COOKIE_NAME, URLCoder.compactEncode(scope), response);
+				CookieUtil.setCookieValue(SCOPE_COOKIE_NAME, URLCoder.compactEncode(scope), request, response);
 			}
 		} else {
 			InstanceScope instanceScope = new InstanceScope();
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/CookieUtil.java b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/CookieUtil.java
index 6d3a53e..45134be 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/CookieUtil.java
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/CookieUtil.java
@@ -11,6 +11,8 @@
 package org.eclipse.help.internal.webapp.servlet;
 
 import java.io.*;
+import java.util.HashSet;
+import java.util.Iterator;
 
 import javax.servlet.http.*;
 
@@ -50,23 +52,73 @@ public class CookieUtil {
 		return ret;
 	}
 	public static void setCookieValue(String name, String value,
-			HttpServletResponse response) {
+			HttpServletRequest request, HttpServletResponse response) {
 		Cookie cookie = new Cookie(name, value);
 		cookie.setMaxAge(COOKIE_LIFE);
-		cookie.setPath("/"); //$NON-NLS-1$
+		cookie.setPath(getCookiePath(request)); 
 		response.addCookie(cookie);
 		if (HelpWebappPlugin.DEBUG_WORKINGSETS) {
 			System.out
 					.println("CookieUtil.setCookieValue(" + name + ", " + value + ",...)"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		}
 	}
+	protected static String getCookiePath(HttpServletRequest request) {
+		String path = request.getContextPath() + '/';
+		return path;
+	}
 
-	public static void deleteCookie(String name, HttpServletResponse response) {
+	public static void deleteCookie(String name, HttpServletRequest request, HttpServletResponse response) {
+		deleteCookieUsingPath(name, response, getCookiePath(request));
+	}
+	
+	protected static void deleteCookieUsingPath(String name,
+			HttpServletResponse response, String cookiePath) {
 		Cookie cookie = new Cookie(name, ""); //$NON-NLS-1$
-		cookie.setPath("/"); //$NON-NLS-1$
+		cookie.setPath(cookiePath); 
 		cookie.setMaxAge(0);
 		response.addCookie(cookie);
 	}
+	
+	public static void deleteObsoleteCookies(HttpServletRequest request, HttpServletResponse response) {
+		Cookie[] cookies = request.getCookies();
+		HashSet cookiesToKeep= new HashSet();
+		HashSet cookiesToDelete = new HashSet();
+		if (cookies != null) {
+			for (int i = 0; i < cookies.length; i++) {
+				    String name = cookies[i].getName();
+				    if (isObsoleteCookie(name) || cookiesToKeep.contains(name)) {
+				    	cookiesToDelete.add(name);
+				    }
+					cookiesToKeep.add(name); {				
+				}
+			}
+
+			for (Iterator iter = cookiesToDelete.iterator(); iter.hasNext();) {
+				String name = (String) iter.next();
+				deleteCookieUsingPath(name, response, request.getContextPath() + "/advanced/"); //$NON-NLS-1$
+				deleteCookieUsingPath(name, response, "/"); //$NON-NLS-1$
+			}
+		}
+	}
+
+	/*
+	 * Is this one of the cookies that was used before Eclipse 3.6 of the 
+	 * form wset_nn
+	 */
+	private static boolean isObsoleteCookie(String name) {
+		final String WSET_PREFIX = "wset"; //$NON-NLS-1$
+		if (!name.startsWith(WSET_PREFIX)) {
+			return false;
+		}
+		for (int i = WSET_PREFIX.length(); i < name.length(); i++) {
+			char suffixChar = name.charAt(i);
+			if (suffixChar < '0' || suffixChar > '9') {
+				return false;
+			}
+		}
+		return true;
+	}
+	
 	/**
 	 * Saves string in multiple browser cookies. Cookies can store limited
 	 * length string. This method will attemt to split string among multiple
@@ -92,20 +144,20 @@ public class CookieUtil {
 			if (i == 1) {
 				setCookieValue(name + "1", //$NON-NLS-1$
 						len + "<" + data.substring(0, MAX_COOKIE_PAYLOAD), //$NON-NLS-1$
-						response);
+						request, response);
 			} else {
 				setCookieValue(name + i, data.substring(MAX_COOKIE_PAYLOAD
-						* (i - 1), MAX_COOKIE_PAYLOAD * i), response);
+						* (i - 1), MAX_COOKIE_PAYLOAD * i), request, response);
 			}
 		}
 		if (len % MAX_COOKIE_PAYLOAD > 0) {
 			if (n == 0) {
 				setCookieValue(name + "1", //$NON-NLS-1$
 						len + "<" + data.substring(0, len), //$NON-NLS-1$
-						response);
+						request, response);
 			} else {
 				setCookieValue(name + (n + 1), data.substring(
-						MAX_COOKIE_PAYLOAD * n, len), response);
+						MAX_COOKIE_PAYLOAD * n, len), request, response);
 			}
 		}
 
@@ -116,7 +168,7 @@ public class CookieUtil {
 				continue;
 			}
 			if (getCookieValue(name + i, request) != null) {
-				deleteCookie(name + i, response);
+				deleteCookie(name + i, request, response);
 			} else {
 				break;
 			}
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/EclipseConnector.java b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/EclipseConnector.java
index 1c7e05d..06dfbce 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/EclipseConnector.java
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/EclipseConnector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -121,7 +121,11 @@ public class EclipseConnector {
 			    pageNotFound = true;
 			    if (notFoundCallout != null) {
 			    	notFoundCallout.notFound(url);
-			    }				if (requiresErrorPage(lowerCaseuRL)) { 
+			    }				
+			    
+			    boolean isRTopicPath = isRTopicPath(req.getServletPath());
+			    
+			    if (requiresErrorPage(lowerCaseuRL) && !isRTopicPath) { 
 					
 			    	String errorPage;
 			    	
@@ -351,4 +355,14 @@ public class EclipseConnector {
 	public static void setNotFoundCallout(INotFoundCallout callout) {
 		notFoundCallout = callout;
 	}
-}
+	
+	public static boolean isRTopicPath(String servletPath)
+	{
+		boolean isRTopicPath=false;
+		
+		if(servletPath.equals("/rtopic")) //$NON-NLS-1$
+			isRTopicPath = true;
+		
+		return isRTopicPath;
+	}
+}
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/InfocenterWorkingSetManager.java b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/InfocenterWorkingSetManager.java
index bdead49..a5b0ae8 100644
--- a/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/InfocenterWorkingSetManager.java
+++ b/eclipse/plugins/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/InfocenterWorkingSetManager.java
@@ -313,9 +313,8 @@ public class InfocenterWorkingSetManager implements IHelpWorkingSetManager {
 					data.append(URLCoder.compactEncode(criterionName));
 					data.append('#');
 					for (Iterator iter = criterionValues.iterator(); iter.hasNext();) {
-						String value = (String) iter.next();
-						data.append(URLCoder.compactEncode(value));
-						data.append(',');
+						String value = (String) iter.next();						
+						data.append(URLCoder.compactEncode(value+','));
 					}
 				}
 			}	
diff --git a/eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/eclipse/configuration/config.ini b/eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/configuration/config.ini
similarity index 100%
rename from eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/eclipse/configuration/config.ini
rename to eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/configuration/config.ini
diff --git a/eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/eclipse/launch.ini b/eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/launch.ini
similarity index 100%
rename from eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/eclipse/launch.ini
rename to eclipse/plugins/org.eclipse.help.webapp/web-archive/help/WEB-INF/launch.ini
diff --git a/eclipse/plugins/org.eclipse.help/plugin.properties b/eclipse/plugins/org.eclipse.help/plugin.properties
index d75ae9d..4b5bfa5 100644
--- a/eclipse/plugins/org.eclipse.help/plugin.properties
+++ b/eclipse/plugins/org.eclipse.help/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -15,3 +15,5 @@ contexts_extension_point_name = Context Help
 content_producer_extension_point_name = Help Content Producer
 index_extension_point_name = Help Index Contributions
 content_extension_point_name = Help Content Extensions
+
+criteria_provider_extension_point_name = Help Criteria Provider
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.help/plugin.xml b/eclipse/plugins/org.eclipse.help/plugin.xml
index a6bb3e2..bfd862f 100644
--- a/eclipse/plugins/org.eclipse.help/plugin.xml
+++ b/eclipse/plugins/org.eclipse.help/plugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
+<?eclipse version="3.0"?>
+<!--
     Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
@@ -18,7 +19,7 @@
    <extension-point id="index" name="%index_extension_point_name" schema="schema/index.exsd"/>
    <extension-point id="toc" name="%toc_extension_point_name" schema="schema/toc.exsd"/>
    <extension-point id="criteriaDefinition" name="%criteriaDefinition_extension_point_name" schema="schema/criteriaDefinition.exsd"/>
-   <extension-point id="criteriaProvider" name="Help Criteria Provider" schema="schema/criteriaProvider.exsd"/>
+   <extension-point id="criteriaProvider" name="%criteria_provider_extension_point_name" schema="schema/criteriaProvider.exsd"/>
    <extension
          point="org.eclipse.help.contentExtension">
       <contentExtensionProvider class="org.eclipse.help.internal.extension.ContentExtensionFileProvider"/>
diff --git a/eclipse/plugins/org.eclipse.help/schema/criteriaDefinition.exsd b/eclipse/plugins/org.eclipse.help/schema/criteriaDefinition.exsd
index 1617d87..f57f3fe 100644
--- a/eclipse/plugins/org.eclipse.help/schema/criteriaDefinition.exsd
+++ b/eclipse/plugins/org.eclipse.help/schema/criteriaDefinition.exsd
@@ -51,7 +51,7 @@
    <element name="criteriaDefinition">
       <annotation>
          <documentation>
-            an criteria contribution made by supplying an XML file
+            A criteria contribution made by supplying an XML file
          </documentation>
       </annotation>
       <complexType>
@@ -78,9 +78,9 @@
 &lt;p&gt;&lt;b&gt;The criteriaDefinition element&lt;/b&gt;
 &lt;p&gt;The criteriaDefinition element represents an instance of criteria definition. CriteriaDefinition consists of criterion, each of them corresponds to a particular id and its name.
 &lt;p&gt;&lt;b&gt;The criterion element&lt;/b&gt;
-&lt;p&gt;The criterion element represents a criterion. Each criterion may contain several criterion-value which associated with the critrion. 
+&lt;p&gt;The criterion element represents a criterion. Each criterion may contain several criterion-value which associated with the criterion. 
 &lt;p&gt;&lt;b&gt;The criterion-value element&lt;/b&gt;
-&lt;p&gt;The criterion-value element provides value to the criterion category. It also has id and name accociated with it.
+&lt;p&gt;The criterion-value element provides value to the criterion category. It also has id and name associated with it.
                </documentation>
                <appInfo>
                   <meta.attribute kind="resource"/>
@@ -172,13 +172,10 @@
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2010 IBM Corporation and others.
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Eclipse Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/epl-v10.html
-Contributors:
-IBM Corporation - initial API and implementation
+         Copyright (c) 2010 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
       </documentation>
    </annotation>
 
diff --git a/eclipse/plugins/org.eclipse.help/schema/criteriaProvider.exsd b/eclipse/plugins/org.eclipse.help/schema/criteriaProvider.exsd
index ad26c43..ea0d57f 100644
--- a/eclipse/plugins/org.eclipse.help/schema/criteriaProvider.exsd
+++ b/eclipse/plugins/org.eclipse.help/schema/criteriaProvider.exsd
@@ -6,7 +6,7 @@
          <meta.schema plugin="org.eclipse.help" id="criteriaProvider" name="Help Criteria Provider"/>
       </appInfo>
       <documentation>
-         Support for defining criteria idependent of the table of contents.
+         Support for defining criteria independent of the table of contents.
       </documentation>
    </annotation>
 
@@ -57,7 +57,7 @@
          <attribute name="class" type="string">
             <annotation>
                <documentation>
-                  
+                  A class which contains methods to define criteria values associated with a topic or table of contents.
                </documentation>
                <appInfo>
                   <meta.attribute kind="java" basedOn="org.eclipse.help.AbstractCriteriaProvider:"/>
@@ -86,14 +86,6 @@
       </documentation>
    </annotation>
 
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
 
    <annotation>
       <appInfo>
diff --git a/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/criteria/CriterionValueDefinition.java b/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/criteria/CriterionValueDefinition.java
index 0745a44..9b15b97 100644
--- a/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/criteria/CriterionValueDefinition.java
+++ b/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/criteria/CriterionValueDefinition.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.help.internal.criteria;
 
-import org.eclipse.help.ICriterionDefinition;
 import org.eclipse.help.ICriterionValueDefinition;
 import org.eclipse.help.internal.UAElement;
 import org.w3c.dom.Element;
@@ -21,7 +20,7 @@ public class CriterionValueDefinition extends UAElement implements ICriterionVal
 	public static final String ATTRIBUTE_ID = "id"; //$NON-NLS-1$
 	public static final String ATTRIBUTE_NAME = "name"; //$NON-NLS-1$
 	
-	public CriterionValueDefinition(ICriterionDefinition src) {
+	public CriterionValueDefinition(ICriterionValueDefinition src) {
 		super(NAME, src);
 		setId(src.getId());
 		setName(src.getName());
diff --git a/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/util/URLCoder.java b/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/util/URLCoder.java
index 0a2ef05..98d4b22 100644
--- a/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/util/URLCoder.java
+++ b/eclipse/plugins/org.eclipse.help/src/org/eclipse/help/internal/util/URLCoder.java
@@ -43,7 +43,7 @@ public class URLCoder {
 		StringBuffer buf = new StringBuffer(data.length);
 		for (int i = 0; i < data.length; i++) {
 			byte nextByte = data[i];
-			if (!encodeAllCharacters && isAlphaNumericSlashOrDot(nextByte)) {
+			if (!encodeAllCharacters && isAlphaNumericOrDot(nextByte)) {
 				buf.append((char)nextByte);
 			} else {
 				buf.append('%');
@@ -54,9 +54,9 @@ public class URLCoder {
 		return buf.toString();
 	}
 	
-	private static boolean isAlphaNumericSlashOrDot(byte b) {
-		return (b >= '0' && b <= '9') || (b >= 'a' && b < 'z') || ( b >= 'A' && b <= 'Z') 
-		   || b == '.' || b == '/';
+	private static boolean isAlphaNumericOrDot(byte b) {
+		return (b >= '0' && b <= '9') || (b >= 'a' && b <= 'z') || ( b >= 'A' && b <= 'Z') 
+		   || b == '.';
 	}
 
 	private static byte[] urlDecode(String encodedURL) {
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.core/build_notes.html b/eclipse/plugins/org.eclipse.jdt.apt.core/build_notes.html
index f76cb39..82f3e16 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.core/build_notes.html
+++ b/eclipse/plugins/org.eclipse.jdt.apt.core/build_notes.html
@@ -12,6 +12,14 @@
 <h1>Eclipse Platform Build Notes (3.6)<br>
 JDT Annotation Processing</h1>
 
+<p>Integration Build (April 20, 2010, 11:23 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=261969">Bug 261969</a>. classElement.getAnnotation(...).value() returns null in some cases for String[] properties (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=290780">Bug 290780</a>. org.eclipse.jdt.compiler.apt does not export all its packages (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=308555">Bug 308555</a>. The ".factorypath" doesn't have a team file type registered (FIXED)<br>
+  </p>
+
 <p>Integration Build (September 21, 2009, 10:36 p.m.)</p>
   <p>Problem reports updated</p>
   <p>
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.core/design-notes.html b/eclipse/plugins/org.eclipse.jdt.apt.core/design-notes.html
index c331b92..c79e6f0 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.core/design-notes.html
+++ b/eclipse/plugins/org.eclipse.jdt.apt.core/design-notes.html
@@ -7,23 +7,23 @@
 </head>
 <body lang="EN-US">
 <h1>Overview</h1>
-Annotation processors may implement either the Java 5 com.sun.mirror.apt interfaces or the
+<p>Annotation processors may implement either the Java 5 com.sun.mirror.apt interfaces or the
 Java 6 javax.annotation.processing interfaces. The two interfaces are functionally similar but
 the details are different. Note that although the Java 5 apt tool has been deprecated by Sun,
 it is still included in the Java 6 JDK and developers continue to write processors against it.
 However, the com.sun.mirror.apt interface is considered proprietary and there are no Java
 compliance tests which validate it.
-<p>
+</p>
 
 <h1>Build Process</h1>
-The JDT system performs three kinds of build: full build, incremental build, and reconcile. When
+<p>The JDT system performs three kinds of build: full build, incremental build, and reconcile. When
 a single file is edited and saved (if autobuild is enabled) or manually built, an incremental
 build is performed: only the affected files will be rebuilt. This will include the edited file
 as well as any other files with relevant dependencies on the edited file. After a clean, or
 when incremental build detects an overwhelming number of files needing to be rebuilt, a full
 build will be performed; in this case every file in the project will be rebuilt. During an
 editing session, prior to saving, a file will frequently be reconciled, in order to identify
-errors while typing. Reconcile operates on only a single file at a time.
+errors while typing. Reconcile operates on only a single file at a time.</p>
 <p>
 Java 5 and Java 6 processors are handled by different code and interact with the Eclipse Java
 compiler in different ways and at different points in the build cycle. This is partly for
@@ -32,23 +32,23 @@ command-line Eclipse compiler (ecj.jar). The Java 5 annotation processing code i
 the JDT's public API; the Java 6 code uses internal interfaces within the compiler, which was
 necessary because the public APIs use platform classes not available in the command-line package.
 A pleasant consequence is that the Java 6 annotation processing code is somewhat easier
-to understand.
+to understand.</p>
 <p>
 The main challenge of introducing APT into Eclipse is that annotation processors can contribute
 additional Java types, which must in turn be compiled; this compilation can affect previously
 compiled types, because a formerly unresolved reference can be resolved. Because of this, it
 is necessary for annotation processing to be implemented within the compile process, rather than
-as a later build step.
+as a later build step.</p>
 <p>
 TODO: overview of build process, i.e., when Java 5 processors are called relative to Java 6 processors
-
+</p>
 <h2>Java 5 Build-time Processing</h2>
 <p>
 The invocation path for Java 5 processors is quite complex, in part because when Java 5 processing
 was implemented it was not possible to integrate it closely with the compiler, and in part for
-silly historical reasons that serve no current purpose. It is ripe for refactoring.
+silly historical reasons that serve no current purpose. It is ripe for refactoring.</p>
 <p>
-A typical call stack when a Java 5 processor is invoked looks like this:
+A typical call stack when a Java 5 processor is invoked looks like this:</p>
 <pre>
 	SomeProcessor.process() line: xxx	
 	APTDispatchRunnable.dispatchToFileBasedProcessor(AbstractCompilationEnv, boolean, boolean) line: 628	
@@ -66,7 +66,7 @@ A typical call stack when a Java 5 processor is invoked looks like this:
 	APTDispatchRunnable.build() line: 271	
 	APTDispatchRunnable.run(IProgressMonitor) line: 217	
 	Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 1800	
-	APTDispatchRunnable.runAPTDuringBuild(BuildContext[], BuildContext[], Map<IFile,CategorizedProblem[]>, AptProject, Map<AnnotationProcessorFactory,Attributes>, Set<AnnotationProcessorFactory>, boolean) line: 142	
+	APTDispatchRunnable.runAPTDuringBuild(BuildContext[], BuildContext[], Map&lt;IFile,CategorizedProblem[]&gt;, AptProject, Map&lt;AnnotationProcessorFactory,Attributes&gt;, Set&lt;AnnotationProcessorFactory&gt;, boolean) line: 142	
 	AptCompilationParticipant.processAnnotations(BuildContext[]) line: 193	
 	IncrementalImageBuilder(AbstractImageBuilder).processAnnotations(CompilationParticipantResult[]) line: 627	
 	IncrementalImageBuilder(AbstractImageBuilder).compile(SourceFile[]) line: 338	
@@ -79,54 +79,53 @@ A typical call stack when a Java 5 processor is invoked looks like this:
 Java 5 processors are invoked via the CompilationParticipant interface. The Java compiler calls
 AptCompilationParticipant.processAnnotations(), passing in a list of all the files being built.
 Note that the compiler may break large projects into multiple groups of files, resulting in
-multiple calls to processAnnotations(). Files are marked with whether or not they contain annotations.
+multiple calls to processAnnotations(). Files are marked with whether or not they contain annotations.</p>
 <p>
 Within processAnnotations(), annotation processor factories are discovered from the processor
 factory path (and cached for subsequent invocations); factories and files are then passed in to
 APTDispatchRunnable.runAPTDuringBuild(). This in turn stores the information in a new instance of
-APTDispatchRunnable, and invokes its run() method within a workspace.run() operation.
+APTDispatchRunnable, and invokes its run() method within a workspace.run() operation.</p>
 <p>
 The run() method invokes BuildEnv.newBuildEnv(), passing in the AptDispatchRunnable as a callback.
 The newBuildEnv() method creates a BuildEnv, gets compilation units for each of the files being
 compiled, and then requests ASTs for each of the files. The parser is passed an ASTRequestor
 callback that is implemented by an inner class of the BuildEnv; in this way, when the ASTs are
 ready for consumption, APTDispatchRunnable.build(BuildEnv) is ultimately called, within the
-ASTRequestor callback. 
+ASTRequestor callback.</p>
 <p>
 Finally, within build(), processors are selected on the basis of the
 annotations they support, and each processor's process() method is called on each appropriate file,
 configuring the BuildEnv before each process() invocation so that it will provide the correct data.
 The details of this vary depending on whether the processor is normal (file-based) or is marked
-as requiring batch mode.
-<p>
+as requiring batch mode.</p>
 <h3>Batch-mode Processors</h3>
-Processors can be marked in the Advanced Factory Path Options dialog as requiring batch mode.
+<p>Processors can be marked in the Advanced Factory Path Options dialog as requiring batch mode.
 If any of the processors on the project's factory path require batch mode, 
 AptDispatchRunnable.build(BuildEnv) calls runAPTInMixedMode(); if none of the processors
 requires batch mode, runAPTInFileBasedMode() is called instead. The chief difference is that
 batch-mode processors are only run during a full build, and that the batch-mode implementation of
 AnnotationProcessorEnvironment.getTypeDeclarations() returns all the compilation units in the
-build, whereas the normal implementation returns only a single compilation unit at a time.
+build, whereas the normal implementation returns only a single compilation unit at a time.</p>
 <p>
 Additionally, a separate classloader is used to load batch-mode processors, and it is
 discarded after each build; thus the classes are reloaded for each build, and static variables
 are reinitialized. This is important because some processors written with command-line
 (non-incremental) compilation in mind store dynamic state in static variables and thus cannot
 be invoked multiple times.
-<p>
+</p>
 <h3>File-mode Processors</h3>
-Most processors are designed (or at least should be designed) to support incremental compilation,
+<p>Most processors are designed (or at least should be designed) to support incremental compilation,
 meaning that within the AnnotationProcessor.process() invocation, if the processor calls
 AnnotationProcessorEnvironment.getTypeDeclarations(), it will only retrieve a single type at a
 time; the process() method will be called repeatedly during the course of a build so that all
 files are eventually processed.
-
+</p>
 <h2>Java 6 Build-time Processing</h2>
 <p>
 The invocation process for Java 6 processors is more straightforward. A typical call stack looks
-like this:
+like this:</p>
 <pre>
-	ModelTesterProc.process(Set<TypeElement>, RoundEnvironment) line: 107	
+	ModelTesterProc.process(Set&lt;TypeElement&gt;, RoundEnvironment) line: 107	
 	RoundDispatcher.handleProcessor(ProcessorInfo) line: 139	
 	RoundDispatcher.round() line: 121	
 	IdeAnnotationProcessorManager(BaseAnnotationProcessorManager).processAnnotations(CompilationUnitDeclaration[], ReferenceBinding[], boolean) line: 159	
@@ -146,7 +145,7 @@ Note that the processing is performed by an IdeAnnotationProcessorManager; this
 from the BatchAnnotationProcessorManager, which would be used if processing was invoked from a
 command line (ecj.jar) compilation. Command-line compilation with ecj.jar uses the same typesystem
 implementation as IDE compilation, but somewhat different Messager and Filer implementations.
-
+</p>
 <h2>Reconcile-time Processing</h2>
 <p>
 Reconcile-time processing is only supported for Java 5 processors. This is chiefly because, after 
@@ -157,11 +156,11 @@ painfully and confusingly slow. Thus when the Java 6 processing implementation w
 decided to not support reconcile-time processing. Eclipse's effectiveness as an IDE depends on 
 reconcile being an extremely fast operation. In hindsight, edit-time processing should have been 
 limited to reporting errors, and should have been implemented as a background validation task 
-rather than within the reconcile step.
+rather than within the reconcile step.</p>
 <p>
-TODO: describe practical differences between reconcile and build.
+TODO: describe practical differences between reconcile and build.</p>
 <p>
-The stack trace of a typical reconcile-time invocation looks like this:
+The stack trace of a typical reconcile-time invocation looks like this:</p>
 <pre>
 	SomeProcessor.process() line: xxx	
 	APTDispatchRunnable.dispatchToFileBasedProcessor(AbstractCompilationEnv, boolean, boolean) line: 628	
@@ -175,7 +174,7 @@ The stack trace of a typical reconcile-time invocation looks like this:
 	ReconcileEnv.openPipeline() line: 108	
 	AbstractCompilationEnv.newReconcileEnv(ReconcileContext, AbstractCompilationEnv$EnvCallback) line: 97	
 	APTDispatchRunnable.reconcile(ReconcileContext, IJavaProject) line: 211	
-	APTDispatchRunnable.runAPTDuringReconcile(ReconcileContext, AptProject, Map<AnnotationProcessorFactory,Attributes>) line: 159	
+	APTDispatchRunnable.runAPTDuringReconcile(ReconcileContext, AptProject, Map&lt;AnnotationProcessorFactory,Attributes&gt;) line: 159	
 	AptCompilationParticipant.reconcile(ReconcileContext) line: 223	
 	ReconcileWorkingCopyOperation$1.run() line: 257	
 	SafeRunner.run(ISafeRunnable) line: 42	
@@ -185,11 +184,11 @@ The stack trace of a typical reconcile-time invocation looks like this:
 	ReconcileWorkingCopyOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 788	
 	CompilationUnit.reconcile(int, int, WorkingCopyOwner, IProgressMonitor) line: 1242	
 	JavaReconcilingStrategy.reconcile(ICompilationUnit, boolean) line: 126	
-	[higher calls omitted for brevity]	
+	[higher calls omitted for brevity]
 </pre>
 
 <h1>Processor Callbacks</h1>
-When annotation processors are invoked, they can in turn call back into the compiler through various
+<p>When annotation processors are invoked, they can in turn call back into the compiler through various
 interfaces in order to generate new files and report errors. The interfaces are naturally not the same as
 those used within the JDT compiler, so wrappers and proxies are employed to glue the different systems
 together. The most significant difference in systems is that, in both the Java 5 and Java 6 processor
@@ -197,32 +196,32 @@ interfaces, the typesystem is separated into Type and Element hierarchies, in wh
 represents a particular reification of a type while an Element represents a declaration in code. The
 distinction is easiest to understand in the context of generics: for example, the following code sample
 contains declarations of classes Lister and Test, which contain declarations of method get() and fields
-'strings' and 'numbers' respectively. The type of the return of get() is List<T>, the type of strings is
-Lister<String>, and the type of numbers is Lister<Number>. Note that the single declaration of Lister<T>
+'strings' and 'numbers' respectively. The type of the return of get() is List&lt;T&gt;, the type of strings is
+Lister&lt;String&gt;, and the type of numbers is Lister&lt;Number&gt;. Note that the single declaration of Lister&lt;T&gt;
 was able to generate multiple Types.
-
+</p>
 <pre>
   import java.util.List;
-  class Lister<T> {
-    List<T> get() { ... }
+  class Lister&lt;T&gt; {
+    List&lt;T&gt; get() { ... }
   }
   class Test {
-    Lister<String> strings;
-    Lister<Number> numbers;
+    Lister&lt;String&gt; strings;
+    Lister&lt;Number&gt; numbers;
   }
 </pre>
 
 <h2>Java 5 Type System</h2>
-TODO
+<p>TODO</p>
 
 <h2>Java 5 Filer and Messager</h2>
-TODO
+<p>TODO</p>
 
 <h2>Java 6 Type System</h2>
-TODO
+<p>TODO</p>
 
 <h2>Java 6 Filer and Messager</h2>
-TODO
+<p>TODO</p>
 
 </body>
 </html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.core/plugin.xml b/eclipse/plugins/org.eclipse.jdt.apt.core/plugin.xml
index 041aeb6..fc4d910 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.apt.core/plugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
 
     
@@ -13,6 +24,14 @@
 	schema="schema/annotationProcessorFactory.exsd"/>
 
 <!-- =================================================================================== -->
+<!-- Extension Point: .factorypath File Type                                             -->
+<!-- =================================================================================== -->
+
+<extension point="org.eclipse.team.core.fileTypes">
+    <fileTypes extension="factorypath" type="text"/>
+</extension>
+
+<!-- =================================================================================== -->
 <!-- Extension: Compilation Participant                                                  -->
 <!-- =================================================================================== -->
 <extension
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/exportplugin.xml b/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/exportplugin.xml
index c28cdc9..2e91faf 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/exportplugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/exportplugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <!-- 
  Build script to create the apt.core plugin. 
  This script assumes that the classes have already been compiled,
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core/plugin.xml b/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core/plugin.xml
index 84942a7..59efc9e 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core/plugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
    <extension
          point="org.eclipse.jdt.core.annotationProcessorManager">
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.ui/plugin.xml b/eclipse/plugins/org.eclipse.jdt.apt.ui/plugin.xml
index bd7907d..f3f10e4 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.apt.ui/plugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
 
 <!-- =================================================================================== -->
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.ui/scripts/exportplugin.xml b/eclipse/plugins/org.eclipse.jdt.apt.ui/scripts/exportplugin.xml
index 4db455a..7a066a1 100644
--- a/eclipse/plugins/org.eclipse.jdt.apt.ui/scripts/exportplugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.apt.ui/scripts/exportplugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <!-- 
  Build script to create the apt.ui plugin. 
  This script assumes that the classes have already been compiled,
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.apt/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.jdt.compiler.apt/META-INF/MANIFEST.MF
index b8721d4..e9d5a1a 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.apt/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.apt/META-INF/MANIFEST.MF
@@ -9,5 +9,6 @@ Fragment-Host: org.eclipse.jdt.core;bundle-version="[3.5.0,4.0.0)"
 Bundle-Localization: compiler_apt_fragment
 Export-Package: org.eclipse.jdt.internal.compiler.apt.dispatch;x-friends:="org.eclipse.jdt.apt.pluggable.core",
  org.eclipse.jdt.internal.compiler.apt.model;x-friends:="org.eclipse.jdt.apt.pluggable.core",
- org.eclipse.jdt.internal.compiler.apt.util;x-friends:="org.eclipse.jdt.apt.pluggable.core"
+ org.eclipse.jdt.internal.compiler.apt.util;x-friends:="org.eclipse.jdt.apt.pluggable.core",
+ org.eclipse.jdt.internal.compiler.lookup;x-friends:="org.eclipse.jdt.apt.pluggable.core"
 Import-Package: org.eclipse.jdt.internal.compiler.tool;resolution:=optional
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.apt/customBuildCallbacks.xml b/eclipse/plugins/org.eclipse.jdt.compiler.apt/customBuildCallbacks.xml
index 7f5509c..0efee97 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.apt/customBuildCallbacks.xml
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.apt/customBuildCallbacks.xml
@@ -1,4 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <!-- ===================================================================== -->
 <!-- Custom targets called from a project's generated build.xml            -->
 <!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMirrorImpl.java b/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMirrorImpl.java
index ca4509a..6a38940 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMirrorImpl.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMirrorImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -352,12 +352,21 @@ public class AnnotationMirrorImpl implements AnnotationMirror, InvocationHandler
 	private Object convertJDTArrayToReflectionArray(Object jdtValue, TypeBinding jdtType, Class<?> expectedType)
 	{
 		assert null != expectedType && expectedType.isArray();
-		if (!jdtType.isArrayType() || !(jdtValue instanceof Object[])) {
-			// TODO: wrap solo element into one-length array
+		if (!jdtType.isArrayType()) {
+			// the compiler says that the type binding isn't an array type; this probably means
+			// that there's some sort of syntax error.
 			return null;
 		}
+		Object[] jdtArray;
+		// See bug 261969: it's legal to pass a solo element for an array-typed value
+		if (jdtValue != null && !(jdtValue instanceof Object[])) {
+			// Create an array of the expected type
+			jdtArray = (Object[]) Array.newInstance(jdtValue.getClass(), 1);
+			jdtArray[0] = jdtValue;
+		} else {
+			jdtArray = (Object[])jdtValue;
+		}
 		TypeBinding jdtLeafType = jdtType.leafComponentType();
-		Object[] jdtArray = (Object[])jdtValue;
 		Class<?> expectedLeafType = expectedType.getComponentType();
         final int length = jdtArray.length;
         final Object returnArray = Array.newInstance(expectedLeafType, length);
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java b/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
index 0a757e2..1aacecf 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -147,25 +147,19 @@ public class EclipseFileManager implements StandardJavaFileManager {
 			if (File.separatorChar == '/') {
 				if (!path.endsWith(normalizedPackageName)) return;
 			} else if (!path.endsWith(normalizedPackageName.replace('/', File.separatorChar))) return;
-   			File[] files = currentFile.listFiles();
-   			if (files != null) {
-   				// this was a directory
-   				for (File f : files) {
-   					if (f.isDirectory() && recurse) {
-   						collectAllMatchingFiles(file, normalizedPackageName + '/' + f.getName(), kinds, recurse, collector);
-   					} else {
-   						final Kind kind = getKind(f);
-   						if (kinds.contains(kind)) {
-   							collector.add(new EclipseFileObject(normalizedPackageName + currentFile.getName(), currentFile.toURI(), kind, this.charset));
-   						}
-   					}
-   				}
-   			}
-			// currentFile is not a directory
-			// check if it matches the criteria
-			final Kind kind = getKind(file);
-			if (kinds.contains(kind)) {
-				collector.add(new EclipseFileObject(normalizedPackageName + currentFile.getName(), currentFile.toURI(), kind, this.charset));
+			File[] files = currentFile.listFiles();
+			if (files != null) {
+				// this was a directory
+				for (File f : files) {
+					if (f.isDirectory() && recurse) {
+						collectAllMatchingFiles(file, normalizedPackageName + '/' + f.getName(), kinds, recurse, collector);
+					} else {
+						final Kind kind = getKind(f);
+						if (kinds.contains(kind)) {
+							collector.add(new EclipseFileObject(normalizedPackageName + f.getName(), f.toURI(), kind, this.charset));
+						}
+					}
+				}
 			}
 		} else {
 			Archive archive = this.getArchive(file);
@@ -180,10 +174,10 @@ public class EclipseFileManager implements StandardJavaFileManager {
 						ArrayList<String> types = archive.getTypes(packageName);
 						if (types != null) {
 							for (String typeName : types) {
-		   						final Kind kind = getKind(getExtension(typeName));
-		   						if (kinds.contains(kind)) {
-		   							collector.add(archive.getArchiveFileObject(packageName + typeName, this.charset));
-		   						}
+								final Kind kind = getKind(getExtension(typeName));
+								if (kinds.contains(kind)) {
+									collector.add(archive.getArchiveFileObject(packageName + typeName, this.charset));
+								}
 							}
 						}
 					}
@@ -192,10 +186,10 @@ public class EclipseFileManager implements StandardJavaFileManager {
 				ArrayList<String> types = archive.getTypes(key);
 				if (types != null) {
 					for (String typeName : types) {
-   						final Kind kind = getKind(typeName);
-   						if (kinds.contains(kind)) {
-   							collector.add(archive.getArchiveFileObject(normalizedPackageName + typeName, this.charset));
-   						}
+						final Kind kind = getKind(typeName);
+						if (kinds.contains(kind)) {
+							collector.add(archive.getArchiveFileObject(normalizedPackageName + typeName, this.charset));
+						}
 					}
 				}
 			}
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java
index ad57877..52ace6f 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompilerImpl.java b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompilerImpl.java
index 92b26ed..ef0322b 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompilerImpl.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompilerImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java
index 9d9eb57..a9a83da 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/Options.java b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/Options.java
index a3ed71b..c1cf40b 100644
--- a/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/Options.java
+++ b/eclipse/plugins/org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/Options.java
@@ -85,6 +85,7 @@ public final class Options {
 		Options.ONE_ARGUMENT_OPTIONS.add("-target");//$NON-NLS-1$
 		Options.ONE_ARGUMENT_OPTIONS.add("-processor");//$NON-NLS-1$
 		Options.ONE_ARGUMENT_OPTIONS.add("-classNames");//$NON-NLS-1$
+		Options.ONE_ARGUMENT_OPTIONS.add("-properties");//$NON-NLS-1$
 	
 	}
 	public static int processOptionsFileManager(String option) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.api.tools.prefs b/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.api.tools.prefs
index c9c5910..6f7536a 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.api.tools.prefs
+++ b/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,10 +1,12 @@
-#Mon Nov 24 17:11:53 CET 2008
+#Fri May 21 10:24:07 EDT 2010
 ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
 ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
 API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
 API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
 CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
 CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
@@ -79,6 +81,8 @@ TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
 TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
 TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
 TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
 eclipse.preferences.version=1
 incompatible_api_component_version=Error
 incompatible_api_component_version_include_major_without_breaking_change=Disabled
@@ -86,3 +90,5 @@ incompatible_api_component_version_include_minor_without_api_change=Disabled
 invalid_since_tag_version=Error
 malformed_since_tag=Error
 missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.prefs b/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.prefs
index e7df45d..35bb407 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.prefs
+++ b/eclipse/plugins/org.eclipse.jdt.core/.settings/org.eclipse.pde.prefs
@@ -1,16 +1,35 @@
-#Thu Nov 01 22:46:18 EDT 2007
+#Fri May 21 10:24:08 EDT 2010
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
 compilers.incompatible-environment=1
 compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=2
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=2
+compilers.p.build.source.library=2
+compilers.p.build.src.includes=1
 compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
 compilers.p.missing-bundle-classpath-entries=2
 compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
 compilers.p.no-required-att=0
 compilers.p.not-externalized-att=2
 compilers.p.unknown-attribute=1
 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.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/eclipse/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java b/eclipse/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java
index 2e6b4b8..44a8dac 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -107,63 +107,63 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 		 */
 		cmd.createArgument().setValue("-noExit"); //$NON-NLS-1$
 
-        if (this.bootclasspath != null) {
+		if (this.bootclasspath != null) {
 			cmd.createArgument().setValue("-bootclasspath"); //$NON-NLS-1$
-        	if (this.bootclasspath.size() != 0) {
-    			/*
-    			 * Set the bootclasspath for the Eclipse compiler.
-    			 */
-    			cmd.createArgument().setPath(this.bootclasspath);
-        	} else {
-    			cmd.createArgument().setValue(Util.EMPTY_STRING);
-        	}
-        }
-
-        Path classpath = new Path(this.project);
-
-       /*
-         * Eclipse compiler doesn't support -extdirs.
-         * It is emulated using the classpath. We add extdirs entries after the
-         * bootclasspath.
-         */
-        if (this.extdirs != null) {
+			if (this.bootclasspath.size() != 0) {
+				/*
+				 * Set the bootclasspath for the Eclipse compiler.
+				 */
+				cmd.createArgument().setPath(this.bootclasspath);
+			} else {
+				cmd.createArgument().setValue(Util.EMPTY_STRING);
+			}
+		}
+
+		Path classpath = new Path(this.project);
+
+		/*
+		 * Eclipse compiler doesn't support -extdirs.
+		 * It is emulated using the classpath. We add extdirs entries after the
+		 * bootclasspath.
+		 */
+		if (this.extdirs != null) {
 			cmd.createArgument().setValue("-extdirs"); //$NON-NLS-1$
 			cmd.createArgument().setPath(this.extdirs);
-        }
+		}
 
 		/*
 		 * The java runtime is already handled, so we simply want to retrieve the
 		 * ant runtime and the compile classpath.
 		 */
-        classpath.append(getCompileClasspath());
-
-        // For -sourcepath, use the "sourcepath" value if present.
-        // Otherwise default to the "srcdir" value.
-        Path sourcepath = null;
-
-        // retrieve the method getSourcepath() using reflect
-        // This is done to improve the compatibility to ant 1.5
-        Method getSourcepathMethod = null;
-        try {
-	        getSourcepathMethod = javacClass.getMethod("getSourcepath", null); //$NON-NLS-1$
-        } catch(NoSuchMethodException e) {
-        	// if not found, then we cannot use this method (ant 1.5)
-        }
-        Path compileSourcePath = null;
-        if (getSourcepathMethod != null) {
-	 		try {
+		classpath.append(getCompileClasspath());
+
+		// For -sourcepath, use the "sourcepath" value if present.
+		// Otherwise default to the "srcdir" value.
+		Path sourcepath = null;
+
+		// retrieve the method getSourcepath() using reflect
+		// This is done to improve the compatibility to ant 1.5
+		Method getSourcepathMethod = null;
+		try {
+			getSourcepathMethod = javacClass.getMethod("getSourcepath", null); //$NON-NLS-1$
+		} catch(NoSuchMethodException e) {
+			// if not found, then we cannot use this method (ant 1.5)
+		}
+		Path compileSourcePath = null;
+		if (getSourcepathMethod != null) {
+			try {
 				compileSourcePath = (Path) getSourcepathMethod.invoke(this.attributes, null);
 			} catch (IllegalAccessException e) {
 				// should never happen
 			} catch (InvocationTargetException e) {
 				// should never happen
 			}
-        }
-        if (compileSourcePath != null) {
-            sourcepath = compileSourcePath;
-        } else {
-            sourcepath = this.src;
-        }
+		}
+		if (compileSourcePath != null) {
+			sourcepath = compileSourcePath;
+		} else {
+			sourcepath = this.src;
+		}
 		classpath.append(sourcepath);
 		/*
 		 * Set the classpath for the Eclipse compiler.
@@ -171,38 +171,38 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 		cmd.createArgument().setValue("-classpath"); //$NON-NLS-1$
 		createClasspathArgument(cmd, classpath);
 
-        final String javaVersion = JavaEnvUtils.getJavaVersion();
+		final String javaVersion = JavaEnvUtils.getJavaVersion();
 		String memoryParameterPrefix = javaVersion.equals(JavaEnvUtils.JAVA_1_1) ? "-J-" : "-J-X";//$NON-NLS-1$//$NON-NLS-2$
-        if (this.memoryInitialSize != null) {
-            if (!this.attributes.isForkedJavac()) {
-                this.attributes.log(AntAdapterMessages.getString("ant.jdtadapter.info.ignoringMemoryInitialSize"), Project.MSG_WARN); //$NON-NLS-1$
-            } else {
-                cmd.createArgument().setValue(memoryParameterPrefix
-                                              + "ms" + this.memoryInitialSize); //$NON-NLS-1$
-            }
-        }
-
-        if (this.memoryMaximumSize != null) {
-            if (!this.attributes.isForkedJavac()) {
-                this.attributes.log(AntAdapterMessages.getString("ant.jdtadapter.info.ignoringMemoryMaximumSize"), Project.MSG_WARN); //$NON-NLS-1$
-            } else {
-                cmd.createArgument().setValue(memoryParameterPrefix
-                                              + "mx" + this.memoryMaximumSize); //$NON-NLS-1$
-            }
-        }
-
-        if (this.debug) {
-	       // retrieve the method getSourcepath() using reflect
-	        // This is done to improve the compatibility to ant 1.5
-	        Method getDebugLevelMethod = null;
-	        try {
-		        getDebugLevelMethod = javacClass.getMethod("getDebugLevel", null); //$NON-NLS-1$
-	        } catch(NoSuchMethodException e) {
-	        	// if not found, then we cannot use this method (ant 1.5)
-	        	// debug level is only available with ant 1.5.x
-	        }
-     	    String debugLevel = null;
-	        if (getDebugLevelMethod != null) {
+		if (this.memoryInitialSize != null) {
+			if (!this.attributes.isForkedJavac()) {
+				this.attributes.log(AntAdapterMessages.getString("ant.jdtadapter.info.ignoringMemoryInitialSize"), Project.MSG_WARN); //$NON-NLS-1$
+			} else {
+				cmd.createArgument().setValue(memoryParameterPrefix
+						+ "ms" + this.memoryInitialSize); //$NON-NLS-1$
+			}
+		}
+
+		if (this.memoryMaximumSize != null) {
+			if (!this.attributes.isForkedJavac()) {
+				this.attributes.log(AntAdapterMessages.getString("ant.jdtadapter.info.ignoringMemoryMaximumSize"), Project.MSG_WARN); //$NON-NLS-1$
+			} else {
+				cmd.createArgument().setValue(memoryParameterPrefix
+						+ "mx" + this.memoryMaximumSize); //$NON-NLS-1$
+			}
+		}
+
+		if (this.debug) {
+			// retrieve the method getSourcepath() using reflect
+			// This is done to improve the compatibility to ant 1.5
+			Method getDebugLevelMethod = null;
+			try {
+				getDebugLevelMethod = javacClass.getMethod("getDebugLevel", null); //$NON-NLS-1$
+			} catch(NoSuchMethodException e) {
+				// if not found, then we cannot use this method (ant 1.5)
+				// debug level is only available with ant 1.5.x
+			}
+			String debugLevel = null;
+			if (getDebugLevelMethod != null) {
 				try {
 					debugLevel = (String) getDebugLevelMethod.invoke(this.attributes, null);
 				} catch (IllegalAccessException e) {
@@ -210,7 +210,7 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 				} catch (InvocationTargetException e) {
 					// should never happen
 				}
-        	}
+			}
 			if (debugLevel != null) {
 				this.customDefaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.DO_NOT_GENERATE);
 				this.customDefaultOptions.put(CompilerOptions.OPTION_LineNumberAttribute, CompilerOptions.DO_NOT_GENERATE);
@@ -230,18 +230,18 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 				this.customDefaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE);
 				this.customDefaultOptions.put(CompilerOptions.OPTION_LineNumberAttribute, CompilerOptions.GENERATE);
 				this.customDefaultOptions.put(CompilerOptions.OPTION_SourceFileAttribute , CompilerOptions.GENERATE);
-            }
-        } else {
+			}
+		} else {
 			this.customDefaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.DO_NOT_GENERATE);
 			this.customDefaultOptions.put(CompilerOptions.OPTION_LineNumberAttribute, CompilerOptions.DO_NOT_GENERATE);
 			this.customDefaultOptions.put(CompilerOptions.OPTION_SourceFileAttribute , CompilerOptions.DO_NOT_GENERATE);
-        }
+		}
 
 		/*
 		 * Handle the nowarn option. If none, then we generate all warnings.
 		 */
 		if (this.attributes.getNowarn()) {
-	        // disable all warnings
+			// disable all warnings
 			Object[] entries = this.customDefaultOptions.entrySet().toArray();
 			for (int i = 0, max = entries.length; i < max; i++) {
 				Map.Entry entry = (Map.Entry) entries[i];
@@ -269,7 +269,7 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 			this.customDefaultOptions.put(CompilerOptions.OPTION_ReportDeprecationWhenOverridingDeprecatedMethod, CompilerOptions.DISABLED);
 		}
 
-	   	/*
+		/*
 		 * destDir option.
 		 */
 		if (this.destDir != null) {
@@ -302,20 +302,12 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 		 * source option
 		 */
 		String source = this.attributes.getSource();
-        if (source != null) {
+		if (source != null) {
 			this.customDefaultOptions.put(CompilerOptions.OPTION_Source, source);
-        }
-
-		/*
-		 * encoding option
-		 */
-        if (this.encoding != null) {
-            cmd.createArgument().setValue("-encoding"); //$NON-NLS-1$
-            cmd.createArgument().setValue(this.encoding);
-        }
+		}
 
 		if (compilerArgs != null) {
-	        /*
+			/*
 			 * Add extra argument on the command line
 			 */
 			final int length = compilerArgs.length;
@@ -325,17 +317,26 @@ public class JDTCompilerAdapter extends DefaultCompilerAdapter {
 					if (this.logFileName == null && "-log".equals(arg) && ((i + 1) < max)) { //$NON-NLS-1$
 						this.logFileName = compilerArgs[i + 1];
 					}
-			        cmd.createArgument().setValue(arg);
+					cmd.createArgument().setValue(arg);
 				}
 			}
-	   	}
-     	/*
+		}
+		/*
+		 * encoding option. javac task encoding property must be the last encoding on the command
+		 * line as compiler arg might also specify an encoding.
+		 */
+		if (this.encoding != null) {
+			cmd.createArgument().setValue("-encoding"); //$NON-NLS-1$
+			cmd.createArgument().setValue(this.encoding);
+		}
+
+		/*
 		 * Eclipse compiler doesn't have a -sourcepath option. This is
 		 * handled through the javac task that collects all source files in
 		 * srcdir option.
 		 */
-        logAndAddFilesToCompile(cmd);
-        return cmd;
+		logAndAddFilesToCompile(cmd);
+		return cmd;
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java b/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java
index 841122e..36df1f4 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java
@@ -15,8 +15,10 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.compiler.batch;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FilenameFilter;
@@ -36,11 +38,13 @@ import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Date;
 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.MissingResourceException;
+import java.util.Properties;
 import java.util.ResourceBundle;
 import java.util.Set;
 import java.util.StringTokenizer;
@@ -102,6 +106,7 @@ public class Main implements ProblemSeverities, SuffixConstants {
 		public static final int EMACS = 2;
 		private static final String ERROR = "ERROR"; //$NON-NLS-1$
 		private static final String ERROR_TAG = "error"; //$NON-NLS-1$
+		private static final String WARNING_TAG = "warning"; //$NON-NLS-1$
 		private static final String EXCEPTION = "exception"; //$NON-NLS-1$
 		private static final String EXTRA_PROBLEM_TAG = "extra_problem"; //$NON-NLS-1$
 		private static final String EXTRA_PROBLEMS = "extra_problems"; //$NON-NLS-1$
@@ -148,7 +153,7 @@ public class Main implements ProblemSeverities, SuffixConstants {
 		private static final String VALUE = "value"; //$NON-NLS-1$
 		private static final String WARNING = "WARNING"; //$NON-NLS-1$
 		public static final int XML = 1;
-		private static final String XML_DTD_DECLARATION = "<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.003 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_003.dtd\">"; //$NON-NLS-1$
+		private static final String XML_DTD_DECLARATION = "<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.004 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_004.dtd\">"; //$NON-NLS-1$
 		static {
 			try {
 				Class c = IProblem.class;
@@ -720,6 +725,17 @@ public class Main implements ProblemSeverities, SuffixConstants {
 			this.printlnErr(error);
 		}
 
+		/**
+		 * @param message the given message
+		 */
+		public void logWarning(String message) {
+			if ((this.tagBits & Logger.XML) != 0) {
+				this.parameters.put(Logger.MESSAGE, message);
+				printTag(Logger.WARNING_TAG, this.parameters, true, true);
+			}
+			this.printlnOut(message);
+		}
+
 		private void logProblem(CategorizedProblem problem, int localErrorCount,
 			int globalErrorCount, char[] unitSource) {
 			if ((this.tagBits & Logger.EMACS) != 0) {
@@ -1713,6 +1729,7 @@ public void configure(String[] argv) {
 	final int INSIDE_PROCESSOR_start = 18;
 	final int INSIDE_S_start = 19;
 	final int INSIDE_CLASS_NAMES = 20;
+	final int INSIDE_WARNINGS_PROPERTIES = 21;
 
 	final int DEFAULT = 0;
 	ArrayList bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
@@ -1732,7 +1749,6 @@ public void configure(String[] argv) {
 	String usageSection = null;
 	boolean printVersionRequired = false;
 
-	boolean didSpecifyDefaultEncoding = false;
 	boolean didSpecifyDeprecation = false;
 	boolean didSpecifyCompliance = false;
 	boolean didSpecifyDisabledAnnotationProcessing = false;
@@ -1741,6 +1757,8 @@ public void configure(String[] argv) {
 	String customDestinationPath = null;
 	String currentSourceDirectory = null;
 	String currentArg = Util.EMPTY_STRING;
+	
+	Set specifiedEncodings = null;
 
 	// expand the command line if necessary
 	boolean needExpansion = false;
@@ -2095,7 +2113,7 @@ public void configure(String[] argv) {
 					continue;
 				}
 				if (currentArg.equals("-inlineJSR")) { //$NON-NLS-1$
-				    mode = DEFAULT;
+					mode = DEFAULT;
 					this.options.put(
 							CompilerOptions.OPTION_InlineJsr,
 							CompilerOptions.ENABLED);
@@ -2368,6 +2386,10 @@ public void configure(String[] argv) {
 					mode = INSIDE_CLASS_NAMES;
 					continue;
 				}
+				if (currentArg.equals("-properties")) { //$NON-NLS-1$
+					mode = INSIDE_WARNINGS_PROPERTIES;
+					continue;
+				}
 				break;
 			case INSIDE_TARGET :
 				if (this.didSpecifyTarget) {
@@ -2448,9 +2470,23 @@ public void configure(String[] argv) {
 				mode = DEFAULT;
 				continue;
 			case INSIDE_DEFAULT_ENCODING :
-				if (didSpecifyDefaultEncoding) {
-					throw new IllegalArgumentException(
-						this.bind("configure.duplicateDefaultEncoding", currentArg)); //$NON-NLS-1$
+				if (specifiedEncodings != null) {
+					// check already defined encoding
+					if (!specifiedEncodings.contains(currentArg)) {
+						if (specifiedEncodings.size() > 1) {
+							this.logger.logWarning(
+									this.bind("configure.differentencodings", //$NON-NLS-1$
+									currentArg,
+									getAllEncodings(specifiedEncodings)));
+						} else {
+							this.logger.logWarning(
+									this.bind("configure.differentencoding", //$NON-NLS-1$
+									currentArg,
+									getAllEncodings(specifiedEncodings)));
+						}
+					}
+				} else {
+					specifiedEncodings = new HashSet();
 				}
 				try { // ensure encoding is supported
 					new InputStreamReader(new ByteArrayInputStream(new byte[0]), currentArg);
@@ -2458,8 +2494,8 @@ public void configure(String[] argv) {
 					throw new IllegalArgumentException(
 						this.bind("configure.unsupportedEncoding", currentArg)); //$NON-NLS-1$
 				}
+				specifiedEncodings.add(currentArg);
 				this.options.put(CompilerOptions.OPTION_Encoding, currentArg);
-				didSpecifyDefaultEncoding = true;
 				mode = DEFAULT;
 				continue;
 			case INSIDE_DESTINATION_PATH :
@@ -2544,6 +2580,10 @@ public void configure(String[] argv) {
 				}
 				mode = DEFAULT;
 				continue;
+			case INSIDE_WARNINGS_PROPERTIES :
+				initializeWarnings(currentArg);
+				mode = DEFAULT;
+				continue;
 		}
 
 		// default is input directory, if no custom destination path exists
@@ -2712,6 +2752,11 @@ public void configure(String[] argv) {
 			endorsedDirClasspaths,
 			customEncoding);
 
+	if (specifiedEncodings != null && specifiedEncodings.size() > 1) {
+		this.logger.logWarning(this.bind("configure.multipleencodings", //$NON-NLS-1$
+				(String) this.options.get(CompilerOptions.OPTION_Encoding),
+				getAllEncodings(specifiedEncodings)));
+	}
 	if (this.pendingErrors != null) {
 		for (Iterator iterator = this.pendingErrors.iterator(); iterator.hasNext(); ) {
 			String message = (String) iterator.next();
@@ -2720,6 +2765,52 @@ public void configure(String[] argv) {
 		this.pendingErrors = null;
 	}
 }
+private static String getAllEncodings(Set encodings) {
+	int size = encodings.size();
+	String[] allEncodings = new String[size];
+	encodings.toArray(allEncodings);
+	Arrays.sort(allEncodings);
+	StringBuffer buffer = new StringBuffer();
+	for (int i = 0; i < size; i++) {
+		if (i > 0) {
+			buffer.append(", "); //$NON-NLS-1$
+		}
+		buffer.append(allEncodings[i]);
+	}
+	return String.valueOf(buffer);
+}
+
+private void initializeWarnings(String propertiesFile) {
+	File file = new File(propertiesFile);
+	if (!file.exists()) {
+		throw new IllegalArgumentException(this.bind("configure.missingwarningspropertiesfile", propertiesFile)); //$NON-NLS-1$
+	}
+	BufferedInputStream stream = null;
+	Properties properties = null;
+	try {
+		stream = new BufferedInputStream(new FileInputStream(propertiesFile));
+		properties = new Properties();
+		properties.load(stream);
+	} catch(IOException e) {
+		e.printStackTrace();
+		throw new IllegalArgumentException(this.bind("configure.ioexceptionwarningspropertiesfile", propertiesFile)); //$NON-NLS-1$
+	} finally {
+		if (stream != null) {
+			try {
+				stream.close();
+			} catch(IOException e) {
+				// ignore
+			}
+		}
+	}
+	for (Iterator iterator = properties.entrySet().iterator(); iterator.hasNext(); ) {
+		Map.Entry entry = (Map.Entry) iterator.next();
+		final String key = (String) entry.getKey();
+		if (key.startsWith("org.eclipse.jdt.core.compiler.problem")) { //$NON-NLS-1$
+			this.options.put(key, entry.getValue());
+		}
+	}
+}
 protected void disableWarnings() {
 	Object[] entries = this.options.entrySet().toArray();
 	for (int i = 0, max = entries.length; i < max; i++) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties b/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
index 4a7bf98..48f7ba8 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -15,7 +15,7 @@
 #Format: compiler.name = word1 word2 word3
 compiler.name = Eclipse Compiler for Java(TM)
 #Format: compiler.version = 0.XXX[, other words (don't forget the comma if adding other words)]
-compiler.version = 0.A45, 3.6.0 M7
+compiler.version = 0.A58, 3.6.0
 compiler.copyright = Copyright IBM Corp 2000, 2010. All rights reserved.
 
 ### progress
@@ -95,6 +95,11 @@ configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible w
 configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required
 configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
 configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0}
+configure.missingwarningspropertiesfile=properties file {0} does not exist
+configure.ioexceptionwarningspropertiesfile=An IOException occurred while reading the properties file {0}
+configure.multipleencodings=Multiple encoding specified: {1}. The default encoding has been set to {0}
+configure.differentencodings=Found encoding {0}. Different encodings were specified: {1}
+configure.differentencoding=Found encoding {0}. A different encoding was specified: {1}
 
 ### requestor
 requestor.error = {0}. ERROR in {1}
@@ -153,9 +158,11 @@ misc.usage = {1} {2}\n\
 \                       created); this option can be overridden per source\n\
 \                       directory\n\
 \    -d none            generate no .class files\n\
-\    -encoding <enc>    specify custom encoding for all sources. Each\n\
+\    -encoding <enc>    specify default encoding for all source files. Each\n\
 \                       file/directory can override it when suffixed with\n\
-\                       ''[''<enc>'']'' (e.g. X.java[utf8])\n\
+\                       ''[''<enc>'']'' (e.g. X.java[utf8]).\n\
+\                       If multiple default encodings are specified, the last\n\
+\                       one will be used.\n\
 \ \n\
 \ Compliance options:\n\
 \    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
@@ -182,6 +189,12 @@ misc.usage = {1} {2}\n\
 \    -err:-<warnings separated by ,>   disable specific warnings to be\n\
 \                                      reported as errors\n\
 \ \n\
+\ Setting warning or error options using properties file:\n\
+\    -properties: <file>   set warnings/errors option based on the properties\n\
+\                          file contents. This option can be used with -nowarn,\n\
+\                          -err:.. or -warn:.. options, but the last one on the\n\
+\                          command line sets the options to be used.\n\
+\ \n\
 \ Debug options:\n\
 \    -g[:lines,vars,source] custom debug info\n\
 \    -g:lines,source  + both lines table and source debug info\n\
diff --git a/eclipse/plugins/org.eclipse.jdt.core/build.properties b/eclipse/plugins/org.eclipse.jdt.core/build.properties
index ab97e94..ff33f90 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/build.properties
+++ b/eclipse/plugins/org.eclipse.jdt.core/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -39,3 +39,4 @@ jars.compile.order=.,jdtCompilerAdapter.jar
 jars.extra.classpath=platform:/plugin/org.apache.ant/lib/ant.jar
 src.includes = about.html,\
                schema/
+generateSourceReferences=true
diff --git a/eclipse/plugins/org.eclipse.jdt.core/buildnotes_jdt-core.html b/eclipse/plugins/org.eclipse.jdt.core/buildnotes_jdt-core.html
index 7e1e4d6..bfa4eff 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/eclipse/plugins/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -40,11 +40,296 @@
 	</td>
   </tr>
 </table>
+<a name="v_A58"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6 - June 3, 2010 - 3.6.0
+<br>Project org.eclipse.jdt.core v_A58
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A58">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315568">315568</a>
+improve Javadoc of SearchPattern#createPattern(String, int, int, int)
+
+<a name="v_A57"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC4 - June 3, 2010 - 3.6.0 RC4
+<br>Project org.eclipse.jdt.core v_A57
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A57">cvs</a>).
+<h2>What's new in this drop</h2>
+<ul>
+<li>Use default disabling/enabling tags in the samples of the Javadoc comments
+of the formatter constants <code>FORMATTER_DISABLING_TAG</code> and
+<code>FORMATTER_ENABLING_TAG</code>.</li>
+<li>Fixed minor javadoc issues of <code>createStrictHierarchyScope()</code>.</li>
+</ul>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314709">314709</a>
+Clarify -encoding &lt;encoding name&gt; in jdt_api_compile.htm
+
+<a name="v_A56"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC3 - May 27, 2010 - 3.6.0 RC3
+<br>Project org.eclipse.jdt.core v_A56
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A56">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313890">313890</a>
+Migration guide to 3.6 for containers with MANIFEST-referred entries
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313965">313965</a>
+Breaking change in classpath container API
+
+<a name="v_A55"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC3 - May 25, 2010
+<br>Project org.eclipse.jdt.core v_A55
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A55">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313706">313706</a>
+Replace ie. with i.e. in jdt.core documentation
+
+<a name="v_A54"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC2 - May 20, 2010 - 3.6.0 RC2
+<br>Project org.eclipse.jdt.core v_A54
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A54">cvs</a>).
+<h2>What's new in this drop</h2>
+<ul>
+<li>
+Added a new preference to force the formatter to try to keep nested expressions on one line.
+<p>
+This new preference is controlled with the option:</p>
+<code>DefaultCodeFormatterConstants.FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED</code>
+<pre>
+/**
+ * FORMATTER / Option to wrap outer expressions in nested expressions
+ *     - option id:         "org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested"
+ *     - possible values:   { TRUE, FALSE }
+ *     - default:           TRUE
+ *
+ * This option changes the formatter behavior when nested method calls are encountered.
+ * Since 3.6, the formatter tries to wrap outermost method calls first to have a better output.
+ * For example, let's say we are using the Eclipse built-in profile with a max line width=40+space for tab policy.
+ * Then consider the following snippet:
+ *
+ * public class X01 {
+ *     void test() {
+ *         foo(bar(1, 2, 3, 4), bar(5, 6, 7, 8));
+ *     }
+ * }
+ *
+ * With this new strategy, the formatter will wrap the line earlier, between the arguments of the message call
+ * for this example, and then it will allow to keep each nested call on a single line.
+ * Hence, the output will be:
+ *
+ * public class X01 {
+ *     void test() {
+ *         foo(bar(1, 2, 3, 4),
+ *             bar(5, 6, 7, 8));
+ *     }
+ * }
+ *
+ * Important notes:
+ * 1. This new behavior is automatically activated (i.e. the default value for this preference is {@link #TRUE}).
+ *    If the backward compatibility regarding previous versions' formatter behavior (i.e. before 3.6 version) is necessary,
+ *    then the preference needs to be set to {@link #FALSE} to retrieve the previous formatter behavior.
+ * 2. The new strategy currently only applies to nested method calls, but might be extended to other nested expressions in future versions
+ * 
+ * @see #TRUE
+ * @see #FALSE
+ * @since 3.6
+ */
+</pre>
+See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313524">313524</a> for more details.
+</li>
+</ul>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313524">313524</a>
+[formatter] Add preference for improved lines wrapping in nested method calls
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313109">313109</a>
+ at SuppressWarnings on multiple locals is marked unnecessary if any local is never used
+
+<a name="v_A53"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC1 - May 12, 2010 - 3.6.0 RC1
+<br>Project org.eclipse.jdt.core v_A53
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A53">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312326">312326</a>
+IllegalArgumentException using open type dialog
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310159">310159</a>
+Hang in JavaModel.getExternalTarget(JavaModel.java:333)
+
+<a name="v_A52"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC1 - May 11, 2010
+<br>Project org.eclipse.jdt.core v_A52
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A52">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=157847">157847</a>
+NPE in WildcardBinding.computeUniqueKey during code assist
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311849">311849</a>
+[quick fix] @SuppressWarnings does not work as expected inside a for loop
+
+<a name="v_A51"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC1 - May 8, 2010
+<br>Project org.eclipse.jdt.core v_A51
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A51">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306170">306170</a>
+[perfs] Regression for FullSourceWorkspaceTypeHierarchyTests#testPerfAllTypes()
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=298844">298844</a>
+[formatter] New lines in empty method body wrong behavior
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311864">311864</a>
+[formatter] NPE with empty {@code }
+
+<a name="v_A50"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC1 - May 6, 2010
+<br>Project org.eclipse.jdt.core v_A50
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A50">cvs</a>).
+<h2>What's new in this drop</h2>
+<ul>
+<li>
+Added a new preference to switch on/off the usage of the disabling/enabling tags of the formatter.
+<p>
+This new preference is controlled with the option:</p>
+<code>DefaultCodeFormatterConstants.FORMATTER_USE_ON_OFF_TAGS</code>
+<pre>
+/**
+ * FORMATTER / Option to use the disabling and enabling tags defined respectively by the {@link #FORMATTER_DISABLING_TAG} and the {@link #FORMATTER_ENABLING_TAG} options.
+ *     - option id:         "org.eclipse.jdt.core.formatter.use_on_off_tags"
+ *     - possible values:   TRUE / FALSE
+ *     - default:           FALSE
+ * 
+ * @since 3.6
+ */
+</pre>
+See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311582">311582</a> for more details.
+</li>
+</ul>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311617">311617</a>
+[formatter] provide default tags to enable/disable formatter
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311582">311582</a>
+[formatter] Master switch to enable/disable on/off tags
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=307040">307040</a>
+Search Job with HierarchyScope on Object does not cancel
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=302295">302295</a>
+After associating source folder with rt.jar project refresh takes exceedingly long time.
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311048">311048</a>
+AbortCompilation propagated from CompilationUnitProblemFinder.process()
+
+<a name="v_A49"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6RC1 - May 4, 2010
+<br>Project org.eclipse.jdt.core v_A49
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A49">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310811">310811</a>
+[perfs] Big regression on FullSourceWorkspaceFormatterTests#testFormatDefaultBigFile()
+
+<a name="v_A48"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6M7 - April 25, 2010 - 3.6.0 M7
+<br>Project org.eclipse.jdt.core v_A48
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A48">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310330">310330</a>
+Add multiple encoding support for the batch compiler
+
+<a name="v_A47"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6M7 - April 25, 2010
+<br>Project org.eclipse.jdt.core v_A47
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A47">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309835">309835</a>
+[formatter] adds blank lines on each run
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310213">310213</a>
+AIOOBE in IndexSelector.initializeIndexLocations()
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309966">309966</a>
+IType#getKey() does not work for unresolved local ITypes
+
+<a name="v_A46"></a>
+<hr><h1>
+Eclipse Platform Build Notes<br>
+Java development tools core</h1>
+Eclipse SDK 3.6M7 - April 23, 2010
+<br>Project org.eclipse.jdt.core v_A46
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A46">cvs</a>).
+<h2>What's new in this drop</h2>
+
+<h3>Problem Reports Fixed</h3>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59891">59891</a>
+[formatter] improve lines wrapping in nested method calls
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306172">306172</a>
+[perfs] Invalid test duration for FullSourceWorkspaceTypeHierarchyTests#testPerSuperTypes()
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=267091">267091</a>
+[content assist] After 'implements' interface members are not proposed
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=261534">261534</a>
+content assist after instanceof should also work after &amp;&amp;
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=308980">308980</a>
+[content assist]An initializer inside a non-array field declaration confuses content assist
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310002">310002</a>
+ToolFactory.createScanner(..) should use workspace compliance
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=291528">291528</a>
+Synchronize project warning/error settings to build.properties
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309787">309787</a>
+Extension point &quot;org.eclipse.jdt.core.codeFormatter&quot; is ignored
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244820">244820</a>
+Content assist after 'instanceof' should also work in assignment
+<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309706">309706</a>
+[formatter] doesn't work when code has three semicolons side by side
+
 <a name="v_A45"></a>
 <hr><h1>
 Eclipse Platform Build Notes<br>
 Java development tools core</h1>
-Eclipse SDK 3.6M7 - April 20, 2010 - 3.6.0 M7
+Eclipse SDK 3.6M7 - April 20, 2010
 <br>Project org.eclipse.jdt.core v_A45
 (<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A45">cvs</a>).
 <h2>What's new in this drop</h2>
@@ -291,18 +576,18 @@ These new preferences are controlled with the options:</p>
  *    For example, in the following snippet, the formatter will be disabled after
  *    the comment:
  *     class X {
- *     &#47;&#42;
- *     &nbsp;&#42; This is a comment with a mix of disabling and enabling tags:
- *     &nbsp;&#42;  - <b>disable-formatter</b>
- *     &nbsp;&#42;  - <b>enable-formatter</b>
- *     &nbsp;&#42;  - <b>disable-formatter</b>
- *     &nbsp;&#42; The formatter will stop to format from the beginning of this comment...
- *     &nbsp;&#42;&#47;
+ *     /*
+ *     &nbsp;* This is a comment with a mix of disabling and enabling tags:
+ *     &nbsp;*  - <b>disable-formatter</b>
+ *     &nbsp;*  - <b>enable-formatter</b>
+ *     &nbsp;*  - <b>disable-formatter</b>
+ *     &nbsp;* The formatter will stop to format from the beginning of this comment...
+ *     &nbsp;*/
  *     void foo() {}
  *     void bar() {}
  *     }
  * 
- * 6. The tag cannot include newline character (i.e. &#39;&#92;n&#39;) but it can have white spaces.
+ * 6. The tag cannot include newline character (i.e. '\n') but it can have white spaces.
  *    E.g. "<b>format: off</b>" is a valid disabling tag
  *    In the future, newlines may be used to support multiple disabling tags.
  * 
@@ -365,18 +650,18 @@ These new preferences are controlled with the options:</p>
  *    the comment:
  *     // disable-formatter
  *     class X {
- *     &#47;&#42;
- *     &nbsp;&#42; This is a comment with a mix of disabling and enabling tags:
- *     &nbsp;&#42;  - <b>enable-formatter</b>
- *     &nbsp;&#42;  - <b>disable-formatter</b>
- *     &nbsp;&#42;  - <b>enable-formatter</b>
- *     &nbsp;&#42; The formatter will restart to format after this comment...
- *     &nbsp;&#42;&#47;
+ *     /*
+ *     &nbsp;* This is a comment with a mix of disabling and enabling tags:
+ *     &nbsp;*  - <b>enable-formatter</b>
+ *     &nbsp;*  - <b>disable-formatter</b>
+ *     &nbsp;*  - <b>enable-formatter</b>
+ *     &nbsp;* The formatter will restart to format after this comment...
+ *     &nbsp;*/
  *     void foo() {}
  *     void bar() {}
  *     }
  * 
- * 5. The tag cannot include newline character (i.e. &#39;&#92;n&#39;) but it can have white spaces.
+ * 5. The tag cannot include newline character (i.e. '\n') but it can have white spaces.
  *    E.g. "<b>format: on</b>" is a valid enabling tag
  *    In the future, newlines may be used to support multiple enabling tags.
  * 
@@ -503,6 +788,7 @@ See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=284789">284789</a
 </li>
 <li>New API to fix bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=246594">246594</a>. See the bug for details.
 <pre>
+org.eclipse.jdt.core.ITypeParameter
 	/**
 	 * Returns the signatures for this type parameter's bounds. The type parameter may have 
 	 * been declared as part of a type or a method. The signatures represent only the individual 
@@ -713,7 +999,7 @@ Eclipse SDK 3.6M6 - February 23, 2010
 <h2>What's new in this drop</h2>
 <ul>
 <li>
-Added a new formatter preferences to align annotation arguments (ie. element-value pairs).
+Added a new formatter preferences to align annotation arguments (i.e. element-value pairs).
 <p>
 This new preference is controlled with the option:</p>
 <code>DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_ANNOTATION</code>
@@ -745,9 +1031,10 @@ public class Test {
 </pre>
 See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282030">282030</a> for more details.
 </li>
-<li>In order to get bindings outside of the Eclipse environment, the following method has been added on the ASTParser class.
+<li>In order to get bindings outside the Eclipse environment, the following methods has been added on the ASTParser class.
 <br>See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=206391">206391</a> for details.<br>
 <pre>
+org.eclipse.jdt.core.dom.ASTParser
 	/**
 	 * Set the environment that can be used when no IJavaProject are available.
 	 * 
@@ -770,6 +1057,67 @@ See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282030">282030</a
 	 * @since 3.6
 	 */
 	public void setEnvironment(String[] classpathEntries, String[] sourcepathEntries, String[] encodings, boolean includeRunningVMBootclasspath);
+	
+	/**
+	 * Creates ASTs for a batch of compilation units. When bindings are being resolved, processing a
+	 * batch of compilation units is more efficient because much of the work involved in resolving 
+	 * bindings can be shared. 
+	 *
+	 * When bindings are being resolved, all compilation units are resolved 
+	 * using the same environment, which must be set beforehand with 
+	 * {@link #setEnvironment(String[], String[], String[], boolean) setEnvironment}.
+	 * The compilation units are processed one at a time in no specified order. 
+	 * For each of the compilation units in turn,
+	 *  - {@link ASTParser#createAST(IProgressMonitor) ASTParser.createAST} is called to parse it 
+	 *           and create a corresponding AST. The calls to {@link ASTParser#createAST(IProgressMonitor) ASTParser.createAST} 
+	 *           all employ the same settings.</li>
+	 *  - {@link FileASTRequestor#acceptAST(String, CompilationUnit) FileASTRequestor.acceptAST} is called passing
+	 *           the compilation unit path and the corresponding AST to <code>requestor</code>. The compilation unit path is the same
+	 *           path that is passed into the given <code>sourceFilePaths</code> parameter.
+	 *
+	 * Note only ASTs from the given compilation units are reported
+	 * to the requestor. If additional compilation units are required to
+	 * resolve the original ones, the corresponding ASTs are <b>not</b>
+	 * reported to the requestor.
+	 * 
+	 * Note also the following parser parameters are used, regardless of what
+	 * may have been specified:
+	 *  - The {@linkplain #setKind(int) parser kind} is <code>K_COMPILATION_UNIT</code>
+	 *  - The {@linkplain #setSourceRange(int,int) source range} is <code>(0, -1)</code>
+	 *  - The {@linkplain #setFocalPosition(int) focal position} is not set
+	 *
+	 * The <code>bindingKeys</code> parameter specifies bindings keys
+	 * ({@link IBinding#getKey()}) that are to be looked up. These keys may
+	 * be for elements either inside or outside the set of compilation
+	 * units being processed. When bindings are being resolved,
+	 * the keys and corresponding bindings (or <code>null</code> if none) are
+	 * passed to {@link FileASTRequestor#acceptBinding(String, IBinding) FileASTRequestor.acceptBinding}. Note that binding keys
+	 * for elements outside the set of compilation units being processed are looked up
+	 * after all {@link FileASTRequestor#acceptAST(String, CompilationUnit) ASTRequestor.acceptAST}
+	 * callbacks have been made.
+	 * Binding keys for elements inside the set of compilation units being processed
+	 * are looked up and reported right after the corresponding
+	 * {@link FileASTRequestor#acceptAST(String, CompilationUnit) FileASTRequestor.acceptAST} callback has been made.
+	 * No {@link FileASTRequestor#acceptBinding(String, IBinding) FileASTRequestor.acceptBinding} callbacks are made unless
+	 * bindings are being resolved.
+	 *
+	 * A successful call to this method returns all settings to their
+	 * default values so the object is ready to be reused.
+	 * 
+	 * The given <code>encodings</code> are used to properly parse the given source units. If the platform encoding is sufficient,
+	 * then the given encodings can be set to <code>null</code>.
+	 *
+	 * @param sourceFilePaths the compilation units to create ASTs for
+	 * @param encodings the given encoding for the source units
+	 * @param bindingKeys the binding keys to create bindings for
+	 * @param requestor the AST requestor that collects abstract syntax trees and bindings
+	 * @param monitor the progress monitor used to report progress and request cancellation,
+	 *   or <code>null</code> if none
+	 * @exception IllegalStateException if the settings provided
+	 * are insufficient, contradictory, or otherwise unsupported
+	 * @since 3.6
+	 */
+	 public void createASTs(String[] sourceFilePaths, String[] encodings, String[] bindingKeys, FileASTRequestor requestor, IProgressMonitor monitor)
 </pre>
 </li>
 <li>
@@ -801,7 +1149,7 @@ These new preferences are controlled respectively with the options:</p>
  * @since 3.6
  */
  </pre>
-<p>For example, when both of these options are used, the following snippet:</p>
+<p>For example, the following snippet:</p>
 <pre>
 public class X {
 	/*
@@ -818,7 +1166,7 @@ public class X {
 	}
 }
 </pre>
-formatted with this preference activated, will produce the following output:
+formatted with both the options set to FALSE, will produce the following output:
 <pre>
 public class X {
 	/* This block comment after formatting will no longer use a new line at the
@@ -889,7 +1237,7 @@ See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=150741">150741</a
 <br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270209">270209</a>
 [format] Condensed block comment formatting
 <br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=236406">236406</a>
-[formatter] The comments flags should work for all kind of snippet
+[formatter] The comments flags should work for all kinds of snippet
 <br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=294360">294360</a>
 Duplicate entries in Classpath Resolution when importing dependencies from parent project
 <br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=206391">206391</a>
@@ -1445,33 +1793,6 @@ Eclipse SDK 3.6M3 - October 25, 2009
 <br>Project org.eclipse.jdt.core v_A16
 (<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_A16">cvs</a>).
 <h2>What's new in this drop</h2>
-<ul>
-<li>New API added in <code>org.eclipse.jdt.core.JavaCore</code> in order to fix bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=263564">263564</a>:
-<pre>
-	/**
-	 * Returns an immutable map of all known configurable options with their original default values
-	 * as defined by JDT/Core.
-	 * 
-	 * The values of these options might be different from the values returned by getDefaultOptions()
-	 * as getDefaultOptions() returned the default options defined by an installation/product/configuration
-	 * (i.e. modified by the usage of a plugin_customization.ini file for example).
-	 * 
-	 * These options allow to configure the behaviour of the underlying components.
-	 * If the map is being modified, an UnsupportedOperationException> exception is thrown.
-	 * Helper constants have been defined on JavaCore for each of the option IDs
-	 * (categorized in Code assist option ID, Compiler option ID and Core option ID)
-	 * and some of their acceptable values (categorized in Option value). Some
-	 * options accept open value sets beyond the documented constant values.
-	 * Note: each release may add new options.
-	 *
-	 * @return an immutable map of all known configurable options with their original default values
-	 * as defined by JDT/Core
-	 * @since 3.6
-	 */
-	public static Map getOriginalDefaultOptions();
-</pre>
-</li>
-</ul>
 
 <h3>Problem Reports Fixed</h3>
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=293240">293240</a>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
index 24397c9..4c3fd62 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
@@ -9923,7 +9923,7 @@ public final class CompletionEngine
 		ObjectVector typesFound) {
 
 		ReferenceBinding currentType = receiverType;
-		if (typeName == null || typeName.length == 0)
+		if (typeName == null)
 			return;
 
 		if (this.assistNodeIsSuperType && !this.insideQualifiedReference && isForbidden(currentType)) return; // we're trying to find a supertype
diff --git a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
index e7a757d..5b8c437 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
@@ -47,7 +47,7 @@ public class CompletionParser extends AssistParser {
 	protected static final int K_NEXT_TYPEREF_IS_CLASS = COMPLETION_PARSER + 5; // whether the next type reference is a class
 	protected static final int K_NEXT_TYPEREF_IS_INTERFACE = COMPLETION_PARSER + 6; // whether the next type reference is an interface
 	protected static final int K_NEXT_TYPEREF_IS_EXCEPTION = COMPLETION_PARSER + 7; // whether the next type reference is an exception
-	protected static final int K_BETWEEN_NEW_AND_LEFT_BRACKET = COMPLETION_PARSER + 8; // whether we are between the keyword 'new' and the following left braket, ie. '[', '(' or '{'
+	protected static final int K_BETWEEN_NEW_AND_LEFT_BRACKET = COMPLETION_PARSER + 8; // whether we are between the keyword 'new' and the following left braket, i.e. '[', '(' or '{'
 	protected static final int K_INSIDE_THROW_STATEMENT = COMPLETION_PARSER + 9; // whether we are between the keyword 'throw' and the end of a throw statement
 	protected static final int K_INSIDE_RETURN_STATEMENT = COMPLETION_PARSER + 10; // whether we are between the keyword 'return' and the end of a return statement
 	protected static final int K_CAST_STATEMENT = COMPLETION_PARSER + 11; // whether we are between ')' and the end of a cast statement
@@ -80,6 +80,9 @@ public class CompletionParser extends AssistParser {
 	protected static final int K_CONTROL_STATEMENT_DELIMITER = COMPLETION_PARSER + 38;
 	protected static final int K_INSIDE_ASSERT_EXCEPTION = COMPLETION_PARSER + 39;
 	protected static final int K_INSIDE_FOR_CONDITIONAL = COMPLETION_PARSER + 40;
+	// added for https://bugs.eclipse.org/bugs/show_bug.cgi?id=261534
+	protected static final int K_BETWEEN_INSTANCEOF_AND_RPAREN = COMPLETION_PARSER + 41;
+
 
 	public final static char[] FAKE_TYPE_NAME = new char[]{' '};
 	public final static char[] FAKE_METHOD_NAME = new char[]{' '};
@@ -560,9 +563,12 @@ protected void attachOrphanCompletionNode(){
 			if(expression == this.assistNode
 				|| (expression instanceof Assignment	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=287939
 					&& ((Assignment)expression).expression == this.assistNode
-					&& (this.expressionPtr > 0 && this.expressionStack[this.expressionPtr - 1] instanceof InstanceOfExpression))
+					&& ((this.expressionPtr > 0 && this.expressionStack[this.expressionPtr - 1] instanceof InstanceOfExpression)
+						|| (this.elementPtr >= 0 && this.elementObjectInfoStack[this.elementPtr] instanceof InstanceOfExpression)))
 				|| (expression instanceof AllocationExpression
-					&& ((AllocationExpression)expression).type == this.assistNode)){
+					&& ((AllocationExpression)expression).type == this.assistNode)
+				|| (expression instanceof AND_AND_Expression
+						&& (this.elementPtr >= 0 && this.elementObjectInfoStack[this.elementPtr] instanceof InstanceOfExpression))){
 				buildMoreCompletionContext(expression);
 				if (this.assistNodeParent == null
 					&& expression instanceof Assignment) {
@@ -1061,8 +1067,16 @@ private Statement buildMoreCompletionEnclosingContext(Statement statement) {
 
 	int blockIndex = lastIndexOfElement(K_BLOCK_DELIMITER);
 	int controlIndex = lastIndexOfElement(K_CONTROL_STATEMENT_DELIMITER);
-	int index = blockIndex != -1 && controlIndex < blockIndex ? blockIndex : controlIndex;
-
+	int index;
+	if (controlIndex != -1) {
+		index = blockIndex != -1 && controlIndex < blockIndex ? blockIndex : controlIndex;
+	} else {
+		// To handle the case when the completion is requested before enclosing R_PAREN
+		// and an instanceof expression is also present
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=261534
+		int instanceOfIndex = lastIndexOfElement(K_BETWEEN_INSTANCEOF_AND_RPAREN);
+		index = blockIndex != -1 && instanceOfIndex < blockIndex ? blockIndex : instanceOfIndex;
+	}
 	if (index != -1 && this.elementInfoStack[index] == IF && this.elementObjectInfoStack[index] != null) {
 		Expression condition = (Expression)this.elementObjectInfoStack[index];
 
@@ -1085,7 +1099,9 @@ private Statement buildMoreCompletionEnclosingContext(Statement statement) {
 
 			}
 		}
-
+		if (statement instanceof AND_AND_Expression && this.assistNode instanceof Statement) {
+			statement = (Statement) this.assistNode;
+		}
 		IfStatement ifStatement =
 			new IfStatement(
 					condition,
@@ -1443,8 +1459,8 @@ private boolean checkInvocation() {
 	boolean isEmptyNameCompletion = false;
 	boolean isEmptyAssistIdentifier = false;
 	if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR_QUALIFIER
-		&& ((isEmptyNameCompletion = topExpression == this.assistNode && isEmptyNameCompletion()) // eg. it is something like "this.fred([cursor]" but it is not something like "this.fred(1 + [cursor]"
-			|| (isEmptyAssistIdentifier = this.indexOfAssistIdentifier() >= 0 && this.identifierStack[this.identifierPtr].length == 0))) { // eg. it is something like "this.fred(1 [cursor]"
+		&& ((isEmptyNameCompletion = topExpression == this.assistNode && isEmptyNameCompletion()) // e.g. it is something like "this.fred([cursor]" but it is not something like "this.fred(1 + [cursor]"
+			|| (isEmptyAssistIdentifier = this.indexOfAssistIdentifier() >= 0 && this.identifierStack[this.identifierPtr].length == 0))) { // e.g. it is something like "this.fred(1 [cursor]"
 
 		// pop empty name completion
 		if (isEmptyNameCompletion) {
@@ -1614,7 +1630,7 @@ private boolean checkLabelStatement() {
 	return false;
 }
 /**
- * Checks if the completion is on a member access (ie. in an identifier following a dot).
+ * Checks if the completion is on a member access (i.e. in an identifier following a dot).
  * Returns whether we found a completion node.
  */
 private boolean checkMemberAccess() {
@@ -1638,7 +1654,7 @@ private boolean checkNameCompletion() {
 	/*
 		We didn't find any other completion, but the completion identifier is on the identifier stack,
 		so it can only be a completion on name.
-		Note that we allow the completion on a name even if nothing is expected (eg. foo() b[cursor] would
+		Note that we allow the completion on a name even if nothing is expected (e.g. foo() b[cursor] would
 		be a completion on 'b'). This policy gives more to the user than he/she would expect, but this
 		simplifies the problem. To fix this, the recovery must be changed to work at a 'statement' granularity
 		instead of at the 'expression' granularity as it does right now.
@@ -1961,7 +1977,7 @@ public void completionIdentifierCheck(){
 	if (checkClassLiteralAccess()) return;
 	if (checkInstanceofKeyword()) return;
 
-	// if the completion was not on an empty name, it can still be inside an invocation (eg. this.fred("abc"[cursor])
+	// if the completion was not on an empty name, it can still be inside an invocation (e.g. this.fred("abc"[cursor])
 	// (NB: Put this check before checkNameCompletion() because the selector of the invocation can be on the identifier stack)
 	if (checkInvocation()) return;
 
@@ -2605,6 +2621,10 @@ protected void consumeInsideCastExpressionWithQualifiedGenerics() {
 protected void consumeInstanceOfExpression() {
 	super.consumeInstanceOfExpression();
 	popElement(K_BINARY_OPERATOR);
+	// to handle https://bugs.eclipse.org/bugs/show_bug.cgi?id=261534
+	if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_IF_AND_RIGHT_PAREN) {
+		pushOnElementStack(K_BETWEEN_INSTANCEOF_AND_RPAREN, IF, this.expressionStack[this.expressionPtr]);
+	}
 
 	InstanceOfExpression exp = (InstanceOfExpression) this.expressionStack[this.expressionPtr];
 	if(this.assistNode != null && exp.type == this.assistNode) {
@@ -3242,15 +3262,15 @@ protected void consumeToken(int token) {
 		switch (token) {
 			case TokenNameDOT:
 				switch (previous) {
-					case TokenNamethis: // eg. this[.]fred()
+					case TokenNamethis: // e.g. this[.]fred()
 						this.invocationType = EXPLICIT_RECEIVER;
 						break;
-					case TokenNamesuper: // eg. super[.]fred()
+					case TokenNamesuper: // e.g. super[.]fred()
 						this.invocationType = SUPER_RECEIVER;
 						break;
-					case TokenNameIdentifier: // eg. bar[.]fred()
+					case TokenNameIdentifier: // e.g. bar[.]fred()
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) != K_BETWEEN_NEW_AND_LEFT_BRACKET) {
-							if (this.identifierPtr != prevIdentifierPtr) { // if identifier has been consumed, eg. this.x[.]fred()
+							if (this.identifierPtr != prevIdentifierPtr) { // if identifier has been consumed, e.g. this.x[.]fred()
 								this.invocationType = EXPLICIT_RECEIVER;
 							} else {
 								this.invocationType = NAME_RECEIVER;
@@ -3260,21 +3280,21 @@ protected void consumeToken(int token) {
 				}
 				break;
 			case TokenNameIdentifier:
-				if (previous == TokenNameDOT) { // eg. foo().[fred]()
-					if (this.invocationType != SUPER_RECEIVER // eg. not super.[fred]()
-						&& this.invocationType != NAME_RECEIVER // eg. not bar.[fred]()
-						&& this.invocationType != ALLOCATION // eg. not new foo.[Bar]()
-						&& this.invocationType != QUALIFIED_ALLOCATION) { // eg. not fred().new foo.[Bar]()
+				if (previous == TokenNameDOT) { // e.g. foo().[fred]()
+					if (this.invocationType != SUPER_RECEIVER // e.g. not super.[fred]()
+						&& this.invocationType != NAME_RECEIVER // e.g. not bar.[fred]()
+						&& this.invocationType != ALLOCATION // e.g. not new foo.[Bar]()
+						&& this.invocationType != QUALIFIED_ALLOCATION) { // e.g. not fred().new foo.[Bar]()
 
 						this.invocationType = EXPLICIT_RECEIVER;
 						this.qualifier = this.expressionPtr;
 					}
 				}
-				if (previous == TokenNameGREATER) { // eg. foo().<X>[fred]()
-					if (this.invocationType != SUPER_RECEIVER // eg. not super.<X>[fred]()
-						&& this.invocationType != NAME_RECEIVER // eg. not bar.<X>[fred]()
-						&& this.invocationType != ALLOCATION // eg. not new foo.<X>[Bar]()
-						&& this.invocationType != QUALIFIED_ALLOCATION) { // eg. not fred().new foo.<X>[Bar]()
+				if (previous == TokenNameGREATER) { // e.g. foo().<X>[fred]()
+					if (this.invocationType != SUPER_RECEIVER // e.g. not super.<X>[fred]()
+						&& this.invocationType != NAME_RECEIVER // e.g. not bar.<X>[fred]()
+						&& this.invocationType != ALLOCATION // e.g. not new foo.<X>[Bar]()
+						&& this.invocationType != QUALIFIED_ALLOCATION) { // e.g. not fred().new foo.<X>[Bar]()
 
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_PARAMETERIZED_METHOD_INVOCATION) {
 							this.invocationType = EXPLICIT_RECEIVER;
@@ -3286,20 +3306,20 @@ protected void consumeToken(int token) {
 			case TokenNamenew:
 				pushOnElementStack(K_BETWEEN_NEW_AND_LEFT_BRACKET);
 				this.qualifier = this.expressionPtr; // NB: even if there is no qualification, set it to the expression ptr so that the number of arguments are correctly computed
-				if (previous == TokenNameDOT) { // eg. fred().[new] X()
+				if (previous == TokenNameDOT) { // e.g. fred().[new] X()
 					this.invocationType = QUALIFIED_ALLOCATION;
-				} else { // eg. [new] X()
+				} else { // e.g. [new] X()
 					this.invocationType = ALLOCATION;
 				}
 				break;
 			case TokenNamethis:
-				if (previous == TokenNameDOT) { // eg. fred().[this]()
+				if (previous == TokenNameDOT) { // e.g. fred().[this]()
 					this.invocationType = QUALIFIED_ALLOCATION;
 					this.qualifier = this.expressionPtr;
 				}
 				break;
 			case TokenNamesuper:
-				if (previous == TokenNameDOT) { // eg. fred().[super]()
+				if (previous == TokenNameDOT) { // e.g. fred().[super]()
 					this.invocationType = QUALIFIED_ALLOCATION;
 					this.qualifier = this.expressionPtr;
 				}
@@ -3312,7 +3332,7 @@ protected void consumeToken(int token) {
 					this.qualifier = this.expressionPtr; // remenber the last expression so that arguments are correctly computed
 				}
 				switch (previous) {
-					case TokenNameIdentifier: // eg. fred[(]) or foo.fred[(])
+					case TokenNameIdentifier: // e.g. fred[(]) or foo.fred[(])
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR) {
 							int info = 0;
 							if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER,1) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN &&
@@ -3332,7 +3352,7 @@ protected void consumeToken(int token) {
 						this.qualifier = -1;
 						this.invocationType = NO_RECEIVER;
 						break;
-					case TokenNamethis: // explicit constructor invocation, eg. this[(]1, 2)
+					case TokenNamethis: // explicit constructor invocation, e.g. this[(]1, 2)
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR) {
 							this.pushOnElementStack(K_SELECTOR_INVOCATION_TYPE, (this.invocationType == QUALIFIED_ALLOCATION) ? QUALIFIED_ALLOCATION : ALLOCATION);
 							this.pushOnElementStack(K_SELECTOR_QUALIFIER, this.qualifier);
@@ -3340,7 +3360,7 @@ protected void consumeToken(int token) {
 						this.qualifier = -1;
 						this.invocationType = NO_RECEIVER;
 						break;
-					case TokenNamesuper: // explicit constructor invocation, eg. super[(]1, 2)
+					case TokenNamesuper: // explicit constructor invocation, e.g. super[(]1, 2)
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR) {
 							this.pushOnElementStack(K_SELECTOR_INVOCATION_TYPE, (this.invocationType == QUALIFIED_ALLOCATION) ? QUALIFIED_ALLOCATION : ALLOCATION);
 							this.pushOnElementStack(K_SELECTOR_QUALIFIER, this.qualifier);
@@ -3348,7 +3368,7 @@ protected void consumeToken(int token) {
 						this.qualifier = -1;
 						this.invocationType = NO_RECEIVER;
 						break;
-					case TokenNameGREATER: // explicit constructor invocation, eg. Fred<X>[(]1, 2)
+					case TokenNameGREATER: // explicit constructor invocation, e.g. Fred<X>[(]1, 2)
 					case TokenNameRIGHT_SHIFT: // or fred<X<X>>[(]1, 2)
 					case TokenNameUNSIGNED_RIGHT_SHIFT: //or Fred<X<X<X>>>[(]1, 2)
 						if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR) {
@@ -3443,6 +3463,9 @@ protected void consumeToken(int token) {
 					case K_BETWEEN_CATCH_AND_RIGHT_PAREN :
 						popElement(K_BETWEEN_CATCH_AND_RIGHT_PAREN);
 						break;
+					case K_BETWEEN_INSTANCEOF_AND_RPAREN :
+						popElement(K_BETWEEN_INSTANCEOF_AND_RPAREN);
+						//$FALL-THROUGH$
 					case K_BETWEEN_IF_AND_RIGHT_PAREN :
 						if(topKnownElementInfo(COMPLETION_OR_ASSIST_PARSER) == this.bracketDepth) {
 							popElement(K_BETWEEN_IF_AND_RIGHT_PAREN);
@@ -4336,7 +4359,7 @@ public void initializeScanner(){
 }
 /**
  * Returns whether the completion is just after an array type
- * eg. String[].[cursor]
+ * e.g. String[].[cursor]
  */
 private boolean isAfterArrayType() {
 	// TBD: The following relies on the fact that array dimensions are small: it says that if the
diff --git a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
index 3581843..25e8df7 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
@@ -185,7 +185,7 @@ public int getNextToken() throws InvalidInputException {
 					this.startPosition == this.cursorLocation + 1){
 					// compute end of empty identifier.
 					// if the empty identifier is at the start of a next token the end of
-					// empty identifier is the end of the next token (eg. "<empty token>next").
+					// empty identifier is the end of the next token (e.g. "<empty token>next").
 					int temp = this.eofPosition;
 					this.eofPosition = this.source.length;
 				 	while(getNextCharAsJavaIdentifierPart()){/*empty*/}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
index ad8b034..e4b5785 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
@@ -359,7 +359,7 @@ protected void consumeExplicitConstructorInvocation(int flag, int recFlag) {
 }
 protected void consumeForceNoDiet() {
 	super.consumeForceNoDiet();
-	// if we are not in a method (ie. we are not in a local variable initializer)
+	// if we are not in a method (i.e. we are not in a local variable initializer)
 	// then we are entering a field initializer
 	if (!isInsideMethod()) {
 		if(topKnownElementKind(ASSIST_PARSER) != K_ENUM_CONSTANT_DELIMITER) {
@@ -580,7 +580,7 @@ protected void consumePackageDeclarationNameWithModifiers() {
 }
 protected void consumeRestoreDiet() {
 	super.consumeRestoreDiet();
-	// if we are not in a method (ie. we were not in a local variable initializer)
+	// if we are not in a method (i.e. we were not in a local variable initializer)
 	// then we are exiting a field initializer
 	if (!isInsideMethod()) {
 		popElement(K_FIELD_INITIALIZER_DELIMITER);
@@ -765,13 +765,13 @@ protected void consumeToken(int token) {
 					case TokenNameIdentifier:
 						this.pushOnElementStack(K_SELECTOR, this.identifierPtr);
 						break;
-					case TokenNamethis: // explicit constructor invocation, eg. this(1, 2)
+					case TokenNamethis: // explicit constructor invocation, e.g. this(1, 2)
 						this.pushOnElementStack(K_SELECTOR, THIS_CONSTRUCTOR);
 						break;
-					case TokenNamesuper: // explicit constructor invocation, eg. super(1, 2)
+					case TokenNamesuper: // explicit constructor invocation, e.g. super(1, 2)
 						this.pushOnElementStack(K_SELECTOR, SUPER_CONSTRUCTOR);
 						break;
-					case TokenNameGREATER: // explicit constructor invocation, eg. Fred<X>[(]1, 2)
+					case TokenNameGREATER: // explicit constructor invocation, e.g. Fred<X>[(]1, 2)
 					case TokenNameRIGHT_SHIFT: // or fred<X<X>>[(]1, 2)
 					case TokenNameUNSIGNED_RIGHT_SHIFT: //or Fred<X<X<X>>>[(]1, 2)
 						if(this.identifierPtr > -1) {
@@ -1120,10 +1120,10 @@ protected int indexOfAssistIdentifier(){
 	return this.indexOfAssistIdentifier(false);
 }
 /*
- * Iterate the most recent group of awaiting identifiers (grouped for qualified name reference (eg. aa.bb.cc)
+ * Iterate the most recent group of awaiting identifiers (grouped for qualified name reference (e.g. aa.bb.cc)
  * so as to check whether one of them is the assist identifier.
  * If so, then answer the index of the assist identifier (0 being the first identifier of the set).
- *	eg. aa(0).bb(1).cc(2)
+ *	e.g. aa(0).bb(1).cc(2)
  * If no assist identifier was found, answers -1.
  */
 protected int indexOfAssistIdentifier(boolean useGenericsStack){
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/CompilationResult.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/CompilationResult.java
index 7b08a40..f4d1ee3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/CompilationResult.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/CompilationResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
index ee351f7..973407e 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
@@ -587,20 +587,50 @@ public abstract class ASTNode implements TypeConstants, TypeIds {
 					case Binding.FIELD :
 						FieldBinding field = (FieldBinding) recipient;
 						field.tagBits = ((FieldBinding) annotationRecipient).tagBits;
+						if (annotations != null) {
+							// need to fill the instances array
+							for (int j = 0; j < length; j++) {
+								Annotation annot = sourceAnnotations[j];
+								annotations[j] = annot.getCompilerAnnotation();
+							}
+						}
 						break;
 					case Binding.LOCAL :
 						LocalVariableBinding local = (LocalVariableBinding) recipient;
-						local.tagBits = ((LocalVariableBinding) annotationRecipient).tagBits;
+						long otherLocalTagBits = ((LocalVariableBinding) annotationRecipient).tagBits;
+						local.tagBits = otherLocalTagBits;
+						if ((otherLocalTagBits & TagBits.AnnotationSuppressWarnings) == 0) {
+							// None of the annotations is a SuppressWarnings annotation
+							// need to fill the instances array
+							if (annotations != null) {
+								for (int j = 0; j < length; j++) {
+									Annotation annot = sourceAnnotations[j];
+									annotations[j] = annot.getCompilerAnnotation();
+								}
+							}
+						} else if (annotations != null) {
+							// One of the annotations at least is a SuppressWarnings annotation
+							LocalDeclaration localDeclaration = local.declaration;
+							int declarationSourceEnd = localDeclaration.declarationSourceEnd;
+							int declarationSourceStart = localDeclaration.declarationSourceStart;
+							for (int j = 0; j < length; j++) {
+								Annotation annot = sourceAnnotations[j];
+								/*
+								 * Annotations are shared between two locals, but we still need to record
+								 * the suppress annotation range for the second local
+								 */
+								AnnotationBinding annotationBinding = annot.getCompilerAnnotation();
+								annotations[j] = annotationBinding;
+								if (annotationBinding != null) {
+									final ReferenceBinding annotationType = annotationBinding.getAnnotationType();
+									if (annotationType != null && annotationType.id == TypeIds.T_JavaLangSuppressWarnings) {
+										annot.recordSuppressWarnings(scope, declarationSourceStart, declarationSourceEnd, scope.compilerOptions().suppressWarnings);
+									}
+								}
+							}
+						}
 						break;
 				}
-				if (annotations != null) {
-					// need to fill the instances array
-					annotations[0] = annotation.getCompilerAnnotation();
-					for (int j = 1; j < length; j++) {
-						Annotation annot = sourceAnnotations[j];
-						annotations[j] = annot.getCompilerAnnotation();
-					}
-				}
 				return;
 			} else {
 				annotation.recipient = recipient;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
index bbe8d96..ab66d39 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,6 +19,11 @@ import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 
 public abstract class AbstractVariableDeclaration extends Statement implements InvocationSite {
 	public int declarationEnd;
+	/**
+	 * For local declarations (outside of for statement initialization) and field declarations,
+	 * the declarationSourceEnd covers multiple locals if any.
+	 * For local declarations inside for statement initialization, this is not the case.
+	 */
 	public int declarationSourceEnd;
 	public int declarationSourceStart;
 	public int hiddenVariableDepth; // used to diagnose hiding scenarii
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
index c325047..b35f4bb 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
@@ -194,7 +194,7 @@ public void createPackageInfoType() {
  * Finds the matching type amoung this compilation unit types.
  * Returns null if no type with this name is found.
  * The type name is a compound name
- * eg. if we're looking for X.A.B then a type name would be {X, A, B}
+ * e.g. if we're looking for X.A.B then a type name would be {X, A, B}
  */
 public TypeDeclaration declarationOfType(char[][] typeName) {
 	for (int i = 0; i < this.types.length; i++) {
@@ -291,7 +291,7 @@ public void finalizeProblems() {
 											IrritantSet tokenIrritants = CompilerOptions.warningTokenToIrritants(cst.stringValue());
 											if (tokenIrritants != null
 													&& !tokenIrritants.areAllSet() // no complaint against @SuppressWarnings("all")
-													&& options.isAnyEnabled(tokenIrritants) // if irritant is effectevely enabled
+													&& options.isAnyEnabled(tokenIrritants) // if irritant is effectively enabled
 													&& (foundIrritants[iSuppress] == null || !foundIrritants[iSuppress].isAnySet(tokenIrritants))) { // if irritant had no matching problem
 												if (unusedWarningTokenIsWarning) {
 													int start = value.sourceStart, end = value.sourceEnd;
@@ -477,9 +477,18 @@ public void recordSuppressWarnings(IrritantSet irritants, Annotation annotation,
 		System.arraycopy(this.suppressWarningAnnotations, 0,this.suppressWarningAnnotations = new Annotation[2*this.suppressWarningsCount], 0, this.suppressWarningsCount);
 		System.arraycopy(this.suppressWarningScopePositions, 0,this.suppressWarningScopePositions = new long[2*this.suppressWarningsCount], 0, this.suppressWarningsCount);
 	}
+	final long scopePositions = ((long)scopeStart<<32) + scopeEnd;
+	for (int i = 0, max = this.suppressWarningsCount; i < max; i++) {
+		if (this.suppressWarningAnnotations[i] == annotation
+				&& this.suppressWarningScopePositions[i] == scopePositions
+				&& this.suppressWarningIrritants[i].hasSameIrritants(irritants)) {
+			// annotation data already recorded
+			return;
+		}
+	}
 	this.suppressWarningIrritants[this.suppressWarningsCount] = irritants;
 	this.suppressWarningAnnotations[this.suppressWarningsCount] = annotation;
-	this.suppressWarningScopePositions[this.suppressWarningsCount++] = ((long)scopeStart<<32) + scopeEnd;
+	this.suppressWarningScopePositions[this.suppressWarningsCount++] = scopePositions;
 }
 
 /*
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
index 934373c..645fdaa 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
index 3a2fef8..03e279c 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -470,7 +470,7 @@ public AbstractMethodDeclaration declarationOf(MethodBinding methodBinding) {
  * Finds the matching type amoung this type's member types.
  * Returns null if no type with this name is found.
  * The type name is a compound name relative to this type
- * eg. if this type is X and we're looking for Y.X.A.B
+ * e.g. if this type is X and we're looking for Y.X.A.B
  *     then a type name would be {X, A, B}
  */
 public TypeDeclaration declarationOfType(char[][] typeName) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
index 310c4e6..add0dcb 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryMethod.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryMethod.java
index 2d3ee6a..d75686b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryMethod.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IBinaryMethod.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,7 +12,7 @@ package org.eclipse.jdt.internal.compiler.env;
 
 // clinit methods (synthetics too?) can be returned from IBinaryType>>getMethods()
 // BUT do not have to be... the compiler will ignore them when building the binding.
-// The synthetic argument of a member type's constructor (ie. the first arg of a non-static
+// The synthetic argument of a member type's constructor (i.e. the first arg of a non-static
 // member type) is also ignored by the compiler, BUT in this case it must be included
 // in the constructor's signature.
 
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
index 2ef43e0..b9e1dd7 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
@@ -195,6 +195,20 @@ public class IrritantSet {
 		return false;
 	}
 
+	/**
+	 * Returns true if all of the irritants in the given irritant set are set in receiver
+	 * @param irritantSet the given irritant set
+	 */
+	public boolean hasSameIrritants(IrritantSet irritantSet) {
+		if (irritantSet == null)
+			return false;
+		for (int i = 0; i < GROUP_MAX; i++) {
+			if (this.bits[i] != irritantSet.bits[i])
+				return false;
+		}
+		return true;
+	}
+
 	public boolean isSet(int singleGroupIrritants) {
 		int group = (singleGroupIrritants & GROUP_MASK) >> GROUP_SHIFT;
 		return (this.bits[group] & singleGroupIrritants) != 0;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
index ca24c40..dc5d6d3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
@@ -984,7 +984,7 @@ public class ClassScope extends Scope {
 			}
 
 			// check for simple interface collisions
-			// Check for a duplicate interface once the name is resolved, otherwise we may be confused (ie : a.b.I and c.d.I)
+			// Check for a duplicate interface once the name is resolved, otherwise we may be confused (i.e. a.b.I and c.d.I)
 			for (int j = 0; j < i; j++) {
 				if (interfaceBindings[j] == superInterface) {
 					problemReporter().duplicateSuperinterface(sourceType, superInterfaceRef, superInterface);
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
index b6501f8..e15f117 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -353,6 +353,9 @@ public List collectMissingTypes(List missingTypes) {
 			}
 		}
 	}
+	if (missingTypes == null) {
+		System.err.println("Could not find missing types in " + this); //$NON-NLS-1$
+	}
 	return missingTypes;
 }
 
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
index 00aaffd..2ca0a42 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
@@ -295,7 +295,7 @@ public void computeLocalVariablePositions(int initOffset, CodeStream codeStream)
  * Error management:
  * 		keep null for all the errors that prevent the method to be created
  * 		otherwise return a correct method binding (but without the element
- *		that caused the problem) : ie : Incorrect thrown exception
+ *		that caused the problem) : i.e. Incorrect thrown exception
  */
 MethodBinding createMethod(AbstractMethodDeclaration method) {
 	// is necessary to ensure error reporting
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
index 0b6cc0d..47ecc69 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
@@ -35,7 +35,7 @@ Binding creation is responsible for reporting all problems with types:
 		- extending a final class
 		- extending an interface instead of a class
 		- implementing a class instead of an interface
-		- implementing the same interface more than once (ie. duplicate interfaces)
+		- implementing the same interface more than once (i.e. duplicate interfaces)
 	- with nested types:
 		- shadowing an enclosing type's source name
 		- defining a static class or interface inside a non-static nested class
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index 9a7c1f4..e106904 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@ -1653,7 +1653,7 @@ public abstract class Scope {
 											}
 										}
 										if (receiverType == fieldBinding.declaringClass || compilerOptions().complianceLevel >= ClassFileConstants.JDK1_4) {
-											// found a valid field in the 'immediate' scope (ie. not inherited)
+											// found a valid field in the 'immediate' scope (i.e. not inherited)
 											// OR in 1.4 mode (inherited shadows enclosing)
 											if (foundField == null) {
 												if (depth > 0){
@@ -1666,7 +1666,7 @@ public abstract class Scope {
 											if (foundField.isValidBinding())
 												// if a valid field was found, complain when another is found in an 'immediate' enclosing type (that is, not inherited)
 												if (foundField.declaringClass != fieldBinding.declaringClass)
-													// ie. have we found the same field - do not trust field identity yet
+													// i.e. have we found the same field - do not trust field identity yet
 													return new ProblemFieldBinding(
 														foundField, // closest match
 														foundField.declaringClass,
@@ -1988,7 +1988,7 @@ public abstract class Scope {
 									if (inheritedHasPrecedence
 											|| receiverType == methodBinding.declaringClass
 											|| (receiverType.getMethods(selector)) != Binding.NO_METHODS) {
-										// found a valid method in the 'immediate' scope (ie. not inherited)
+										// found a valid method in the 'immediate' scope (i.e. not inherited)
 										// OR in 1.4 mode (inherited visible shadows enclosing)
 										// OR the receiverType implemented a method with the correct name
 										// return the methodBinding if it is not declared in a superclass of the scope's binding (that is, inherited)
@@ -2520,11 +2520,11 @@ public abstract class Scope {
 									if (sourceType == memberType.enclosingType() || inheritedHasPrecedence) {
 										if (insideStaticContext && !memberType.isStatic() && sourceType.isGenericType())
 											return new ProblemReferenceBinding(new char[][]{name}, memberType, ProblemReasons.NonStaticReferenceInStaticContext);
-										// found a valid type in the 'immediate' scope (ie. not inherited)
+										// found a valid type in the 'immediate' scope (i.e. not inherited)
 										// OR in 1.4 mode (inherited visible shadows enclosing)
 										if (foundType == null || (inheritedHasPrecedence && foundType.problemId() == ProblemReasons.NotVisible))
 											return memberType;
-										// if a valid type was found, complain when another is found in an 'immediate' enclosing type (ie. not inherited)
+										// if a valid type was found, complain when another is found in an 'immediate' enclosing type (i.e. not inherited)
 										if (foundType.isValidBinding() && foundType != memberType)
 											return new ProblemReferenceBinding(new char[][]{name}, foundType, ProblemReasons.InheritedNameHidesEnclosingName);
 									}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
index 399f796..51cd7db 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
@@ -16,11 +16,11 @@ package org.eclipse.jdt.internal.compiler.parser;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.Annotation;
 import org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
 import org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.eclipse.jdt.internal.compiler.ast.Expression;
 import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.Statement;
@@ -247,7 +247,8 @@ public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 				updateSourceEndIfNecessary(braceEnd - 1);
 				return this.parent;
 			} else {
-				this.alreadyCompletedFieldInitialization = true;
+				if (this.fieldDeclaration.declarationSourceEnd > 0)
+					this.alreadyCompletedFieldInitialization = true;
 			}
 		}
 		return this;
@@ -265,11 +266,18 @@ public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
  * in which case the bodyStart is updated.
  */
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
-	if (this.fieldDeclaration.declarationSourceEnd == 0
-		&& (this.fieldDeclaration.type instanceof ArrayTypeReference || this.fieldDeclaration.type instanceof ArrayQualifiedTypeReference)
-		&& !this.alreadyCompletedFieldInitialization){
-		this.bracketBalance++;
-		return null; // no update is necessary	(array initializer)
+	if (this.fieldDeclaration.declarationSourceEnd == 0) {
+		if (this.fieldDeclaration.type instanceof ArrayTypeReference || this.fieldDeclaration.type instanceof ArrayQualifiedTypeReference) {
+			if (!this.alreadyCompletedFieldInitialization) {
+				this.bracketBalance++;
+				return null; // no update is necessary	(array initializer)
+			}
+		} else {  // https://bugs.eclipse.org/bugs/show_bug.cgi?id=308980
+			// in case an initializer bracket is opened in a non-array field
+			// e.g. int field = {..
+			this.bracketBalance++;
+			return null; // no update is necessary	(array initializer)
+		}
 	}
 	if (this.fieldDeclaration.declarationSourceEnd == 0
 		&& this.fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT){
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
index a7bd367..48912ab 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
@@ -15,14 +15,14 @@ import org.eclipse.jdt.core.compiler.CharOperation;
 /**
  * Hashtable of {char[] --> Object }
  */
-public class HashtableOfObject implements Cloneable {
+public final class HashtableOfObject implements Cloneable {
 
 	// to avoid using Enumerations, walk the individual tables skipping nulls
 	public char[] keyTable[];
 	public Object valueTable[];
 
 	public int elementSize; // number of elements in the table
-	protected int threshold;
+	int threshold;
 
 	public HashtableOfObject() {
 		this(13);
@@ -64,7 +64,7 @@ public class HashtableOfObject implements Cloneable {
 
 	public boolean containsKey(char[] key) {
 		int length = this.keyTable.length,
-			index = hashCode(key) % length;
+			index = CharOperation.hashCode(key) % length;
 		int keyLength = key.length;
 		char[] currentKey;
 		while ((currentKey = this.keyTable[index]) != null) {
@@ -79,7 +79,7 @@ public class HashtableOfObject implements Cloneable {
 
 	public Object get(char[] key) {
 		int length = this.keyTable.length,
-			index = hashCode(key) % length;
+			index = CharOperation.hashCode(key) % length;
 		int keyLength = key.length;
 		char[] currentKey;
 		while ((currentKey = this.keyTable[index]) != null) {
@@ -92,26 +92,9 @@ public class HashtableOfObject implements Cloneable {
 		return null;
 	}
 
-	/*
-	 * This method implementation is an inline of the {@link CharOperation#hashCode(char[])} method...
-	 */
-	protected int hashCode(char[] key) {
-		int length = key.length;
-		int hash = length == 0 ? 31 : key[0];
-		if (length < 8) {
-			for (int i = length; --i > 0;)
-				hash = (hash * 31) + key[i];
-		} else {
-			// 8 characters is enough to compute a decent hash code, don't waste time examining every character
-			for (int i = length - 1, last = i > 16 ? i - 16 : 0; i > last; i -= 2)
-				hash = (hash * 31) + key[i];
-		}
-		return hash & 0x7FFFFFFF;
-	}
-
 	public Object put(char[] key, Object value) {
 		int length = this.keyTable.length,
-			index = hashCode(key) % length;
+			index = CharOperation.hashCode(key) % length;
 		int keyLength = key.length;
 		char[] currentKey;
 		while ((currentKey = this.keyTable[index]) != null) {
@@ -141,7 +124,7 @@ public class HashtableOfObject implements Cloneable {
 	 */
 	public void putUnsafely(char[] key, Object value) {
 		int length = this.keyTable.length,
-			index = hashCode(key) % length;
+			index = CharOperation.hashCode(key) % length;
 		while (this.keyTable[index] != null) {
 			if (++index == length) {
 				index = 0;
@@ -158,7 +141,7 @@ public class HashtableOfObject implements Cloneable {
 
 	public Object removeKey(char[] key) {
 		int length = this.keyTable.length,
-			index = hashCode(key) % length;
+			index = CharOperation.hashCode(key) % length;
 		int keyLength = key.length;
 		char[] currentKey;
 		while ((currentKey = this.keyTable[index]) != null) {
@@ -177,7 +160,7 @@ public class HashtableOfObject implements Cloneable {
 		return null;
 	}
 
-	protected void rehash() {
+	private void rehash() {
 
 		HashtableOfObject newHashtable = new HashtableOfObject(this.elementSize * 2);		// double the number of expected elements
 		char[] currentKey;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/Util.java b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/Util.java
index 148e7b2..7f2dd7b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/Util.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/Util.java
@@ -294,7 +294,7 @@ public class Util implements SuffixConstants {
 	*/
 	/**
 	 * Returns the given input stream's contents as a byte array.
-	 * If a length is specified (ie. if length != -1), only length bytes
+	 * If a length is specified (i.e. if length != -1), only length bytes
 	 * are returned. Otherwise all bytes in the stream are returned.
 	 * Note this doesn't close the stream.
 	 * @throws IOException if a problem occured reading the stream.
@@ -377,7 +377,7 @@ public class Util implements SuffixConstants {
 	*/
 	/**
 	 * Returns the given input stream's contents as a character array.
-	 * If a length is specified (ie. if length != -1), this represents the number of bytes in the stream.
+	 * If a length is specified (i.e. if length != -1), this represents the number of bytes in the stream.
 	 * Note this doesn't close the stream.
 	 * @throws IOException if a problem occured reading the stream.
 	 */
diff --git a/eclipse/plugins/org.eclipse.jdt.core/component.xml b/eclipse/plugins/org.eclipse.jdt.core/component.xml
index 9be8f9f..6199452 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/component.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/component.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2005, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTParser.java b/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTParser.java
index 3919c37..d3ef293 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTParser.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTParser.java
@@ -49,6 +49,10 @@ import org.eclipse.jdt.internal.core.util.Util;
  * char[] source = ...;
  * ASTParser parser = ASTParser.newParser(AST.JLS3);  // handles JDK 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6
  * parser.setSource(source);
+ * // In order to parse 1.5 code, some compiler options need to be set to 1.5
+ * Map options = JavaCore.getOptions();
+ * JavaCore.setComplianceOptions(JavaCore.VERSION_1_5, options);
+ * parser.setCompilerOptions(options);
  * CompilationUnit result = (CompilationUnit) parser.createAST(null);
  * </pre>
  * Once a configured parser instance has been used to create an AST,
@@ -297,14 +301,15 @@ public class ASTParser {
 	}
 	
 	/**
-	 * Set the environment that can be used when no IJavaProject are available.
+	 * Sets the environment to be used when no {@link IJavaProject} is available.
 	 * 
-	 * <p>The user has to be sure to include all required types on the classpaths for binary types
-	 * or on the sourcepaths for source types to resolve the given source code.</p>
-	 * <p>All classpath and sourcepath entries are absolute paths.</p>
-	 * <p>If sourcepaths contain units using a specific encoding (not the platform encoding), then the
-	 * given <code>encodings</code> must be set. If the given <code>encodings</code> is set, its length must
-	 * match the length of the sourcepaths parameter or an IllegalArgumentException will be thrown.</p>
+	 * <p>The user has to make sure that all the required types are included either in the classpath or source paths. 
+	 * All the paths containing binary types must be included in the <code>classpathEntries</code> whereas all paths containing  
+	 * source types must be included in the <code>sourcepathEntries</code>.</p>
+	 * <p>All paths in the <code>classpathEntries</code> and <code>sourcepathEntries</code> are absolute paths.</p>
+	 * <p>If the source paths contain units using a specific encoding (other than the platform encoding), then the
+	 * given <code>encodings</code> must be set. When the <code>encodings</code> is set to non <code>null</code>, its length must
+	 * match the length of <code>sourcepathEntries</code> or an IllegalArgumentException will be thrown.</p>
 	 * <p>If <code>encodings</code> is not <code>null</code>, the given <code>sourcepathEntries</code> must not be <code>null</code>.</p>
 	 * 
 	 * @param classpathEntries the given classpath entries to be used to resolve bindings
@@ -559,8 +564,15 @@ public class ASTParser {
 	 * <p>This source is not used when the AST is built using 
 	 * {@link #createASTs(ICompilationUnit[], String[], ASTRequestor, IProgressMonitor)}.</p>
 	 *
+	 * <p>If this method is used, the user needs to specify compiler options explicitly using
+	 * {@link #setCompilerOptions(Map)} as 1.5 code will not be properly parsed without setting
+	 * the appropriate values for the compiler options: {@link JavaCore#COMPILER_SOURCE},
+	 * {@link JavaCore#COMPILER_CODEGEN_TARGET_PLATFORM}, and {@link JavaCore#COMPILER_COMPLIANCE}.</p>
+	 * <p>Otherwise the default values for the compiler options will be used to parse the given source.</p>
+	 *
 	 * @param source the source string to be parsed,
 	 * or <code>null</code> if none
+	 * @see JavaCore#setComplianceOptions(String, Map)
 	 */
 	public void setSource(char[] source) {
 		this.rawSource = source;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IBinding.java b/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IBinding.java
index 34dc52f..06678c1 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IBinding.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/IBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
index 8922a46..4ec8e3e 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationContext.java b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationContext.java
index 56e7457..5a09110 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationContext.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -512,7 +512,7 @@ public char[] getPackageName() {
 	return this.packageName;
 }
 /**
- * Return the binary for the root code snippet class (ie. org.eclipse.jdt.internal.eval.target.CodeSnippet).
+ * Return the binary for the root code snippet class (i.e. org.eclipse.jdt.internal.eval.target.CodeSnippet).
  */
 IBinaryType getRootCodeSnippetBinary() {
 	if (this.codeSnippetBinary == null) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationResult.java b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationResult.java
index 533be9e..c0828c3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationResult.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/EvaluationResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@ import org.eclipse.jdt.core.compiler.CategorizedProblem;
  * An EvaluationResult is the result of a code snippet evaluation, a global
  * variable evaluation or it is used to report problems against imports and
  * package declaration.
- * It primarily contains the representation of the resulting value (eg. its
+ * It primarily contains the representation of the resulting value (e.g. its
  * toString() representation). However if the code snippet, a global variable
  * definition, an import or the package declaration could not be compiled, it
  * contains the corresponding compilation problems.
@@ -129,7 +129,7 @@ public Object getValue() {
  * Returns the displayable representation of this result's value.
  * This is obtained by sending toString() to the result object on the target side
  * if it is not a primitive value. If it is a primitive value, the corresponding
- * static toString(...) is used, eg. Integer.toString(int n) if it is an int.
+ * static toString(...) is used, e.g. Integer.toString(int n) if it is an int.
  * Returns null if there is no value.
  */
 public char[] getValueDisplayString() {
@@ -138,7 +138,7 @@ public char[] getValueDisplayString() {
 /**
  * Returns the dot-separated fully qualified name of this result's value type.
  * If the value is a primitive value, returns the toString() representation of its type
- * (eg. "int", "boolean", etc.)
+ * (e.g. "int", "boolean", etc.)
  * Returns null if there is no value.
  */
 public char[] getValueTypeName() {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/GlobalVariable.java b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/GlobalVariable.java
index 4764ee4..4b28df4 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/GlobalVariable.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/GlobalVariable.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,7 +31,7 @@ public GlobalVariable(char[] typeName, char[] name, char[] initializer) {
 }
 /**
  * Returns the initializer of this global variable. The initializer is a
- * variable initializer (ie. an expression or an array initializer) as defined
+ * variable initializer (i.e. an expression or an array initializer) as defined
  * in the Java Language Specifications.
  */
 public char[] getInitializer() {
@@ -45,7 +45,7 @@ public char[] getName() {
 }
 /**
  * Returns the dot separated fully qualified name of the type of this global variable,
- * or its simple representation if it is a primitive type (eg. int, boolean, etc.)
+ * or its simple representation if it is a primitive type (e.g. int, boolean, etc.)
  */
 public char[] getTypeName() {
 	return this.typeName;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java
index caccf20..787d4e6 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
index 2206996..4be41a6 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
@@ -860,15 +860,29 @@ public class DefaultCodeFormatterConstants {
 	public static final String FORMATTER_CONTINUATION_INDENTATION_FOR_ARRAY_INITIALIZER = JavaCore.PLUGIN_ID + ".formatter.continuation_indentation_for_array_initializer";	//$NON-NLS-1$
 	/**
 	 * <pre>
+	 * FORMATTER / Option to use the disabling and enabling tags defined respectively by the {@link #FORMATTER_DISABLING_TAG} and the {@link #FORMATTER_ENABLING_TAG} options.
+	 *     - option id:         "org.eclipse.jdt.core.formatter.use_on_off_tags"
+	 *     - possible values:   TRUE / FALSE
+	 *     - default:           FALSE
+	 * </pre>
+	 * @since 3.6
+	 */
+	public static final String FORMATTER_USE_ON_OFF_TAGS = JavaCore.PLUGIN_ID + ".formatter.use_on_off_tags";	//$NON-NLS-1$
+	/**
+	 * <pre>
 	 * FORMATTER / Option to define the tag to put in a comment to disable the formatting.
-	 * See the {@link #FORMATTER_ENABLING_TAG} option to re-enable it.
+	 *     - option id:         "org.eclipse.jdt.core.formatter.disabling_tag"
 	 *     - possible values:   String, with constraints mentioned below
-	 *     - default:           ""
+	 *     - default:           "@formatter:off"
+	 * 
+	 * See the {@link #FORMATTER_ENABLING_TAG} option to re-enable it.
 	 * </pre>
 	 * 
 	 * <p>
 	 * Note that:
 	 * <ol>
+	 * <li>This tag is used by the formatter only if the 
+	 * {@link #FORMATTER_USE_ON_OFF_TAGS} option is set to {@link #TRUE}.</li>
 	 * <li>The tag name will be trimmed. Hence if it does contain white spaces
 	 * at the beginning or at the end, they will not be taken into account while
 	 * searching for the tag in the comments</li>
@@ -887,14 +901,14 @@ public class DefaultCodeFormatterConstants {
 	 * format the code from the beginning of the comment including this tag. If it
 	 * was already disabled, the tag has no special effect.
 	 * <p>
-	 * For example, the second defined enabling tag &quot;<b>disable-formatter</b>&quot;
+	 * For example, the second default enabling tag &quot;<b>@formatter:off</b>&quot;
 	 * in the following snippet is not necessary as the formatter was already disabled
 	 * since the first one:
 	 * <pre>
 	 * class X {
-	 * // disable-formatter
+	 * // @formatter:off
 	 * void foo1() {}
-	 * // disable-formatter
+	 * // @formatter:off
 	 * void foo2() {}
 	 * void bar1() {}
 	 * void bar2() {}
@@ -906,7 +920,7 @@ public class DefaultCodeFormatterConstants {
 	 * For example, when a disabling tag is put at the beginning of the code, then
 	 * the entire content of a compilation unit is not formatted:
 	 * <pre>
-	 * // disable-formatter
+	 * // @formatter:off
 	 * class X {
 	 * void foo1() {}
 	 * void foo2() {}
@@ -924,9 +938,9 @@ public class DefaultCodeFormatterConstants {
 	 * class X {
 	 * &#47;&#42;
 	 * &nbsp;&#42; This is a comment with a mix of disabling and enabling tags:
-	 * &nbsp;&#42;  - <b>disable-formatter</b>
-	 * &nbsp;&#42;  - <b>enable-formatter</b>
-	 * &nbsp;&#42;  - <b>disable-formatter</b>
+	 * &nbsp;&#42;  - <b>@formatter:off</b>
+	 * &nbsp;&#42;  - <b>@formatter:on</b>
+	 * &nbsp;&#42;  - <b>@formatter:off</b>
 	 * &nbsp;&#42; The formatter will stop to format from the beginning of this comment...
 	 * &nbsp;&#42;&#47;
 	 * void foo() {}
@@ -945,16 +959,17 @@ public class DefaultCodeFormatterConstants {
 	public static final String FORMATTER_DISABLING_TAG = JavaCore.PLUGIN_ID + ".formatter.disabling_tag";	//$NON-NLS-1$
 	/**
 	 * <pre>
-	 * FORMATTER / Option to define the tag to put in a comment to re-enable the
-	 * formatting after it has been disabled (see {@link #FORMATTER_DISABLING_TAG})
+	 * FORMATTER / Option to define the tag to put in a comment to re-enable the formatting after it has been disabled (see {@link #FORMATTER_DISABLING_TAG})
 	 *     - option id:         "org.eclipse.jdt.core.formatter.enabling_tag"
 	 *     - possible values:   String, with constraints mentioned below
-	 *     - default:           ""
+	 *     - default:           "@formatter:on"
 	 * </pre>
 	 * 
 	 * <p>
 	 * Note that:
 	 * <ol>
+	 * <li>This tag is used by the formatter only if the 
+	 * {@link #FORMATTER_USE_ON_OFF_TAGS} option is set to {@link #TRUE}.</li>
 	 * <li>The tag name will be trimmed. Hence if it does contain white spaces
 	 * at the beginning or at the end, they will not be taken into account while
 	 * searching for the tag in the comments</li>
@@ -973,14 +988,14 @@ public class DefaultCodeFormatterConstants {
 	 * to format the code just after the comment including this tag. If it was already
 	 * active, i.e. already re-enabled or never disabled, the tag has no special effect.
 	 * <p>
-	 * For example, the defined enabling tag &quot;<b>enable-formatter</b>&quot;
+	 * For example, the default enabling tag &quot;<b>@formatter:on</b>&quot;
 	 * in the following snippet is not necessary as the formatter has never been
 	 * disabled:
 	 * <pre>
 	 * class X {
 	 * void foo1() {}
 	 * void foo2() {}
-	 * // enable-formatter
+	 * // @formatter:on
 	 * void bar1() {}
 	 * void bar2() {}
 	 * }
@@ -989,12 +1004,12 @@ public class DefaultCodeFormatterConstants {
 	 * the formatting will have been re-enabled by the first one:
 	 * <pre>
 	 * class X {
-	 * // disable-formatter
+	 * // @formatter:off
 	 * void foo1() {}
 	 * void foo2() {}
-	 * // enable-formatter
+	 * // @formatter:on
 	 * void bar1() {}
-	 * // enable-formatter
+	 * // @formatter:on
 	 * void bar2() {}
 	 * }
 	 * </pre>
@@ -1005,13 +1020,13 @@ public class DefaultCodeFormatterConstants {
 	 * <p>For example, in the following snippet, the formatter will be re-enabled after
 	 * the comment:</p>
 	 * <pre>
-	 * // disable-formatter
+	 * // @formatter:off
 	 * class X {
 	 * &#47;&#42;
 	 * &nbsp;&#42; This is a comment with a mix of disabling and enabling tags:
-	 * &nbsp;&#42;  - <b>enable-formatter</b>
-	 * &nbsp;&#42;  - <b>disable-formatter</b>
-	 * &nbsp;&#42;  - <b>enable-formatter</b>
+	 * &nbsp;&#42;  - <b>@formatter:on</b>
+	 * &nbsp;&#42;  - <b>@formatter:off</b>
+	 * &nbsp;&#42;  - <b>@formatter:on</b>
 	 * &nbsp;&#42; The formatter will restart to format after this comment...
 	 * &nbsp;&#42;&#47;
 	 * void foo() {}
@@ -3485,6 +3500,51 @@ public class DefaultCodeFormatterConstants {
 	public static final String FORMATTER_WRAP_BEFORE_BINARY_OPERATOR = JavaCore.PLUGIN_ID + ".formatter.wrap_before_binary_operator"; //$NON-NLS-1$
 	/**
 	 * <pre>
+	 * FORMATTER / Option to wrap outer expressions in nested expressions
+	 *     - option id:         "org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested"
+	 *     - possible values:   { TRUE, FALSE }
+	 *     - default:           TRUE
+	 * </pre>
+	 * <p>
+	 * This option changes the formatter behavior when nested method calls are encountered.
+	 * Since 3.6, the formatter tries to wrap outermost method calls first to have a better output.</p>
+	 * <p>For example, let's say we are using the Eclipse built-in profile with a max line width=40+space for tab policy.
+	 * Then consider the following snippet:</p>
+	 * <pre>
+	 * public class X01 {
+	 *     void test() {
+	 *         foo(bar(1, 2, 3, 4), bar(5, 6, 7, 8));
+	 *     }
+	 * }
+	 * </pre>
+	 * <p>With this new strategy, the formatter will wrap the line earlier, between the arguments of the message call
+	 * for this example, and then it will allow to keep each nested call on a single line.</p>
+	 * <p>Hence, the output will be:</p>
+	 * <pre>
+	 * public class X01 {
+	 *     void test() {
+	 *         foo(bar(1, 2, 3, 4),
+	 *             bar(5, 6, 7, 8));
+	 *     }
+	 * }
+	 * </pre>
+	 * <p>
+	 * </p>
+	 * <p><b><u>Important notes</u></b>:</p>
+	 * <ol>
+	 * <li>This new behavior is automatically activated (i.e. the default value for this preference is {@link #TRUE}).
+	 * If the backward compatibility regarding previous versions' formatter behavior (i.e. before 3.6 version) is necessary,
+	 * then the preference needs to be set to {@link #FALSE} to retrieve the previous formatter behavior.</li>
+	 * <li>The new strategy currently only applies to nested method calls, but might be extended to other nested expressions in future versions</li>
+	 * </ol>
+	 * 
+	 * @see #TRUE
+	 * @see #FALSE
+	 * @since 3.6
+	 */
+	public static final String FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED = JavaCore.PLUGIN_ID + ".formatter.wrap_outer_expressions_when_nested"; //$NON-NLS-1$
+	/**
+	 * <pre>
 	 * FORMATTER / The wrapping is done by indenting by one compare to the current indentation.
 	 * </pre>
 	 * @since 3.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java
index 6876523..4be56a9 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java
@@ -8,6 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Brock Janiczak - Contribution for bug 150741
+ *     Nanda Firdausi - Contribution for bug 298844
  *******************************************************************************/
 package org.eclipse.jdt.internal.formatter;
 
@@ -422,7 +423,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 
 		if ((builder.realFragmentsSize() > 1 || fragmentsSize > 4) && numberOfParens == 0) {
 			this.scribe.printComment();
-			Alignment binaryExpressionAlignment = this.scribe.createAlignment("binaryExpressionAlignment", this.preferences.alignment_for_binary_expression, Alignment.R_OUTERMOST, fragmentsSize, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+			Alignment binaryExpressionAlignment = this.scribe.createAlignment(
+					Alignment.BINARY_EXPRESSION,
+					this.preferences.alignment_for_binary_expression,
+					Alignment.R_OUTERMOST,
+					fragmentsSize,
+					this.scribe.scanner.currentPosition);
 			this.scribe.enterAlignment(binaryExpressionAlignment);
 			boolean ok = false;
 			ASTNode[] fragments = builder.fragments();
@@ -590,7 +596,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			if (this.preferences.insert_space_after_assignment_operator) {
 				this.scribe.space();
 			}
-			Alignment assignmentAlignment = this.scribe.createAlignment("fieldDeclarationAssignmentAlignment", this.preferences.alignment_for_assignment, Alignment.R_INNERMOST, 1, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+			Alignment assignmentAlignment = this.scribe.createAlignment(
+					Alignment.FIELD_DECLARATION_ASSIGNMENT,
+					this.preferences.alignment_for_assignment,
+					Alignment.R_INNERMOST,
+					1,
+					this.scribe.scanner.currentPosition);
 			this.scribe.enterAlignment(assignmentAlignment);
 			boolean ok = false;
 			do {
@@ -672,7 +683,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		final int multipleFieldDeclarationsLength = multiFieldDeclaration.declarations.length;
 
 		Alignment multiFieldDeclarationsAlignment =this.scribe.createAlignment(
-				"multiple_field",//$NON-NLS-1$
+				Alignment.MULTIPLE_FIELD,
 				this.preferences.alignment_for_multiple_fields,
 				multipleFieldDeclarationsLength - 1,
 				this.scribe.scanner.currentPosition);
@@ -956,7 +967,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		final TypeReference superclass = typeDeclaration.superclass;
 		if (superclass != null) {
 			Alignment superclassAlignment =this.scribe.createAlignment(
-					"superclass", //$NON-NLS-1$
+					Alignment.SUPER_CLASS,
 					this.preferences.alignment_for_superclass_in_type_declaration,
 					2,
 					this.scribe.scanner.currentPosition);
@@ -994,7 +1005,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int superInterfaceLength = superInterfaces.length;
 			Alignment interfaceAlignment =this.scribe.createAlignment(
-					"superInterfaces",//$NON-NLS-1$
+					Alignment.SUPER_INTERFACES,
 					alignment_for_superinterfaces,
 					superInterfaceLength+1,  // implements token is first fragment
 					this.scribe.scanner.currentPosition);
@@ -1087,7 +1098,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				hasConstants = enumConstantsLength != 0;
 				if (enumConstantsLength > 1) {
 					Alignment enumConstantsAlignment = this.scribe.createAlignment(
-							"enumConstants",//$NON-NLS-1$
+							Alignment.ENUM_CONSTANTS,
 							this.preferences.alignment_for_enum_constants,
 							enumConstantsLength,
 							this.scribe.scanner.currentPosition,
@@ -1318,7 +1329,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				}
 				int argumentLength = arguments.length;
 				Alignment argumentsAlignment = this.scribe.createAlignment(
-						"messageArguments", //$NON-NLS-1$
+						Alignment.MESSAGE_ARGUMENTS,
 						this.preferences.alignment_for_arguments_in_method_invocation,
 						Alignment.R_OUTERMOST,
 						argumentLength,
@@ -1353,17 +1364,20 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			startingPositionInCascade = 2;
 		}
+		int tieBreakRule = this.preferences.wrap_outer_expressions_when_nested && size-startingPositionInCascade > 2
+			? Alignment.R_OUTERMOST
+			: Alignment.R_INNERMOST;
 		Alignment cascadingMessageSendAlignment =
 			this.scribe.createAlignment(
-				"cascadingMessageSendAlignment", //$NON-NLS-1$
+				Alignment.CASCADING_MESSAGE_SEND,
 				this.preferences.alignment_for_selector_in_method_invocation,
-				Alignment.R_INNERMOST,
+				tieBreakRule,
 				size,
 				this.scribe.scanner.currentPosition);
 		this.scribe.enterAlignment(cascadingMessageSendAlignment);
 		boolean ok = false;
-		boolean setStartingColumn = startingPositionInCascade == 1;
-		switch (this.preferences.alignment_for_arguments_in_method_invocation) {
+		boolean setStartingColumn = true;
+		switch (this.preferences.alignment_for_arguments_in_method_invocation & Alignment.SPLIT_MASK) {
 			case Alignment.M_COMPACT_FIRST_BREAK_SPLIT:
 			case Alignment.M_NEXT_SHIFTED_SPLIT:
 			case Alignment.M_ONE_PER_LINE_SPLIT:
@@ -1413,15 +1427,22 @@ public class CodeFormatterVisitor extends ASTVisitor {
 							this.scribe.space();
 						}
 						int argumentLength = arguments.length;
+						int alignmentMode = this.preferences.alignment_for_arguments_in_method_invocation;
 						Alignment argumentsAlignment = this.scribe.createAlignment(
-								"messageArguments", //$NON-NLS-1$
-								this.preferences.alignment_for_arguments_in_method_invocation,
+								Alignment.MESSAGE_ARGUMENTS,
+								alignmentMode,
 								Alignment.R_OUTERMOST,
 								argumentLength,
 								this.scribe.scanner.currentPosition);
 						this.scribe.enterAlignment(argumentsAlignment);
 						boolean okForArguments = false;
 						do {
+							switch (alignmentMode & Alignment.SPLIT_MASK) {
+								case Alignment.M_COMPACT_SPLIT:
+								case Alignment.M_NEXT_PER_LINE_SPLIT:
+									argumentsAlignment.startingColumn = this.scribe.column;
+									break;
+							}
 							try {
 								for (int j = 0; j < argumentLength; j++) {
 									if (j > 0) {
@@ -1429,10 +1450,16 @@ public class CodeFormatterVisitor extends ASTVisitor {
 										this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
 									}
 									this.scribe.alignFragment(argumentsAlignment, j);
-									if (j > 0 && this.preferences.insert_space_after_comma_in_method_invocation_arguments) {
+									if (j == 0) {
+										int fragmentIndentation = argumentsAlignment.fragmentIndentations[j];
+										if ((argumentsAlignment.mode & Alignment.M_INDENT_ON_COLUMN) != 0 && fragmentIndentation > 0) {
+											this.scribe.indentationLevel = fragmentIndentation;
+										}	
+									} else if (this.preferences.insert_space_after_comma_in_method_invocation_arguments) {
 										this.scribe.space();
 									}
 									arguments[j].traverse(this, scope);
+									argumentsAlignment.startingColumn = -1;
 								}
 								okForArguments = true;
 							} catch (AlignmentException e) {
@@ -1468,7 +1495,11 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		final int FIELD = 1, METHOD = 2, TYPE = 3;
 		this.scribe.lastNumberOfNewLines = 1;
 		ASTNode[] mergedNodes = computeMergedMemberDeclarations(nodes);
-		Alignment memberAlignment = this.scribe.createMemberAlignment("typeMembers", this.preferences.align_type_members_on_columns ? Alignment.M_MULTICOLUMN : Alignment.M_NO_ALIGNMENT, 4, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+		Alignment memberAlignment = this.scribe.createMemberAlignment(
+				Alignment.TYPE_MEMBERS,
+				this.preferences.align_type_members_on_columns ? Alignment.M_MULTICOLUMN : Alignment.M_NO_ALIGNMENT,
+				4,
+				this.scribe.scanner.currentPosition);
 		this.scribe.enterMemberAlignment(memberAlignment);
 		boolean isChunkStart = false;
 		boolean ok = false;
@@ -1505,7 +1536,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 						isChunkStart = memberAlignment.checkChunkStart(TYPE, i, this.scribe.scanner.currentPosition);
 						format((TypeDeclaration)member, null, isChunkStart, i == 0);
 					}
-					if (isNextToken(TerminalTokens.TokenNameSEMICOLON)) {
+					while (isNextToken(TerminalTokens.TokenNameSEMICOLON)) {
 						this.scribe.printNextToken(TerminalTokens.TokenNameSEMICOLON, this.preferences.insert_space_before_semicolon);
 						this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
 					}
@@ -1612,7 +1643,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			if (this.preferences.insert_space_after_assignment_operator) {
 				this.scribe.space();
 			}
-			Alignment assignmentAlignment = this.scribe.createAlignment("localDeclarationAssignmentAlignment", this.preferences.alignment_for_assignment, Alignment.R_OUTERMOST, 1, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+			Alignment assignmentAlignment = this.scribe.createAlignment(
+					Alignment.LOCAL_DECLARATION_ASSIGNMENT,
+					this.preferences.alignment_for_assignment,
+					Alignment.R_OUTERMOST,
+					1,
+					this.scribe.scanner.currentPosition);
 			this.scribe.enterAlignment(assignmentAlignment);
 			boolean ok = false;
 			do {
@@ -1642,9 +1678,10 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		Alignment messageAlignment) {
 
 		if (messageAlignment != null) {
-			this.scribe.alignFragment(messageAlignment, 0);
+			if (!this.preferences.wrap_outer_expressions_when_nested || messageAlignment.canAlign()) {
+				this.scribe.alignFragment(messageAlignment, 0);
+			}
 			this.scribe.printNextToken(TerminalTokens.TokenNameDOT);
-			messageAlignment.startingColumn = -1;
 		}
 		TypeReference[] typeArguments = messageSend.typeArguments;
 		if (typeArguments != null) {
@@ -1678,14 +1715,21 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int argumentsLength = arguments.length;
 			if (argumentsLength > 1) {
+				int alignmentMode = this.preferences.alignment_for_arguments_in_method_invocation;
 				Alignment argumentsAlignment = this.scribe.createAlignment(
-						"messageArguments", //$NON-NLS-1$
-						this.preferences.alignment_for_arguments_in_method_invocation,
+						Alignment.MESSAGE_ARGUMENTS,
+						alignmentMode,
 						argumentsLength,
 						this.scribe.scanner.currentPosition);
 				this.scribe.enterAlignment(argumentsAlignment);
 				boolean ok = false;
 				do {
+					switch (alignmentMode & Alignment.SPLIT_MASK) {
+						case Alignment.M_COMPACT_SPLIT:
+						case Alignment.M_NEXT_PER_LINE_SPLIT:
+							argumentsAlignment.startingColumn = this.scribe.column;
+							break;
+					}
 					try {
 						for (int i = 0; i < argumentsLength; i++) {
 							if (i > 0) {
@@ -1696,7 +1740,18 @@ public class CodeFormatterVisitor extends ASTVisitor {
 							if (i > 0 && this.preferences.insert_space_after_comma_in_method_invocation_arguments) {
 								this.scribe.space();
 							}
+							int fragmentIndentation = 0;
+							if (i == 0) {
+								int wrappedIndex = argumentsAlignment.wrappedIndex();
+								if (wrappedIndex >= 0) {
+									fragmentIndentation = argumentsAlignment.fragmentIndentations[wrappedIndex];
+									if ((argumentsAlignment.mode & Alignment.M_INDENT_ON_COLUMN) != 0 && fragmentIndentation > 0) {
+										this.scribe.indentationLevel = fragmentIndentation;
+									}
+								}
+							}
 							arguments[i].traverse(this, scope);
+							argumentsAlignment.startingColumn = -1;
 						}
 						ok = true;
 					} catch (AlignmentException e) {
@@ -1705,16 +1760,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				} while (!ok);
 				this.scribe.exitAlignment(argumentsAlignment, true);
 			} else {
-				for (int i = 0; i < argumentsLength; i++) {
-					if (i > 0) {
-						this.scribe.printNextToken(TerminalTokens.TokenNameCOMMA, this.preferences.insert_space_before_comma_in_method_invocation_arguments);
-						this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
-					}
-					if (i > 0 && this.preferences.insert_space_after_comma_in_method_invocation_arguments) {
-						this.scribe.space();
-					}
-					arguments[i].traverse(this, scope);
-				}
+				arguments[0].traverse(this, scope);
 			}
 			this.scribe.printNextToken(TerminalTokens.TokenNameRPAREN, this.preferences.insert_space_before_closing_paren_in_method_invocation);
 		} else {
@@ -1741,13 +1787,19 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int argumentLength = arguments.length;
 			Alignment argumentsAlignment = this.scribe.createAlignment(
-					"methodArguments",//$NON-NLS-1$
+					Alignment.METHOD_ARGUMENTS,
 					methodDeclarationParametersAlignment,
 					argumentLength,
 					this.scribe.scanner.currentPosition);
 			this.scribe.enterAlignment(argumentsAlignment);
 			boolean ok = false;
 			do {
+				switch (methodDeclarationParametersAlignment & Alignment.SPLIT_MASK) {
+					case Alignment.M_COMPACT_SPLIT:
+					case Alignment.M_NEXT_PER_LINE_SPLIT:
+						argumentsAlignment.startingColumn = this.scribe.column;
+						break;
+				}
 				try {
 					for (int i = 0; i < argumentLength; i++) {
 						if (i > 0) {
@@ -1755,10 +1807,16 @@ public class CodeFormatterVisitor extends ASTVisitor {
 							this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
 						}
 						this.scribe.alignFragment(argumentsAlignment, i);
-						if (i > 0 && spaceAfterComma) {
+						if (i == 0) {
+							int fragmentIndentation = argumentsAlignment.fragmentIndentations[0];
+							if ((argumentsAlignment.mode & Alignment.M_INDENT_ON_COLUMN) != 0 && fragmentIndentation > 0) {
+								this.scribe.indentationLevel = fragmentIndentation;
+							}
+						} else if (spaceAfterComma) {
 							this.scribe.space();
 						}
 						arguments[i].traverse(this, methodDeclaration.scope);
+						argumentsAlignment.startingColumn = -1;
 					}
 					ok = true;
 				} catch (AlignmentException e) {
@@ -1792,7 +1850,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		if (arguments != null) {
 			int argumentLength = arguments.length;
 			Alignment argumentsAlignment = this.scribe.createAlignment(
-					"enumConstantArguments",//$NON-NLS-1$
+					Alignment.ENUM_CONSTANTS_ARGUMENTS,
 					methodDeclarationParametersAlignment,
 					argumentLength,
 					this.scribe.scanner.currentPosition);
@@ -1930,7 +1988,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		if (thrownExceptions != null) {
 			int thrownExceptionsLength = thrownExceptions.length;
 			Alignment throwsAlignment = this.scribe.createAlignment(
-					"throws",//$NON-NLS-1$
+					Alignment.THROWS,
 					alignmentForThrowsClause,
 					thrownExceptionsLength, // throws is the first token
 					this.scribe.scanner.currentPosition);
@@ -1968,7 +2026,11 @@ public class CodeFormatterVisitor extends ASTVisitor {
 	 * Merged traversal of member (types, fields, methods)
 	 */
 	private void formatTypeMembers(TypeDeclaration typeDeclaration) {
-		Alignment memberAlignment = this.scribe.createMemberAlignment("typeMembers", this.preferences.align_type_members_on_columns ? Alignment.M_MULTICOLUMN : Alignment.M_NO_ALIGNMENT, 3, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+		Alignment memberAlignment = this.scribe.createMemberAlignment(
+				Alignment.TYPE_MEMBERS,
+				this.preferences.align_type_members_on_columns ? Alignment.M_MULTICOLUMN : Alignment.M_NO_ALIGNMENT,
+				3,
+				this.scribe.scanner.currentPosition);
 		this.scribe.enterMemberAlignment(memberAlignment);
 		ASTNode[] members = computeMergedMemberDeclarations(typeDeclaration);
 		boolean isChunkStart = false;
@@ -2021,7 +2083,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 							isChunkStart = memberAlignment.checkChunkStart(Alignment.CHUNK_TYPE, i, this.scribe.scanner.currentPosition);
 							format((TypeDeclaration)member, typeDeclaration.scope, isChunkStart, i == 0);
 						}
-						if (isNextToken(TerminalTokens.TokenNameSEMICOLON)) {
+						while (isNextToken(TerminalTokens.TokenNameSEMICOLON)) {
 							this.scribe.printNextToken(TerminalTokens.TokenNameSEMICOLON, this.preferences.insert_space_before_semicolon);
 							this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
 						}
@@ -2329,7 +2391,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int argumentLength = arguments.length;
 			Alignment argumentsAlignment =this.scribe.createAlignment(
-					"allocation",//$NON-NLS-1$
+					Alignment.ALLOCATION,
 					this.preferences.alignment_for_arguments_in_allocation_expression,
 					argumentLength,
 					this.scribe.scanner.currentPosition);
@@ -2530,7 +2592,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 					this.scribe.printNewLine();
 				}
 				Alignment arrayInitializerAlignment =this.scribe.createAlignment(
-						"array_initializer",//$NON-NLS-1$
+						Alignment.ARRAY_INITIALIZER,
 						this.preferences.alignment_for_expressions_in_array_initializer,
 						Alignment.R_OUTERMOST,
 						expressionsLength,
@@ -2803,7 +2865,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			this.scribe.space();
 		}
 
-		Alignment assignmentAlignment = this.scribe.createAlignment("assignmentAlignment", this.preferences.alignment_for_assignment, Alignment.R_OUTERMOST, 1, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+		Alignment assignmentAlignment = this.scribe.createAlignment(
+				Alignment.ASSIGNMENT,
+				this.preferences.alignment_for_assignment,
+				Alignment.R_OUTERMOST,
+				1,
+				this.scribe.scanner.currentPosition);
 		this.scribe.enterAlignment(assignmentAlignment);
 		boolean ok = false;
 		do {
@@ -3128,7 +3195,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		if (this.preferences.insert_space_after_assignment_operator) {
 			this.scribe.space();
 		}
-		Alignment assignmentAlignment = this.scribe.createAlignment("compoundAssignmentAlignment", this.preferences.alignment_for_assignment, Alignment.R_OUTERMOST, 1, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+		Alignment assignmentAlignment = this.scribe.createAlignment(
+				Alignment.COMPOUND_ASSIGNMENT,
+				this.preferences.alignment_for_assignment,
+				Alignment.R_OUTERMOST,
+				1,
+				this.scribe.scanner.currentPosition);
 		this.scribe.enterAlignment(assignmentAlignment);
 		boolean ok = false;
 		do {
@@ -3162,7 +3234,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
     	conditionalExpression.condition.traverse(this, scope);
 
     	Alignment conditionalExpressionAlignment =this.scribe.createAlignment(
-    			"conditionalExpression", //$NON-NLS-1$
+    			Alignment.CONDITIONAL_EXPRESSION,
     			this.preferences.alignment_for_conditional_expression,
     			2,
     			this.scribe.scanner.currentPosition);
@@ -3318,8 +3390,10 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				if (this.preferences.indent_statements_compare_to_body) {
 					this.scribe.unIndent();
 				}
-			} else if (this.preferences.insert_new_line_in_empty_method_body) {
-				this.scribe.printNewLine();
+			} else {
+				if (this.preferences.insert_new_line_in_empty_method_body) {
+					this.scribe.printNewLine();
+				}
 				if (this.preferences.indent_statements_compare_to_body) {
 					this.scribe.indent();
 				}
@@ -3567,7 +3641,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int argumentLength = arguments.length;
 			Alignment argumentsAlignment =this.scribe.createAlignment(
-					"explicit_constructor_call",//$NON-NLS-1$
+					Alignment.EXPLICIT_CONSTRUCTOR_CALL,
 					this.preferences.alignment_for_arguments_in_explicit_constructor_call,
 					argumentLength,
 					this.scribe.scanner.currentPosition);
@@ -3826,7 +3900,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				}
 			} else if (elseStatement == null && this.preferences.keep_simple_if_on_one_line) {
 				Alignment compactIfAlignment = this.scribe.createAlignment(
-						"compactIf", //$NON-NLS-1$
+						Alignment.COMPACT_IF,
 						this.preferences.alignment_for_compact_if,
 						Alignment.R_OUTERMOST,
 						1,
@@ -4064,14 +4138,14 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				messageSend.receiver.traverse(this, scope);
 				int alignmentMode = this.preferences.alignment_for_selector_in_method_invocation;
 				messageAlignment = this.scribe.createAlignment(
-						"messageAlignment", //$NON-NLS-1$
+						Alignment.MESSAGE_SEND,
 						alignmentMode,
 						1,
 						this.scribe.scanner.currentPosition);
 				this.scribe.enterAlignment(messageAlignment);
 				boolean ok = false;
 				do {
-					switch (alignmentMode) {
+					switch (alignmentMode & Alignment.SPLIT_MASK) {
 						case Alignment.M_COMPACT_SPLIT:
 						case Alignment.M_NEXT_PER_LINE_SPLIT:
 							messageAlignment.startingColumn = this.scribe.column;
@@ -4134,7 +4208,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 
 		// Create alignment
 		Alignment methodDeclAlignment = this.scribe.createAlignment(
-				"methodDeclaration",//$NON-NLS-1$
+				Alignment.METHOD_DECLARATION,
 				this.preferences.alignment_for_method_declaration,
 				Alignment.R_INNERMOST,
 				3,
@@ -4252,8 +4326,10 @@ public class CodeFormatterVisitor extends ASTVisitor {
 				if (this.preferences.indent_statements_compare_to_body) {
 					this.scribe.unIndent();
 				}
-			} else if (this.preferences.insert_new_line_in_empty_method_body) {
-				this.scribe.printNewLine();
+			} else {
+				if (this.preferences.insert_new_line_in_empty_method_body) {
+					this.scribe.printNewLine();
+				}
 				if (this.preferences.indent_statements_compare_to_body) {
 					this.scribe.indent();
 				}
@@ -4289,7 +4365,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		if (memberValuePairs != null) {
 			int length = memberValuePairs.length;
 			Alignment annotationAlignment = this.scribe.createAlignment(
-					"annotationMemberValuePairs",//$NON-NLS-1$
+					Alignment.ANNOTATION_MEMBERS_VALUE_PAIRS,
 					this.preferences.alignment_for_arguments_in_annotation,
 					length,
 					this.scribe.scanner.currentPosition);
@@ -4637,7 +4713,7 @@ public class CodeFormatterVisitor extends ASTVisitor {
 			}
 			int argumentLength = arguments.length;
 			Alignment argumentsAlignment =this.scribe.createAlignment(
-					"allocation",//$NON-NLS-1$
+					Alignment.ALLOCATION,
 					this.preferences.alignment_for_arguments_in_qualified_allocation_expression,
 					argumentLength,
 					this.scribe.scanner.currentPosition);
@@ -4896,7 +4972,12 @@ public class CodeFormatterVisitor extends ASTVisitor {
 		this.scribe.printComment();
 		ASTNode[] fragments = stringLiteral.literals;
 		int fragmentsSize = stringLiteral.counter;
-		Alignment binaryExpressionAlignment = this.scribe.createAlignment("binaryExpressionAlignment", this.preferences.alignment_for_binary_expression, Alignment.R_OUTERMOST, fragmentsSize, this.scribe.scanner.currentPosition); //$NON-NLS-1$
+		Alignment binaryExpressionAlignment = this.scribe.createAlignment(
+				Alignment.STRING_CONCATENATION,
+				this.preferences.alignment_for_binary_expression,
+				Alignment.R_OUTERMOST,
+				fragmentsSize,
+				this.scribe.scanner.currentPosition);
 		this.scribe.enterAlignment(binaryExpressionAlignment);
 		boolean ok = false;
 		do {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
index 2ff67d8..0e6bf72 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
@@ -117,8 +117,11 @@ public class DefaultCodeFormatterOptions {
 	public boolean comment_insert_new_line_for_parameter;
 	public int comment_line_length;
 
+	public boolean use_tags;
 	public char[] disabling_tag;
 	public char[] enabling_tag;
+	private final static char[] DEFAULT_DISABLING_TAG = "@formatter:off".toCharArray(); //$NON-NLS-1$
+	private final static char[] DEFAULT_ENABLING_TAG = "@formatter:on".toCharArray(); //$NON-NLS-1$
 
 	public boolean indent_statements_compare_to_block;
 	public boolean indent_statements_compare_to_body;
@@ -322,6 +325,7 @@ public class DefaultCodeFormatterOptions {
 	public int tab_char;
 	public boolean use_tabs_only_for_leading_indentations;
 	public boolean wrap_before_binary_operator;
+	public boolean wrap_outer_expressions_when_nested;
 
 	public int initial_indentation_level;
 	public String line_separator;
@@ -618,6 +622,8 @@ public class DefaultCodeFormatterOptions {
 		options.put(DefaultCodeFormatterConstants.FORMATTER_WRAP_BEFORE_BINARY_OPERATOR, this.wrap_before_binary_operator ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_DISABLING_TAG, this.disabling_tag == null ? Util.EMPTY_STRING : new String(this.disabling_tag));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ENABLING_TAG, this.enabling_tag == null ? Util.EMPTY_STRING : new String(this.enabling_tag));
+		options.put(DefaultCodeFormatterConstants.FORMATTER_USE_ON_OFF_TAGS, this.use_tags ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
+		options.put(DefaultCodeFormatterConstants.FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED, this.wrap_outer_expressions_when_nested ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		return options;
 	}
 
@@ -1955,6 +1961,10 @@ public class DefaultCodeFormatterOptions {
 		if (wrapBeforeBinaryOperatorOption != null) {
 			this.wrap_before_binary_operator = DefaultCodeFormatterConstants.TRUE.equals(wrapBeforeBinaryOperatorOption);
 		}
+		final Object useTags = settings.get(DefaultCodeFormatterConstants.FORMATTER_USE_ON_OFF_TAGS);
+		if (useTags != null) {
+			this.use_tags = DefaultCodeFormatterConstants.TRUE.equals(useTags);
+		}
 		final Object disableTagOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_DISABLING_TAG);
 		if (disableTagOption != null) {
 			if (disableTagOption instanceof String) {
@@ -1967,7 +1977,7 @@ public class DefaultCodeFormatterOptions {
 					if (tag.length() == 0) {
 						this.disabling_tag = null;
 					} else {
-					this.disabling_tag = tag.toCharArray();
+						this.disabling_tag = tag.toCharArray();
 					}
 				}
 			}
@@ -1984,11 +1994,15 @@ public class DefaultCodeFormatterOptions {
 					if (tag.length() == 0) {
 						this.enabling_tag = null;
 					} else {
-					this.enabling_tag = tag.toCharArray();
+						this.enabling_tag = tag.toCharArray();
 					}
 				}
 			}
 		}
+		final Object wrapWrapOuterExpressionsWhenNestedOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED);
+		if (wrapWrapOuterExpressionsWhenNestedOption != null) {
+			this.wrap_outer_expressions_when_nested = DefaultCodeFormatterConstants.TRUE.equals(wrapWrapOuterExpressionsWhenNestedOption);
+		}
 	}
 
 	/**
@@ -2299,6 +2313,10 @@ public class DefaultCodeFormatterOptions {
 		this.tab_char = TAB; // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=49081
 		this.use_tabs_only_for_leading_indentations = false;
 		this.wrap_before_binary_operator = true;
+		this.use_tags = false;
+		this.disabling_tag = DEFAULT_DISABLING_TAG;
+		this.enabling_tag = DEFAULT_ENABLING_TAG;
+		this.wrap_outer_expressions_when_nested = true;
 	}
 
 	public void setEclipseDefaultSettings() {
@@ -2570,5 +2588,9 @@ public class DefaultCodeFormatterOptions {
 		this.tab_char = MIXED;
 		this.use_tabs_only_for_leading_indentations = false;
 		this.wrap_before_binary_operator = true;
+		this.use_tags = false;
+		this.disabling_tag = DEFAULT_DISABLING_TAG;
+		this.enabling_tag = DEFAULT_ENABLING_TAG;
+		this.wrap_outer_expressions_when_nested = true;
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/Scribe.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/Scribe.java
index c9c26b3..c46b4f2 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/Scribe.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/Scribe.java
@@ -83,6 +83,7 @@ public class Scribe implements IJavaDocTagConstants {
 
 	// Line separator infos
 	final private String lineSeparator;
+	final private String lineSeparatorAndSpace;
 	final private char firstLS;
 	final private int lsLength;
 
@@ -105,7 +106,8 @@ public class Scribe implements IJavaDocTagConstants {
 	int blank_lines_between_import_groups = -1;
 
 	/** disabling */
-	boolean editsEnabled = true;
+	boolean editsEnabled;
+	boolean useTags;
 
 	/* Comments formatting */
 	private static final int INCLUDE_BLOCK_COMMENTS = CodeFormatter.F_INCLUDE_COMMENTS | CodeFormatter.K_MULTI_LINE_COMMENT;
@@ -138,6 +140,21 @@ public class Scribe implements IJavaDocTagConstants {
 	OptimizedReplaceEdit previousDisabledEdit;
 	private char[] disablingTag, enablingTag;
 
+	// Well know strings
+	private String[] newEmptyLines = new String[10];
+	private static String[] COMMENT_INDENTATIONS = new String[20];
+
+	// final string buffers
+	private final StringBuffer tempBuffer= new StringBuffer();
+	private final StringBuffer blockCommentBuffer = new StringBuffer();
+	private final StringBuffer blockCommentTokensBuffer = new StringBuffer();
+	private final StringBuffer codeSnippetBuffer = new StringBuffer();
+	private final StringBuffer javadocBlockRefBuffer= new StringBuffer();
+	private final StringBuffer javadocGapLinesBuffer = new StringBuffer();
+	private StringBuffer[] javadocHtmlTagBuffers = new StringBuffer[5];
+	private final StringBuffer javadocTextBuffer = new StringBuffer();
+	private final StringBuffer javadocTokensBuffer = new StringBuffer();
+
 	Scribe(CodeFormatterVisitor formatter, long sourceLevel, IRegion[] regions, CodeSnippetParsingUtil codeSnippetParsingUtil, boolean includeComments) {
 		initializeScanner(sourceLevel, formatter.preferences);
 		this.formatter = formatter;
@@ -154,6 +171,7 @@ public class Scribe implements IJavaDocTagConstants {
 			this.indentationSize = this.tabLength;
 		}
 		this.lineSeparator = formatter.preferences.line_separator;
+		this.lineSeparatorAndSpace = this.lineSeparator+' ';
 		this.firstLS = this.lineSeparator.charAt(0);
 		this.lsLength = this.lineSeparator.length();
 		this.indentationLevel = formatter.preferences.initial_indentation_level * this.indentationSize;
@@ -427,11 +445,7 @@ public class Scribe implements IJavaDocTagConstants {
 							if (linesCount == 0) {
 				    			edit.replacement = ""; //$NON-NLS-1$
 							} else {
-								StringBuffer buffer = new StringBuffer();
-								for (int j=0; j<linesCount; j++) {
-									buffer.append(this.lineSeparator);
-								}
-								edit.replacement = buffer.toString();
+								edit.replacement = getNewLineString(linesCount);
 							}
 						}
 					}
@@ -595,24 +609,24 @@ public class Scribe implements IJavaDocTagConstants {
 	    return INVALID_TOKEN;
     }
 
-	public Alignment createAlignment(String name, int mode, int count, int sourceRestart){
-		return createAlignment(name, mode, Alignment.R_INNERMOST, count, sourceRestart);
+	public Alignment createAlignment(int kind, int mode, int count, int sourceRestart){
+		return createAlignment(kind, mode, Alignment.R_INNERMOST, count, sourceRestart);
 	}
 
-	public Alignment createAlignment(String name, int mode, int count, int sourceRestart, boolean adjust){
-		return createAlignment(name, mode, Alignment.R_INNERMOST, count, sourceRestart, adjust);
+	public Alignment createAlignment(int kind, int mode, int count, int sourceRestart, boolean adjust){
+		return createAlignment(kind, mode, Alignment.R_INNERMOST, count, sourceRestart, adjust);
 	}
 
-	public Alignment createAlignment(String name, int mode, int tieBreakRule, int count, int sourceRestart){
-		return createAlignment(name, mode, tieBreakRule, count, sourceRestart, this.formatter.preferences.continuation_indentation, false);
+	public Alignment createAlignment(int kind, int mode, int tieBreakRule, int count, int sourceRestart){
+		return createAlignment(kind, mode, tieBreakRule, count, sourceRestart, this.formatter.preferences.continuation_indentation, false);
 	}
 
-	public Alignment createAlignment(String name, int mode, int count, int sourceRestart, int continuationIndent, boolean adjust){
-		return createAlignment(name, mode, Alignment.R_INNERMOST, count, sourceRestart, continuationIndent, adjust);
+	public Alignment createAlignment(int kind, int mode, int count, int sourceRestart, int continuationIndent, boolean adjust){
+		return createAlignment(kind, mode, Alignment.R_INNERMOST, count, sourceRestart, continuationIndent, adjust);
 	}
 
-	public Alignment createAlignment(String name, int mode, int tieBreakRule, int count, int sourceRestart, int continuationIndent, boolean adjust){
-		Alignment alignment = new Alignment(name, mode, tieBreakRule, this, count, sourceRestart, continuationIndent);
+	public Alignment createAlignment(int kind, int mode, int tieBreakRule, int count, int sourceRestart, int continuationIndent, boolean adjust){
+		Alignment alignment = new Alignment(kind, mode, tieBreakRule, this, count, sourceRestart, continuationIndent);
 		// adjust break indentation
 		if (adjust && this.memberAlignment != null) {
 			Alignment current = this.memberAlignment;
@@ -674,8 +688,8 @@ public class Scribe implements IJavaDocTagConstants {
 		return alignment;
 	}
 
-	public Alignment createMemberAlignment(String name, int mode, int count, int sourceRestart) {
-		Alignment mAlignment = createAlignment(name, mode, Alignment.R_INNERMOST, count, sourceRestart);
+	public Alignment createMemberAlignment(int kind, int mode, int count, int sourceRestart) {
+		Alignment mAlignment = createAlignment(kind, mode, Alignment.R_INNERMOST, count, sourceRestart);
 		mAlignment.breakIndentationLevel = this.indentationLevel;
 		return mAlignment;
 	}
@@ -724,13 +738,6 @@ public class Scribe implements IJavaDocTagConstants {
 		this.memberAlignment = current.enclosing;
 	}
 
-	public Alignment getAlignment(String name){
-		if (this.currentAlignment != null) {
-			return this.currentAlignment.getAlignment(name);
-		}
-		return null;
-	}
-
 	/**
 	 * Answer actual indentation level based on true column position
 	 * @return int
@@ -937,12 +944,18 @@ public class Scribe implements IJavaDocTagConstants {
 		if (this.nlsTagCounter > 0) {
 			return Util.EMPTY_STRING;
 		}
-		StringBuffer buffer = new StringBuffer();
+		String emptyLines;
 		if (this.lastNumberOfNewLines == 0) {
 			linesNumber++; // add an extra line breaks
-			for (int i = 0; i < linesNumber; i++) {
-				if (this.indentEmptyLines) printIndentationIfNecessary(buffer);
-				buffer.append(this.lineSeparator);
+			if (this.indentEmptyLines) {
+				this.tempBuffer.setLength(0);
+				for (int i = 0; i < linesNumber; i++) {
+					printIndentationIfNecessary(this.tempBuffer);
+					this.tempBuffer.append(this.lineSeparator);
+				}
+				emptyLines = this.tempBuffer.toString();
+			} else {
+				emptyLines = getNewLineString(linesNumber);
 			}
 			this.lastNumberOfNewLines += linesNumber;
 			this.line += linesNumber;
@@ -950,9 +963,15 @@ public class Scribe implements IJavaDocTagConstants {
 			this.needSpace = false;
 			this.pendingSpace = false;
 		} else if (this.lastNumberOfNewLines == 1) {
-			for (int i = 0; i < linesNumber; i++) {
-				if (this.indentEmptyLines) printIndentationIfNecessary(buffer);
-				buffer.append(this.lineSeparator);
+			if (this.indentEmptyLines) {
+				this.tempBuffer.setLength(0);
+				for (int i = 0; i < linesNumber; i++) {
+					printIndentationIfNecessary(this.tempBuffer);
+					this.tempBuffer.append(this.lineSeparator);
+				}
+				emptyLines = this.tempBuffer.toString();
+			} else {
+				emptyLines = getNewLineString(linesNumber);
 			}
 			this.lastNumberOfNewLines += linesNumber;
 			this.line += linesNumber;
@@ -965,9 +984,15 @@ public class Scribe implements IJavaDocTagConstants {
 				return Util.EMPTY_STRING;
 			}
 			final int realNewLineNumber = linesNumber - this.lastNumberOfNewLines + 1;
-			for (int i = 0; i < realNewLineNumber; i++) {
-				if (this.indentEmptyLines) printIndentationIfNecessary(buffer);
-				buffer.append(this.lineSeparator);
+			if (this.indentEmptyLines) {
+				this.tempBuffer.setLength(0);
+				for (int i = 0; i < realNewLineNumber; i++) {
+					printIndentationIfNecessary(this.tempBuffer);
+					this.tempBuffer.append(this.lineSeparator);
+				}
+				emptyLines = this.tempBuffer.toString();
+			} else {
+				emptyLines = getNewLineString(realNewLineNumber);
 			}
 			this.lastNumberOfNewLines += realNewLineNumber;
 			this.line += realNewLineNumber;
@@ -975,7 +1000,7 @@ public class Scribe implements IJavaDocTagConstants {
 			this.needSpace = false;
 			this.pendingSpace = false;
 		}
-		return String.valueOf(buffer);
+		return emptyLines;
 	}
 
 	private int getIndexOfAdaptedRegionAt(int offset) {
@@ -1033,6 +1058,23 @@ public class Scribe implements IJavaDocTagConstants {
 		return this.lineSeparator;
 	}
 
+	private String getNewLineString(int linesCount) {
+		int length = this.newEmptyLines.length;
+		if (linesCount > length) {
+			System.arraycopy(this.newEmptyLines, 0, this.newEmptyLines = new String[linesCount+10], 0, length);
+		}
+		String newLineString = this.newEmptyLines[linesCount-1];
+		if (newLineString == null) {
+			this.tempBuffer.setLength(0);
+			for (int j=0; j<linesCount; j++) {
+				this.tempBuffer.append(this.lineSeparator);
+			}
+			newLineString = this.tempBuffer.toString();
+			this.newEmptyLines[linesCount-1] = newLineString;
+		}
+		return newLineString;
+	}
+
 	/**
 	 * Answer next indentation level based on column estimated position
 	 * (if column is not indented, then use indentationLevel)
@@ -1085,7 +1127,8 @@ public class Scribe implements IJavaDocTagConstants {
 					this.indentationLevel = this.currentAlignment.location.outputIndentationLevel;
 
 					// Create new line
-					StringBuffer buffer = new StringBuffer(getNewLine());
+					this.tempBuffer.setLength(0);
+					this.tempBuffer.append(getNewLine());
 					
 					// Look for current indentation
 					int currentIndentation = getCurrentIndentation(this.scanner.currentPosition);
@@ -1105,11 +1148,11 @@ public class Scribe implements IJavaDocTagConstants {
 						// skip
 					}
 					this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
-					boolean canUseAlignmentIndentation = (nextToken != TerminalTokens.TokenNameLBRACE || !this.currentAlignment.name.equals("localDeclarationAssignmentAlignment")); //$NON-NLS-1$
+					boolean canUseAlignmentIndentation = (nextToken != TerminalTokens.TokenNameLBRACE || this.currentAlignment.kind != Alignment.LOCAL_DECLARATION_ASSIGNMENT);
 					if (canUseAlignmentIndentation &&
 							(!this.formatBrace ||
-									this.currentAlignment.name.equals("array_initializer") || //$NON-NLS-1$
-									this.currentAlignment.name.equals("binaryExpressionAlignment")) && //$NON-NLS-1$
+									this.currentAlignment.kind == Alignment.ARRAY_INITIALIZER ||
+									this.currentAlignment.kind == Alignment.BINARY_EXPRESSION) &&
 							this.indentationLevel < this.currentAlignment.breakIndentationLevel) {
 						this.indentationLevel = this.currentAlignment.breakIndentationLevel;
 					}
@@ -1142,8 +1185,8 @@ public class Scribe implements IJavaDocTagConstants {
 					this.preserveLineBreakIndentation = true;
 					
 					// Print the computed indentation in the buffer
-					printIndentationIfNecessary(buffer);
-					return buffer.toString();
+					printIndentationIfNecessary(this.tempBuffer);
+					return this.tempBuffer.toString();
 				}
 			}
 			return Util.EMPTY_STRING;
@@ -1215,6 +1258,10 @@ public class Scribe implements IJavaDocTagConstants {
 	}
 
 	public void handleLineTooLong() {
+		if (this.formatter.preferences.wrap_outer_expressions_when_nested) {
+			handleLineTooLongSmartly();
+			return;
+		}
 		// search for closest breakable alignment, using tiebreak rules
 		// look for outermost breakable one
 		int relativeDepth = 0, outerMostDepth = -1;
@@ -1242,6 +1289,79 @@ public class Scribe implements IJavaDocTagConstants {
 		// did not find any breakable location - proceed
 	}
 
+	private void handleLineTooLongSmartly() {
+		// search for closest breakable alignment, using tiebreak rules
+		// look for outermost breakable one
+		int relativeDepth = 0, outerMostDepth = -1;
+		Alignment targetAlignment = this.currentAlignment;
+		int previousKind = -1;
+		int insideMessage = 0;
+		boolean insideStringConcat = false;
+		while (targetAlignment != null){
+			boolean couldBreak = targetAlignment.tieBreakRule == Alignment.R_OUTERMOST ||
+				(!insideStringConcat &&
+						insideMessage > 0 && targetAlignment.kind == Alignment.MESSAGE_ARGUMENTS &&
+						(!targetAlignment.wasReset() || previousKind != Alignment.MESSAGE_SEND));
+			if (couldBreak && targetAlignment.couldBreak()){
+				outerMostDepth = relativeDepth;
+			}
+			switch (targetAlignment.kind) {
+				case Alignment.MESSAGE_ARGUMENTS:
+				case Alignment.MESSAGE_SEND:
+					insideMessage++;
+					break;
+				case Alignment.STRING_CONCATENATION:
+					insideStringConcat = true;
+					break;
+			}
+			previousKind = targetAlignment.kind;
+			targetAlignment = targetAlignment.enclosing;
+			relativeDepth++;
+		}
+		if (outerMostDepth >= 0) {
+			throw new AlignmentException(AlignmentException.LINE_TOO_LONG, outerMostDepth);
+		}
+		// look for innermost breakable one
+		relativeDepth = 0;
+		targetAlignment = this.currentAlignment;
+		AlignmentException alignmentException = null;
+		int msgArgsDepth = -1;
+		while (targetAlignment != null) {
+			if (targetAlignment.kind == Alignment.MESSAGE_ARGUMENTS) {
+				msgArgsDepth = relativeDepth;
+			}
+			if (alignmentException == null) {
+				if (targetAlignment.couldBreak()) {
+					// do not throw the exception immediately to have a chance to reset
+					// previously broken alignments (see bug 203588)
+					alignmentException = new AlignmentException(AlignmentException.LINE_TOO_LONG, relativeDepth);
+					if (insideStringConcat) throw alignmentException;
+				}
+			} else if (targetAlignment.wasSplit) {
+				// reset the nearest already broken outermost alignment.
+				// Note that it's not done twice to avoid infinite loop while raising
+				// the exception on an innermost alignment...
+				if (!targetAlignment.wasReset()) {
+					targetAlignment.reset();
+					if (msgArgsDepth > alignmentException.relativeDepth) {
+						alignmentException.relativeDepth = msgArgsDepth;
+					}
+					throw alignmentException;
+				}
+			}
+			targetAlignment = targetAlignment.enclosing;
+			relativeDepth++;
+		}
+		if (alignmentException != null) {
+			throw alignmentException;
+		}
+		// did not find any breakable location - proceed
+		if (this.currentAlignment != null) {
+			this.currentAlignment.blockAlign = false;
+			this.currentAlignment.tooLong = true;
+		}
+	}
+
 	/*
 	 * Check if there is a NLS tag on this line. If yes, return true, returns false otherwise.
 	 */
@@ -1295,21 +1415,23 @@ public class Scribe implements IJavaDocTagConstants {
 	}
 
 	private void initializeScanner(long sourceLevel, DefaultCodeFormatterOptions preferences) {
-		this.disablingTag = preferences.disabling_tag;
-		this.enablingTag = preferences.enabling_tag;
-		char[][] taskTags;
-		if (this.disablingTag == null) {
-			if (this.enablingTag == null) {
-				taskTags = null;
+		this.useTags = preferences.use_tags;
+		char[][] taskTags = null;
+		if (this.useTags) {
+			this.disablingTag = preferences.disabling_tag;
+			this.enablingTag = preferences.enabling_tag;
+			if (this.disablingTag == null) {
+				if (this.enablingTag != null) {
+					taskTags = new char[][] { this.enablingTag };
+				}
+			} else if (this.enablingTag == null) {
+				taskTags = new char[][] { this.disablingTag };
 			} else {
-				taskTags = new char[][] { this.enablingTag };
+				taskTags = new char[][] { this.disablingTag, this.enablingTag };
 			}
-		} else if (this.enablingTag == null) {
-			taskTags = new char[][] { this.disablingTag };
-		} else {
-			taskTags = new char[][] { this.disablingTag, this.enablingTag };
 		}
 		this.scanner = new Scanner(true, true, false/*nls*/, sourceLevel/*sourceLevel*/, taskTags, null/*taskPriorities*/, true/*taskCaseSensitive*/);
+		this.editsEnabled = true;
 	}
 
 	private void initFormatterCommentParser() {
@@ -1497,13 +1619,8 @@ public class Scribe implements IJavaDocTagConstants {
 							this.line++;
 							isNewLine = false;
 
-							StringBuffer buffer = new StringBuffer();
+							boolean addSpace = false;
 							if (onFirstColumn) {
-								// simply insert indentation if necessary
-								buffer.append(this.lineSeparator);
-								if (indentComment) {
-									printIndentationIfNecessary(buffer);
-								}
 								if (formatComment) {
 									if (ScannerHelper.isWhitespace((char) currentCharacter)) {
 										int previousStartPosition = this.scanner.currentPosition;
@@ -1518,7 +1635,7 @@ public class Scribe implements IJavaDocTagConstants {
 										}
 									}
 									if (currentCharacter != '\r' && currentCharacter != '\n') {
-										buffer.append(' ');
+										addSpace = true;
 									}
 								}
 							} else {
@@ -1552,10 +1669,6 @@ public class Scribe implements IJavaDocTagConstants {
 										nextCharacterStart = previousStartPosition;
 									}
 								}
-								buffer.append(this.lineSeparator);
-								if (indentComment) {
-									printIndentationIfNecessary(buffer);
-								}
 								if (formatComment) {
 									int previousStartTemp = previousStart;
 									int nextCharacterStartTemp = nextCharacterStart;
@@ -1565,7 +1678,7 @@ public class Scribe implements IJavaDocTagConstants {
 										nextCharacterStart = this.scanner.currentPosition;
 									}
 									if (currentCharacter == '*') {
-										buffer.append(' ');
+										addSpace = true;
 									} else {
 										previousStart = previousStartTemp;
 										nextCharacterStart = nextCharacterStartTemp;
@@ -1573,7 +1686,21 @@ public class Scribe implements IJavaDocTagConstants {
 									this.scanner.currentPosition = nextCharacterStart;
 								}
 							}
-							addReplaceEdit(start, previousStart - 1, String.valueOf(buffer));
+							String replacement;
+							if (indentComment) {
+								this.tempBuffer.setLength(0);
+								this.tempBuffer.append(this.lineSeparator);
+								if (this.indentationLevel > 0) {
+									printIndentationIfNecessary(this.tempBuffer);
+								}
+								if (addSpace) {
+									this.tempBuffer.append(' ');
+								}
+								replacement = this.tempBuffer.toString();
+							} else {
+								replacement = addSpace ? this.lineSeparatorAndSpace : this.lineSeparator;
+							}
+							addReplaceEdit(start, previousStart - 1, replacement);
 						} else {
 							this.column += (nextCharacterStart - previousStart);
 						}
@@ -1635,12 +1762,12 @@ public class Scribe implements IJavaDocTagConstants {
 		}
 
 		// Consume the comment prefix
-		StringBuffer buffer = new StringBuffer();
+		this.blockCommentBuffer.setLength(0);
 		this.scanner.getNextChar();
 		this.scanner.getNextChar();
 		this.column += 2;
 		this.scanner.skipComments = true;
-		StringBuffer tokensBuffer = new StringBuffer();
+		this.blockCommentTokensBuffer.setLength(0);
 		int editStart = this.scanner.currentPosition;
 		int editEnd = -1;
 
@@ -1678,14 +1805,14 @@ public class Scribe implements IJavaDocTagConstants {
     		boolean isTokenStar = false;
 			switch (token) {
 				case TerminalTokens.TokenNameWHITESPACE:
-					if (tokensBuffer.length() > 0) {
+					if (this.blockCommentTokensBuffer.length() > 0) {
 						if (hasTextOnFirstLine == 1 && multiLines) {
-							printBlockCommentHeaderLine(buffer);
+							printBlockCommentHeaderLine(this.blockCommentBuffer);
 							hasTextOnFirstLine = -1;
 						}
-						buffer.append(tokensBuffer);
-						this.column += tokensBuffer.length();
-						tokensBuffer.setLength(0);
+						this.blockCommentBuffer.append(this.blockCommentTokensBuffer);
+						this.column += this.blockCommentTokensBuffer.length();
+						this.blockCommentTokensBuffer.setLength(0);
 						bufferHasTokens = true;
 						bufferHasNewLine = false;
 					}
@@ -1706,25 +1833,25 @@ public class Scribe implements IJavaDocTagConstants {
 					isTokenStar = true;
 					lineNumber = Util.getLineNumber(this.scanner.currentPosition, this.lineEnds, scannerLine>1 ? scannerLine-2 : 0, this.maxLines);
 					if (lineNumber == firstLine && previousToken == SKIP_FIRST_WHITESPACE_TOKEN) {
-						buffer.append(' ');
+						this.blockCommentBuffer.append(' ');
 					}
 					previousToken = token;
 					if (this.scanner.currentCharacter == '/') {
 						editEnd = this.scanner.startPosition - 1;
 						// Add remaining buffered tokens
-						if (tokensBuffer.length() > 0) {
-							buffer.append(tokensBuffer);
-							this.column += tokensBuffer.length();
+						if (this.blockCommentTokensBuffer.length() > 0) {
+							this.blockCommentBuffer.append(this.blockCommentTokensBuffer);
+							this.column += this.blockCommentTokensBuffer.length();
 						}
 						// end of comment
 						if (newLinesAtBoundaries) {
 							if (multiLines || hasMultiLines) {
-						    	buffer.append(this.lineSeparator);
+						    	this.blockCommentBuffer.append(this.lineSeparator);
 						    	this.column = 1;
-						    	printIndentationIfNecessary(buffer);
+						    	printIndentationIfNecessary(this.blockCommentBuffer);
 							}
 						}
-						buffer.append(' ');
+						this.blockCommentBuffer.append(' ');
 						this.column += BLOCK_FOOTER_LENGTH + 1;
 				    	this.scanner.getNextChar(); // reach the end of scanner
 				    	continue;
@@ -1789,19 +1916,19 @@ public class Scribe implements IJavaDocTagConstants {
 				}
 				for (int i=0; i<linesGap; i++) {
 					// Add remaining buffered tokens
-					if (tokensBuffer.length() > 0) {
+					if (this.blockCommentTokensBuffer.length() > 0) {
 						if (hasTextOnFirstLine == 1) {
-							printBlockCommentHeaderLine(buffer);
+							printBlockCommentHeaderLine(this.blockCommentBuffer);
 							hasTextOnFirstLine = -1;
 						}
-						buffer.append(tokensBuffer);
-						tokensBuffer.setLength(0);
+						this.blockCommentBuffer.append(this.blockCommentTokensBuffer);
+						this.blockCommentTokensBuffer.setLength(0);
 						bufferHasTokens = true;
 					}
-			    	buffer.append(this.lineSeparator);
+			    	this.blockCommentBuffer.append(this.lineSeparator);
 			    	this.column = 1;
-			    	printIndentationIfNecessary(buffer);
-		    		buffer.append(BLOCK_LINE_PREFIX);
+			    	printIndentationIfNecessary(this.blockCommentBuffer);
+		    		this.blockCommentBuffer.append(BLOCK_LINE_PREFIX);
 		    		this.column += BLOCK_LINE_PREFIX_LENGTH;
 		    		firstWord = true;
 					multiLines = true;
@@ -1824,39 +1951,39 @@ public class Scribe implements IJavaDocTagConstants {
 	    			hasTextOnFirstLine = -1;
 	    		}
     		}
-    		int lastColumn = this.column + tokensBuffer.length() + tokenLength;
+    		int lastColumn = this.column + this.blockCommentTokensBuffer.length() + tokenLength;
     		if (insertSpace) lastColumn++;
 
     		// Append next token inserting a new line if max line is reached
 			if (lineHasTokens && !firstWord && lastColumn > maxColumn) {
-		    	String tokensString = tokensBuffer.toString().trim();
+		    	String tokensString = this.blockCommentTokensBuffer.toString().trim();
 		    	int tokensStringLength = tokensString.length();
 				// not enough space on the line
 				if (hasTextOnFirstLine == 1) {
-					printBlockCommentHeaderLine(buffer);
+					printBlockCommentHeaderLine(this.blockCommentBuffer);
 				}
 				if ((this.indentationLevel+tokensStringLength+tokenLength) > maxColumn) {
 					// there won't be enough room even if we break the line before the buffered tokens
 					// So add the buffered tokens now
-					buffer.append(tokensBuffer);
-					this.column += tokensBuffer.length();
-					tokensBuffer.setLength(0);
+					this.blockCommentBuffer.append(this.blockCommentTokensBuffer);
+					this.column += this.blockCommentTokensBuffer.length();
+					this.blockCommentTokensBuffer.setLength(0);
 					bufferHasNewLine = false;
 					bufferHasTokens = true;
 				}
 				if (bufferHasTokens && !bufferHasNewLine) {
-			    	buffer.append(this.lineSeparator);
+			    	this.blockCommentBuffer.append(this.lineSeparator);
 			    	this.column = 1;
-			    	printIndentationIfNecessary(buffer);
-		    		buffer.append(BLOCK_LINE_PREFIX);
+			    	printIndentationIfNecessary(this.blockCommentBuffer);
+		    		this.blockCommentBuffer.append(BLOCK_LINE_PREFIX);
 			    	this.column += BLOCK_LINE_PREFIX_LENGTH;
 				}
-		    	if (tokensBuffer.length() > 0) {
-					buffer.append(tokensString);
+		    	if (this.blockCommentTokensBuffer.length() > 0) {
+					this.blockCommentBuffer.append(tokensString);
 					this.column += tokensStringLength;
-					tokensBuffer.setLength(0);
+					this.blockCommentTokensBuffer.setLength(0);
 		    	}
-				buffer.append(this.scanner.source, tokenStart, tokenLength);
+				this.blockCommentBuffer.append(this.scanner.source, tokenStart, tokenLength);
 				bufferHasTokens = true;
 				bufferHasNewLine = false;
 				this.column += tokenLength;
@@ -1865,9 +1992,9 @@ public class Scribe implements IJavaDocTagConstants {
 			} else {
 				// append token to the line
 				if (insertSpace)  {
-					tokensBuffer.append(' ');
+					this.blockCommentTokensBuffer.append(' ');
 				}
-				tokensBuffer.append(this.scanner.source, tokenStart, tokenLength);
+				this.blockCommentTokensBuffer.append(this.scanner.source, tokenStart, tokenLength);
 			}
 			previousToken = token;
 			newLine = false;
@@ -1879,8 +2006,10 @@ public class Scribe implements IJavaDocTagConstants {
 		// Replace block comment text
 		if (this.nlsTagCounter == 0 || !multiLines) {
 			if (hasTokens || multiLines) {
-				StringBuffer replacement = new StringBuffer();
+				StringBuffer replacement;
 				if (hasTextOnFirstLine == 1) {
+					this.blockCommentTokensBuffer.setLength(0);
+					replacement = this.blockCommentTokensBuffer;
 					if ((hasMultiLines || multiLines)) {
 						int col = this.column;
 						replacement.append(this.lineSeparator);
@@ -1888,11 +2017,13 @@ public class Scribe implements IJavaDocTagConstants {
 						printIndentationIfNecessary(replacement);
 						replacement.append(BLOCK_LINE_PREFIX);
 				    	this.column = col;
-					} else if (buffer.length()==0 || buffer.charAt(0)!=' ') {
+					} else if (this.blockCommentBuffer.length()==0 || this.blockCommentBuffer.charAt(0)!=' ') {
 						replacement.append(' ');
 					}
+					replacement.append(this.blockCommentBuffer);
+				} else {
+					replacement = this.blockCommentBuffer;
 				}
-				replacement.append(buffer);
 				addReplaceEdit(editStart, editEnd, replacement.toString());
 			}
 		}
@@ -1919,13 +2050,13 @@ public class Scribe implements IJavaDocTagConstants {
 	    	buffer.append(BLOCK_LINE_PREFIX);
 	    	this.column += BLOCK_LINE_PREFIX_LENGTH;
 	    } else {
-	    	StringBuffer insert = new StringBuffer();
-	    	insert.append(this.lineSeparator);
+	    	this.tempBuffer.setLength(0);
+	    	this.tempBuffer.append(this.lineSeparator);
 	    	this.column = 1;
-	    	printIndentationIfNecessary(insert);
-	    	insert.append(BLOCK_LINE_PREFIX);
+			printIndentationIfNecessary(this.tempBuffer);
+	    	this.tempBuffer.append(BLOCK_LINE_PREFIX);
 	    	this.column += BLOCK_LINE_PREFIX_LENGTH;
-	    	buffer.insert(0, insert.toString());
+	    	buffer.insert(0, this.tempBuffer.toString());
 	    }
     }
 
@@ -2058,16 +2189,16 @@ public class Scribe implements IJavaDocTagConstants {
 		// 1 - strip content prefix (@see JavaDocRegion#preprocessCodeSnippet)
 		int firstLine = Util.getLineNumber(startPosition, this.lineEnds, 0, this.maxLines) - 1;
 		int lastLine = Util.getLineNumber(endPosition, this.lineEnds, firstLine>1 ? firstLine-2 : 0, this.maxLines) - 1;
-		StringBuffer inputBuffer= new StringBuffer();
+		this.codeSnippetBuffer.setLength(0);
 		if (firstLine == lastLine && linesGap == 0) {
-			inputBuffer.append(snippet);
+			this.codeSnippetBuffer.append(snippet);
 		} else {
 			boolean hasCharsAfterStar = false;
 			if (linesGap == 0) {
-				inputBuffer.append(this.scanner.source, startPosition, this.lineEnds[firstLine]+1-startPosition);
+				this.codeSnippetBuffer.append(this.scanner.source, startPosition, this.lineEnds[firstLine]+1-startPosition);
 				firstLine++;
 			}
-			int initialLength = inputBuffer.length();
+			int initialLength = this.codeSnippetBuffer.length();
 			for (int currentLine=firstLine; currentLine<=lastLine; currentLine++) {
 				this.scanner.resetTo(this.lineEnds[currentLine-1]+1, this.lineEnds[currentLine]);
 				int lineStart = this.scanner.currentPosition;
@@ -2114,7 +2245,7 @@ public class Scribe implements IJavaDocTagConstants {
 										// consuming the space after the star
 										hasCharsAfterStar = true;
 										currentLine = firstLine-1;
-										inputBuffer.setLength(initialLength);
+										this.codeSnippetBuffer.setLength(initialLength);
 										continue;
 									}
 								}
@@ -2129,13 +2260,13 @@ public class Scribe implements IJavaDocTagConstants {
 					}
 				}
 				int end = currentLine == lastLine ? endPosition : this.lineEnds[currentLine];
-				inputBuffer.append(this.scanner.source, lineStart, end+1-lineStart);
+				this.codeSnippetBuffer.append(this.scanner.source, lineStart, end+1-lineStart);
 			}
 		}
 	
 		// 2 - convert HTML to Java (@see JavaDocRegion#convertHtml2Java)
-		HTMLEntity2JavaReader reader= new HTMLEntity2JavaReader(new StringReader(inputBuffer.toString()));
-		char[] buf= new char[inputBuffer.length()]; // html2text never gets longer, only shorter!
+		HTMLEntity2JavaReader reader= new HTMLEntity2JavaReader(new StringReader(this.codeSnippetBuffer.toString()));
+		char[] buf= new char[this.codeSnippetBuffer.length()]; // html2text never gets longer, only shorter!
 		String convertedSnippet;
 		try {
 			int read= reader.read(buf);
@@ -2156,7 +2287,7 @@ public class Scribe implements IJavaDocTagConstants {
 		TextEdit edit= CommentFormatterUtil.format2(CodeFormatter.K_UNKNOWN | CodeFormatter.F_INCLUDE_COMMENTS, convertedSnippet, 0, this.lineSeparator, options);
 		if (edit == null) {
 			// 3.a - not a valid code to format, keep initial buffer
-			formattedSnippet = inputBuffer.toString();
+			formattedSnippet = this.codeSnippetBuffer.toString();
 		} else {
 			// 3.b - valid code formatted
 			// 3.b.i - get the result
@@ -2165,15 +2296,15 @@ public class Scribe implements IJavaDocTagConstants {
 			// 3.b.ii- convert back to HTML (@see JavaDocRegion#convertJava2Html)
 			Java2HTMLEntityReader javaReader= new Java2HTMLEntityReader(new StringReader(formattedSnippet));
 			buf= new char[256];
-			StringBuffer conversionBuffer= new StringBuffer();
+			this.codeSnippetBuffer.setLength(0);
 			int l;
 			try {
 				do {
 					l= javaReader.read(buf);
 					if (l != -1)
-						conversionBuffer.append(buf, 0, l);
+						this.codeSnippetBuffer.append(buf, 0, l);
 				} while (l > 0);
-				formattedSnippet = conversionBuffer.toString();
+				formattedSnippet = this.codeSnippetBuffer.toString();
 			} catch (IOException e) {
 				// should not happen
 				CommentFormatterUtil.log(e);
@@ -2182,32 +2313,32 @@ public class Scribe implements IJavaDocTagConstants {
 		}
 	
 		// 4 - add the content prefix (@see JavaDocRegion#postprocessCodeSnippet)
-		StringBuffer outputBuffer = new StringBuffer();
+		this.codeSnippetBuffer.setLength(0);
 		ILineTracker tracker = new DefaultLineTracker();
 		this.column = 1;
-		printIndentationIfNecessary(outputBuffer); // append indentation
-		outputBuffer.append(BLOCK_LINE_PREFIX);
-		String linePrefix = outputBuffer.toString();
-		outputBuffer.setLength(0);
+		printIndentationIfNecessary(this.codeSnippetBuffer); // append indentation
+		this.codeSnippetBuffer.append(BLOCK_LINE_PREFIX);
+		String linePrefix = this.codeSnippetBuffer.toString();
+		this.codeSnippetBuffer.setLength(0);
 		String replacement = formattedSnippet;
 		tracker.set(formattedSnippet);
 		int numberOfLines = tracker.getNumberOfLines();
 		if (numberOfLines > 1) {
 			int lastLineOffset = -1;
 			for (int i=0; i<numberOfLines-1; i++) {
-				if (i>0) outputBuffer.append(linePrefix);
+				if (i>0) this.codeSnippetBuffer.append(linePrefix);
 				try {
 					lastLineOffset = tracker.getLineOffset(i+1);
-					outputBuffer.append(formattedSnippet.substring(tracker.getLineOffset(i), lastLineOffset));
+					this.codeSnippetBuffer.append(formattedSnippet.substring(tracker.getLineOffset(i), lastLineOffset));
 				} catch (BadLocationException e) {
 					// should not happen
 					CommentFormatterUtil.log(e);
 					return;
 				}
 			}
-			outputBuffer.append(linePrefix);
-			outputBuffer.append(formattedSnippet.substring(lastLineOffset));
-			replacement = outputBuffer.toString();
+			this.codeSnippetBuffer.append(linePrefix);
+			this.codeSnippetBuffer.append(formattedSnippet.substring(lastLineOffset));
+			replacement = this.codeSnippetBuffer.toString();
 		}
 	
 		// 5 - replace old text with the formatted snippet
@@ -2357,7 +2488,7 @@ public class Scribe implements IJavaDocTagConstants {
 						currentTokenStartPosition = this.scanner.currentPosition;
 						break;
 					case TerminalTokens.TokenNameCOMMENT_LINE :
-						if (this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 							if (!this.editsEnabled && this.editsIndex > 1) {
 								OptimizedReplaceEdit currentEdit = this.edits[this.editsIndex-1];
@@ -2382,12 +2513,12 @@ public class Scribe implements IJavaDocTagConstants {
 						currentTokenStartPosition = this.scanner.currentPosition;
 						hasLineComment = true;
 						lines = 0;
-						if (!this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && !this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 						}
 						break;
 					case TerminalTokens.TokenNameCOMMENT_BLOCK :
-						if (this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 							if (!this.editsEnabled && this.editsIndex > 1) {
 								OptimizedReplaceEdit currentEdit = this.edits[this.editsIndex-1];
@@ -2419,12 +2550,12 @@ public class Scribe implements IJavaDocTagConstants {
 						hasLineComment = false;
 						hasComment = true;
 						lines = 0;
-						if (!this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && !this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 						}
 						break;
 					case TerminalTokens.TokenNameCOMMENT_JAVADOC :
-						if (this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 							if (!this.editsEnabled && this.editsIndex > 1) {
 								OptimizedReplaceEdit currentEdit = this.edits[this.editsIndex-1];
@@ -2456,7 +2587,7 @@ public class Scribe implements IJavaDocTagConstants {
 						} else {
 							printBlockComment(true);
 						}
-						if (!this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
+						if (this.useTags && !this.editsEnabled && foundTaskCount > previousFoundTaskCount) {
 							setEditsEnabled(foundTaskCount, previousFoundTaskCount);
 						}
 						printNewLine();
@@ -2560,7 +2691,7 @@ public class Scribe implements IJavaDocTagConstants {
 			   			commentIndentationLevel = this.column - 1;
 					}
 				} else {
-					if (this.currentAlignment != null && this.currentAlignment.name.equals("array_initializer") && //$NON-NLS-1$
+					if (this.currentAlignment != null && this.currentAlignment.kind == Alignment.ARRAY_INITIALIZER &&
 						this.indentationLevel < this.currentAlignment.breakIndentationLevel &&
 						this.lastLineComment.lines > 0)
 					{
@@ -2743,14 +2874,15 @@ public class Scribe implements IJavaDocTagConstants {
 					this.lastNumberOfNewLines++;
 					this.line++;
 					if (newLineString == null) {
-						StringBuffer newLineBuffer = new StringBuffer(this.lineSeparator);
+						this.tempBuffer.setLength(0);
+						this.tempBuffer.append(this.lineSeparator);
 						this.column = 1;
 						if (!this.formatter.preferences.never_indent_line_comments_on_first_column) {
-							printIndentationIfNecessary(newLineBuffer);
+							printIndentationIfNecessary(this.tempBuffer);
 						}
-					    newLineBuffer.append(LINE_COMMENT_PREFIX);
+					    this.tempBuffer.append(LINE_COMMENT_PREFIX);
 						this.column += LINE_COMMENT_PREFIX_LENGTH;
-						newLineString = newLineBuffer.toString();
+						newLineString = this.tempBuffer.toString();
 				    	firstColumn = this.column;
 					} else {
 						this.column = firstColumn;
@@ -2815,10 +2947,10 @@ public class Scribe implements IJavaDocTagConstants {
 	}
 
 	void printIndentationIfNecessary() {
-		StringBuffer buffer = new StringBuffer();
-		printIndentationIfNecessary(buffer);
-		if (buffer.length() > 0) {
-			addInsertEdit(this.scanner.getCurrentTokenStartPosition(), buffer.toString());
+		this.tempBuffer.setLength(0);
+		printIndentationIfNecessary(this.tempBuffer);
+		if (this.tempBuffer.length() > 0) {
+			addInsertEdit(this.scanner.getCurrentTokenStartPosition(), this.tempBuffer.toString());
 			this.pendingSpace = false;
 		}
 	}
@@ -2946,15 +3078,7 @@ public class Scribe implements IJavaDocTagConstants {
 						commentIndentationLevel += this.indentationSize;
 					}
 				}
-				if (commentIndentationLevel == 0) {
-				    this.commentIndentation = null;
-				} else {
-		    		StringBuffer indentationBuffer = new StringBuffer();
-		        	for (int i=0; i<commentIndentationLevel; i++) {
-		    			indentationBuffer.append(' ');
-		        	}
-	        		this.commentIndentation = indentationBuffer.toString();
-		    	}
+				setCommentIndentation(commentIndentationLevel);
 			}
 			FormatJavadocReference reference= block.reference;
 			if (reference != null) {
@@ -3006,12 +3130,12 @@ public class Scribe implements IJavaDocTagConstants {
 						printJavadocGapLines(previousEnd+1, nodeStart-1, newLines, clearBlankLines, false, null);
 					}
 				} else {
-					StringBuffer buffer = new StringBuffer();
+					this.tempBuffer.setLength(0);
 					if (newLines > 0) {
 						for (int j=0; j<newLines; j++) {
-							printJavadocNewLine(buffer);
+							printJavadocNewLine(this.tempBuffer);
 						}
-						addInsertEdit(nodeStart, buffer.toString());
+						addInsertEdit(nodeStart, this.tempBuffer.toString());
 					}
 				}
 			} else {
@@ -3081,11 +3205,13 @@ public class Scribe implements IJavaDocTagConstants {
 				FormatJavadocBlock inlinedBlock = (FormatJavadocBlock)node;
 				if (isImmutableNode) {
 					text = (FormatJavadocText) inlinedBlock.getLastNode();
-		    		length += inlinedBlock.tagEnd - inlinedBlock.sourceStart + 1;  // tag length
-			    	if (nodeStart > (previousEnd+1)) {
-			    		length++; // include space between nodes
-			    	}
-					this.scanner.resetTo(text.sourceStart , node.sourceEnd);
+					if (text != null) {
+			    		length += inlinedBlock.tagEnd - inlinedBlock.sourceStart + 1;  // tag length
+				    	if (nodeStart > (previousEnd+1)) {
+				    		length++; // include space between nodes
+				    	}
+						this.scanner.resetTo(text.sourceStart , node.sourceEnd);
+					}
 				}
 			}
 	    	if (text != null) {
@@ -3213,7 +3339,7 @@ public class Scribe implements IJavaDocTagConstants {
 
 		// First we need to know what is the indentation
 		this.scanner.resetTo(block.tagEnd+1, reference.sourceEnd);
-		StringBuffer buffer = new StringBuffer();
+		this.javadocBlockRefBuffer.setLength(0);
 		boolean needFormat = false;
 		int previousToken = -1;
 		int spacePosition = -1;
@@ -3232,10 +3358,10 @@ public class Scribe implements IJavaDocTagConstants {
 							case TerminalTokens.TokenNameLPAREN:
 								break;
 							default:	// space between method arguments
-								spacePosition = buffer.length();
+								spacePosition = this.javadocBlockRefBuffer.length();
 								// $FALL-THROUGH$ - fall through next case
 							case -1:
-								buffer.append(' ');
+								this.javadocBlockRefBuffer.append(' ');
 								this.column++;
 								break;
 						}
@@ -3248,29 +3374,30 @@ public class Scribe implements IJavaDocTagConstants {
 							this.lastNumberOfNewLines++;
 							this.line++;
 							if (newLineString == null) {
-								StringBuffer newLineBuffer = new StringBuffer(this.lineSeparator);
+								this.tempBuffer.setLength(0);
+								this.tempBuffer.append(this.lineSeparator);
 						    	this.column = 1;
-						    	printIndentationIfNecessary(newLineBuffer);
-					    		newLineBuffer.append(BLOCK_LINE_PREFIX);
+						    	printIndentationIfNecessary(this.tempBuffer);
+					    		this.tempBuffer.append(BLOCK_LINE_PREFIX);
 					    		this.column += BLOCK_LINE_PREFIX_LENGTH;
 								if (this.commentIndentation != null) {
-							    	newLineBuffer.append(this.commentIndentation);
+							    	this.tempBuffer.append(this.commentIndentation);
 							    	this.column += this.commentIndentation.length();
 						    	}
-						    	newLineString = newLineBuffer.substring(0, newLineBuffer.length()-1); // remove last space as buffer will be inserted before a space
+						    	newLineString = this.tempBuffer.substring(0, this.tempBuffer.length()-1); // remove last space as buffer will be inserted before a space
 						    	firstColumn = this.column;
 							} else {
 								this.column = firstColumn;
 							}
-							this.column = firstColumn + buffer.length() - spacePosition - 1;
-							buffer.insert(spacePosition, newLineString);
+							this.column = firstColumn + this.javadocBlockRefBuffer.length() - spacePosition - 1;
+							this.javadocBlockRefBuffer.insert(spacePosition, newLineString);
 							if (headerLine) {
 								headerLine = false;
 								maxColumn--;
 							}
 							spacePosition = -1;
 						}
-						buffer.append(this.scanner.source, this.scanner.startPosition, tokenLength);
+						this.javadocBlockRefBuffer.append(this.scanner.source, this.scanner.startPosition, tokenLength);
 			    		this.column += tokenLength;
 			    		break;
 				}
@@ -3280,7 +3407,7 @@ public class Scribe implements IJavaDocTagConstants {
 			}
 		}
 		if (needFormat) {
-		    addReplaceEdit(block.tagEnd+1, reference.sourceEnd, buffer.toString());
+		    addReplaceEdit(block.tagEnd+1, reference.sourceEnd, this.javadocBlockRefBuffer.toString());
 		}
     }
 
@@ -3440,23 +3567,23 @@ public class Scribe implements IJavaDocTagConstants {
 			// if there's no enough room to replace text, then insert the gap
 			if (textStartPosition > textEndPosition) {
 				if (newLines > 0) {
-					StringBuffer buffer = new StringBuffer();
+					this.javadocGapLinesBuffer.setLength(0);
 					for (int i=0; i<newLines; i++) {
-						buffer.append(this.lineSeparator);
+						this.javadocGapLinesBuffer.append(this.lineSeparator);
 						this.column = 1;
-						printIndentationIfNecessary(buffer);
+						printIndentationIfNecessary(this.javadocGapLinesBuffer);
 						if (footer) {
-							buffer.append(' ');
+							this.javadocGapLinesBuffer.append(' ');
 							this.column++;
 						} else {
-							buffer.append(BLOCK_LINE_PREFIX);
+							this.javadocGapLinesBuffer.append(BLOCK_LINE_PREFIX);
 							this.column += BLOCK_LINE_PREFIX_LENGTH;
 						}
 					}
 					if (output == null) {
-						addInsertEdit(textStartPosition, buffer.toString());
+						addInsertEdit(textStartPosition, this.javadocGapLinesBuffer.toString());
 					} else {
-						output.append(buffer);
+						output.append(this.javadocGapLinesBuffer);
 					}
 				}
 				return;
@@ -3477,10 +3604,10 @@ public class Scribe implements IJavaDocTagConstants {
 						// we just need to replace each lines between '*' with the javadoc formatted ones
 						int linesGap = this.scanner.linePtr - linePtr;
 						if (linesGap > 0) {
-							StringBuffer buffer = new StringBuffer();
+							this.javadocGapLinesBuffer.setLength(0);
 							if (lineCount > 0) {
 								// TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=49619
-								buffer.append( ' ');
+								this.javadocGapLinesBuffer.append( ' ');
 							}
 							for (int i = 0; i < linesGap ; i++) {
 								if (clearBlankLines && lineCount >= newLines) {
@@ -3488,21 +3615,21 @@ public class Scribe implements IJavaDocTagConstants {
 									// so remove any remaining blanks and leave
 									if (textEndPosition >= start) {
 										if (output == null) {
-											addReplaceEdit(start, textEndPosition, buffer.toString());
+											addReplaceEdit(start, textEndPosition, this.javadocGapLinesBuffer.toString());
 										} else {
-											output.append(buffer);
+											output.append(this.javadocGapLinesBuffer);
 										}
 									}
 									return;
 								}
-								buffer.append(this.lineSeparator);
+								this.javadocGapLinesBuffer.append(this.lineSeparator);
 								this.column = 1;
-								printIndentationIfNecessary(buffer);
+								printIndentationIfNecessary(this.javadocGapLinesBuffer);
 								if (i == (linesGap-1)) {
-									buffer.append(' ');
+									this.javadocGapLinesBuffer.append(' ');
 									this.column++;
 								} else {
-									buffer.append(BLOCK_LINE_PREFIX);
+									this.javadocGapLinesBuffer.append(BLOCK_LINE_PREFIX);
 									this.column += BLOCK_LINE_PREFIX_LENGTH;
 								}
 								lineCount++;
@@ -3510,9 +3637,9 @@ public class Scribe implements IJavaDocTagConstants {
 							int currentTokenStartPosition = this.scanner.getCurrentTokenStartPosition();
 							int tokenLength = this.scanner.currentPosition - currentTokenStartPosition;
 							if (output == null) {
-								addReplaceEdit(start, currentTokenStartPosition-1, buffer.toString());
+								addReplaceEdit(start, currentTokenStartPosition-1, this.javadocGapLinesBuffer.toString());
 							} else {
-								output.append(buffer);
+								output.append(this.javadocGapLinesBuffer);
 								output.append(this.scanner.source, currentTokenStartPosition, tokenLength);
 							}
 							this.column += tokenLength;
@@ -3539,51 +3666,51 @@ public class Scribe implements IJavaDocTagConstants {
 			// Format the last whitespaces
 			if (lineCount < newLines) {
 				// Insert new lines as not enough was encountered while scanning the whitespaces
-				StringBuffer buffer = new StringBuffer();
+				this.javadocGapLinesBuffer.setLength(0);
 				if (lineCount > 0) {
 					// TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=49619
-					buffer.append( ' ');
+					this.javadocGapLinesBuffer.append( ' ');
 				}
 				for (int i = lineCount; i < newLines-1; i++) {
-					printJavadocNewLine(buffer);
+					printJavadocNewLine(this.javadocGapLinesBuffer);
 				}
-				buffer.append(this.lineSeparator);
+				this.javadocGapLinesBuffer.append(this.lineSeparator);
 				this.column = 1;
-				printIndentationIfNecessary(buffer);
+				printIndentationIfNecessary(this.javadocGapLinesBuffer);
 				if (footer) {
-					buffer.append(' ');
+					this.javadocGapLinesBuffer.append(' ');
 					this.column++;
 				} else {
-					buffer.append(BLOCK_LINE_PREFIX);
+					this.javadocGapLinesBuffer.append(BLOCK_LINE_PREFIX);
 					this.column += BLOCK_LINE_PREFIX_LENGTH;
 				}
 				if (output == null) {
 					if (textEndPosition >= start) {
-						addReplaceEdit(start, textEndPosition, buffer.toString());
+						addReplaceEdit(start, textEndPosition, this.javadocGapLinesBuffer.toString());
 					} else {
-						addInsertEdit(textEndPosition+1, buffer.toString());
+						addInsertEdit(textEndPosition+1, this.javadocGapLinesBuffer.toString());
 					}
 				} else {
-					output.append(buffer);
+					output.append(this.javadocGapLinesBuffer);
 				}
 			} else {
 				// Replace all remaining whitespaces by a single space
 				if (textEndPosition >= start) {
-					StringBuffer buffer = new StringBuffer();
+					this.javadocGapLinesBuffer.setLength(0);
 					if (this.scanner.linePtr > linePtr) {
 						if (lineCount > 0) {
 							// TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=49619
-							buffer.append( ' ');
+							this.javadocGapLinesBuffer.append(' ');
 						}
-						buffer.append(this.lineSeparator);
+						this.javadocGapLinesBuffer.append(this.lineSeparator);
 						this.column = 1;
-						printIndentationIfNecessary(buffer);
+						printIndentationIfNecessary(this.javadocGapLinesBuffer);
 					}
-					buffer.append(' ');
+					this.javadocGapLinesBuffer.append(' ');
 					if (output == null) {
-						addReplaceEdit(start, textEndPosition, buffer.toString());
+						addReplaceEdit(start, textEndPosition, this.javadocGapLinesBuffer.toString());
 					} else {
-						output.append(buffer);
+						output.append(this.javadocGapLinesBuffer);
 					}
 					this.needSpace = false;
 				} else if (endsOnMultiply) {
@@ -3615,7 +3742,7 @@ public class Scribe implements IJavaDocTagConstants {
 			// Iterate on text line separators
 			int textLineStart = text.lineStart;
 			this.scanner.tokenizeWhiteSpace = false;
-			StringBuffer buffer = null;
+			String newLineString = null;
 			for (int idx=0, max=text.separatorsPtr; idx<=max ; idx++) {
 				int start = (int) text.separators[idx];
 				int lineStart = Util.getLineNumber(start, this.lineEnds, textLineStart-1, this.maxLines);
@@ -3633,14 +3760,15 @@ public class Scribe implements IJavaDocTagConstants {
 					if (this.scanner.currentCharacter == ' ') {
 						this.scanner.getNextChar();
 					}
-					if (buffer == null) {
-						buffer = new StringBuffer();
+					if (newLineString == null) {
+						this.tempBuffer.setLength(0);
 						this.column = 1;
-						printIndentationIfNecessary(buffer);
-						buffer.append(BLOCK_LINE_PREFIX);
+						printIndentationIfNecessary(this.tempBuffer);
+						this.tempBuffer.append(BLOCK_LINE_PREFIX);
 						this.column += BLOCK_LINE_PREFIX_LENGTH;
+						newLineString = this.tempBuffer.toString();
 					}
-					addReplaceEdit(end+1, this.scanner.getCurrentTokenEndPosition(), buffer.toString());
+					addReplaceEdit(end+1, this.scanner.getCurrentTokenEndPosition(), newLineString);
 					textLineStart++;
 				}
 			}
@@ -3678,7 +3806,7 @@ public class Scribe implements IJavaDocTagConstants {
 		int lineEnd = Util.getLineNumber(block.nodes[0].sourceEnd, this.lineEnds, lineStart-1, this.maxLines);
 		boolean multiLinesBlock = lineEnd > (lineStart+1);
 		int previousPosition = this.scanner.currentPosition;
-		StringBuffer buffer = null;
+		String newLineString = null;
 		int indentationColumn = 0;
 		int leadingSpaces = -1;
 
@@ -3712,17 +3840,18 @@ public class Scribe implements IJavaDocTagConstants {
 					}
 					// print indentation if there were spaces without any star on the line
 					if (leadingSpaces > 0 && multiLinesBlock) {
-						if (buffer == null) {
-							buffer = new StringBuffer();
+						if (newLineString == null) {
 							this.column = 1;
-							printIndentationIfNecessary(buffer);
-							buffer.append(BLOCK_LINE_PREFIX);
+							this.tempBuffer.setLength(0);
+							printIndentationIfNecessary(this.tempBuffer);
+							this.tempBuffer.append(BLOCK_LINE_PREFIX);
 							this.column += BLOCK_LINE_PREFIX_LENGTH;
+							newLineString = this.tempBuffer.toString();
 							indentationColumn = this.column;
 						} else {
 							this.column = indentationColumn;
 						}
-						addReplaceEdit(newLineStart, newLineStart+indentationColumn-2, buffer.toString());
+						addReplaceEdit(newLineStart, newLineStart+indentationColumn-2, newLineString);
 					}
 					// store line start and reset positions
 					newLineStart = this.scanner.currentPosition;
@@ -3750,17 +3879,18 @@ public class Scribe implements IJavaDocTagConstants {
 						} else {
 							// print indentation before the following characters
 							if (offset == 0 && multiLinesBlock) {
-								if (buffer == null) {
-									buffer = new StringBuffer();
+								if (newLineString == null) {
+									this.tempBuffer.setLength(0);
 									this.column = 1;
-									printIndentationIfNecessary(buffer);
-									buffer.append(BLOCK_LINE_PREFIX);
+									printIndentationIfNecessary(this.tempBuffer);
+									this.tempBuffer.append(BLOCK_LINE_PREFIX);
 									this.column += BLOCK_LINE_PREFIX_LENGTH;
 									indentationColumn = this.column;
+									newLineString = this.tempBuffer.toString();
 								} else {
 									this.column = indentationColumn;
 								}
-								addReplaceEdit(newLineStart, secondLineStart-1, buffer.toString());
+								addReplaceEdit(newLineStart, secondLineStart-1, newLineString);
 							}
 							offset++;
 						}
@@ -3789,30 +3919,32 @@ public class Scribe implements IJavaDocTagConstants {
 			addReplaceEdit(firstLineEnd, end, " "); //$NON-NLS-1$
 		}
 		else if (secondLineStart > 0) {
-			if (buffer == null) {
-				buffer = new StringBuffer();
+			if (newLineString == null) {
+				this.tempBuffer.setLength(0);
 				this.column = 1;
-				printIndentationIfNecessary(buffer);
-				buffer.append(BLOCK_LINE_PREFIX);
+				printIndentationIfNecessary(this.tempBuffer);
+				this.tempBuffer.append(BLOCK_LINE_PREFIX);
 				this.column += BLOCK_LINE_PREFIX_LENGTH;
+				newLineString = this.tempBuffer.toString();
 				indentationColumn = this.column;
 			} else {
 				this.column = indentationColumn;
 			}
-			addReplaceEdit(newLineStart, secondLineStart-1, buffer.toString());
+			addReplaceEdit(newLineStart, secondLineStart-1, newLineString);
 		}
 		else if (leadingSpaces > 0) {
-			if (buffer == null) {
-				buffer = new StringBuffer();
+			if (newLineString == null) {
+				this.tempBuffer.setLength(0);
 				this.column = 1;
-				printIndentationIfNecessary(buffer);
-				buffer.append(BLOCK_LINE_PREFIX);
+				printIndentationIfNecessary(this.tempBuffer);
+				this.tempBuffer.append(BLOCK_LINE_PREFIX);
 				this.column += BLOCK_LINE_PREFIX_LENGTH;
+				newLineString = this.tempBuffer.toString();
 				indentationColumn = this.column;
 			} else {
 				this.column = indentationColumn;
 			}
-			addReplaceEdit(newLineStart, newLineStart+indentationColumn-2, buffer.toString());
+			addReplaceEdit(newLineStart, newLineStart+indentationColumn-2, newLineString);
 		}
 
 		// Reset
@@ -3833,7 +3965,17 @@ public class Scribe implements IJavaDocTagConstants {
 		int nextStart = textStart;
 		int startLine = Util.getLineNumber(textStart, this.lineEnds, 0, this.maxLines);
 	    int htmlTagID = text.getHtmlTagID();
-	    StringBuffer buffer = new StringBuffer();
+	    if (text.depth >= this.javadocHtmlTagBuffers.length) {
+	    	int length = this.javadocHtmlTagBuffers.length;
+	    	System.arraycopy(this.javadocHtmlTagBuffers, 0, this.javadocHtmlTagBuffers = new StringBuffer[text.depth+6], 0, length);
+	    }
+	    StringBuffer buffer = this.javadocHtmlTagBuffers[text.depth];
+	    if (buffer == null) {
+	    	buffer = new StringBuffer();
+	    	this.javadocHtmlTagBuffers[text.depth] = buffer;
+	    } else {
+	    	buffer.setLength(0);
+	    }
 
 	    // New line will be added before next node
 	    int max = text.separatorsPtr;
@@ -3876,7 +4018,7 @@ public class Scribe implements IJavaDocTagConstants {
 					printJavadocGapLines(previousEnd+1, nodeStart-1, newLines, clearBlankLines, false, null);
 				}
 				if (newLines > 0) textOnNewLine = true;
-				buffer = new StringBuffer();
+				buffer.setLength(0);
 				if (node.isText()) {
 					if (immutable) {
 						// do not change immutable tags, just increment column
@@ -4042,13 +4184,13 @@ public class Scribe implements IJavaDocTagConstants {
 	    this.column += BLOCK_LINE_PREFIX_LENGTH;
 	    this.line++;
 	    this.lastNumberOfNewLines++;
-    }
+	}
 
 	private void printJavadocText(FormatJavadocText text, FormatJavadocBlock block, boolean textOnNewLine) {
 
 		boolean clearBlankLines = this.formatter.preferences.comment_clear_blank_lines_in_javadoc_comment;
 		boolean joinLines = this.formatter.preferences.join_lines_in_comments;
-		StringBuffer buffer = new StringBuffer();
+		this.javadocTextBuffer.setLength(0);
 		int textStart = text.sourceStart;
 		int nextStart = textStart;
 		int startLine = Util.getLineNumber(textStart, this.lineEnds, 0, this.maxLines);
@@ -4065,7 +4207,7 @@ public class Scribe implements IJavaDocTagConstants {
 				}
 			}
 			this.needSpace = idx > 0;
-			printJavadocTextLine(buffer, nextStart, end, block, idx==0 /*first text?*/, needIndentation, false /*not an html tag*/);
+			printJavadocTextLine(this.javadocTextBuffer, nextStart, end, block, idx==0 || (!joinLines && textOnNewLine)/*first text?*/, needIndentation, false /*not an html tag*/);
 			textOnNewLine = false;
 
 			// Replace with current buffer if there are several empty lines between text lines
@@ -4076,24 +4218,27 @@ public class Scribe implements IJavaDocTagConstants {
 				int gapLine = endLine;
 				if (joinLines) gapLine++; // if not preserving line break then gap must be at least of one line
 				if (startLine > gapLine) {
-					addReplaceEdit(textStart, end, buffer.toString());
+					addReplaceEdit(textStart, end, this.javadocTextBuffer.toString());
 					textStart = nextStart;
-					buffer.setLength(0);
+					this.javadocTextBuffer.setLength(0);
 					int newLines = startLine - endLine;
 					if (clearBlankLines) newLines = 1;
 					printJavadocGapLines(end+1, nextStart-1, newLines, this.formatter.preferences.comment_clear_blank_lines_in_javadoc_comment, false, null);
 					textOnNewLine = true;
 				}
+				else if (startLine > endLine) {
+					textOnNewLine = !joinLines;
+				}
 			}
 		}
 
 		// Replace remaining line
 		boolean needIndentation = textOnNewLine;
 		this.needSpace = text.separatorsPtr >= 0;
-		printJavadocTextLine(buffer, nextStart, text.sourceEnd, block, text.separatorsPtr==-1 /* first text?*/, needIndentation, false /*not an html tag*/);
+		printJavadocTextLine(this.javadocTextBuffer, nextStart, text.sourceEnd, block, text.separatorsPtr==-1 /* first text?*/, needIndentation, false /*not an html tag*/);
 		// TODO Bring back following optimization
 		// if (lastNewLines != this.lastNumberOfNewLines || (this.column - currentColumn) != (text.sourceEnd - text.sourceStart + 1)) {
-			addReplaceEdit(textStart, text.sourceEnd, buffer.toString());
+			addReplaceEdit(textStart, text.sourceEnd, this.javadocTextBuffer.toString());
 		// }
 
 		// Reset
@@ -4109,7 +4254,7 @@ public class Scribe implements IJavaDocTagConstants {
 		boolean headerLine = block.isHeaderLine() && this.lastNumberOfNewLines == 0;
 
 		// First we need to know what is the indentation
-		StringBuffer tokensBuffer = new StringBuffer();
+		this.javadocTokensBuffer.setLength(0);
 		int firstColumn = 1 + this.indentationLevel + BLOCK_LINE_PREFIX_LENGTH;
 		int maxColumn = this.formatter.preferences.comment_line_length + 1;
 		if (headerLine) {
@@ -4119,6 +4264,7 @@ public class Scribe implements IJavaDocTagConstants {
 		if (needIndentation && this.commentIndentation != null) {
 			buffer.append(this.commentIndentation);
 	    	this.column += this.commentIndentation.length();
+	    	firstColumn += this.commentIndentation.length();
 		}
 		if (this.column < firstColumn) {
 			this.column = firstColumn;
@@ -4140,11 +4286,11 @@ public class Scribe implements IJavaDocTagConstants {
 				} catch (InvalidInputException iie) {
 					token = consumeInvalidToken(textEnd);
 				}
-	    		int tokensBufferLength = tokensBuffer.length();
+	    		int tokensBufferLength = this.javadocTokensBuffer.length();
     			int tokenStart = this.scanner.getCurrentTokenStartPosition();
 	    		int tokenLength = (this.scanner.atEnd() ? this.scanner.eofPosition : this.scanner.currentPosition) - tokenStart;
 				boolean insertSpace = (previousToken == TerminalTokens.TokenNameWHITESPACE || this.needSpace) && !textOnNewLine;
-				String tokensBufferString = tokensBuffer.toString().trim();
+				String tokensBufferString = this.javadocTokensBuffer.toString().trim();
 				switch (token) {
 					case TerminalTokens.TokenNameWHITESPACE:
 						if (tokensBufferLength > 0) {
@@ -4156,17 +4302,18 @@ public class Scribe implements IJavaDocTagConstants {
 								this.lastNumberOfNewLines++;
 								this.line++;
 								if (newLineString == null) {
-									StringBuffer newLineBuffer = new StringBuffer(this.lineSeparator);
+									this.tempBuffer.setLength(0);
+									this.tempBuffer.append(this.lineSeparator);
 							    	this.column = 1;
-							    	printIndentationIfNecessary(newLineBuffer);
-						    		newLineBuffer.append(BLOCK_LINE_PREFIX);
+							    	printIndentationIfNecessary(this.tempBuffer);
+						    		this.tempBuffer.append(BLOCK_LINE_PREFIX);
 							    	this.column += BLOCK_LINE_PREFIX_LENGTH;
 									if (this.commentIndentation != null) {
-										newLineBuffer.append(this.commentIndentation);
+										this.tempBuffer.append(this.commentIndentation);
 								    	this.column += this.commentIndentation.length();
 									}
 						    		firstColumn = this.column;
-						    		newLineString = newLineBuffer.toString();
+						    		newLineString = this.tempBuffer.toString();
 								} else {
 									this.column = firstColumn;
 								}
@@ -4179,10 +4326,10 @@ public class Scribe implements IJavaDocTagConstants {
 									headerLine = false;
 								}
 							} else {
-								buffer.append(tokensBuffer);
+								buffer.append(this.javadocTokensBuffer);
 								this.column += tokensBufferLength;
 							}
-							tokensBuffer.setLength(0);
+							this.javadocTokensBuffer.setLength(0);
 						}
 						textOnNewLine = false;
 						previousToken = token;
@@ -4199,33 +4346,34 @@ public class Scribe implements IJavaDocTagConstants {
 	    		if (insertSpace) lastColumn++;
 				boolean shouldSplit = lastColumn > maxColumn // the max length is reached
 					&& (!isHtmlTag || previousToken == -1) // not an html tag or just at the beginning of it
-					&& token != TerminalTokens.TokenNameAT && (tokensBufferLength == 0 || tokensBuffer.charAt(tokensBufferLength-1) != '@'); // avoid to split just before a '@'
+					&& token != TerminalTokens.TokenNameAT && (tokensBufferLength == 0 || this.javadocTokensBuffer.charAt(tokensBufferLength-1) != '@'); // avoid to split just before a '@'
 				if (shouldSplit) {
 					// not enough space on the line
 					if ((tokensBufferLength > 0 || tokenLength < maxColumn) && !isHtmlTag && tokensBufferLength > 0 && (firstColumn+tokensBufferLength+tokenLength) >= maxColumn) {
 						// there won't be enough room even if we break the line before the buffered tokens
 						// So add the buffered tokens now
-						buffer.append(tokensBuffer);
+						buffer.append(this.javadocTokensBuffer);
 						this.column += tokensBufferLength;
-						tokensBuffer.setLength(0);
+						this.javadocTokensBuffer.setLength(0);
 						tokensBufferLength = 0;
 						textOnNewLine = false;
 					}
-					if ((tokensBufferLength > 0 || tokenLength < maxColumn) && (!textOnNewLine || !firstText)) {
+					if ((tokensBufferLength > 0 || /*(firstColumn+tokenLength) < maxColumn || (insertSpace &&*/ this.column > firstColumn) && (!textOnNewLine || !firstText)) {
 						this.lastNumberOfNewLines++;
 						this.line++;
 						if (newLineString == null) {
-							StringBuffer newLineBuffer = new StringBuffer(this.lineSeparator);
+							this.tempBuffer.setLength(0);
+							this.tempBuffer.append(this.lineSeparator);
 					    	this.column = 1;
-					    	printIndentationIfNecessary(newLineBuffer);
-				    		newLineBuffer.append(BLOCK_LINE_PREFIX);
+					    	printIndentationIfNecessary(this.tempBuffer);
+				    		this.tempBuffer.append(BLOCK_LINE_PREFIX);
 					    	this.column += BLOCK_LINE_PREFIX_LENGTH;
 							if (this.commentIndentation != null) {
-								newLineBuffer.append(this.commentIndentation);
+								this.tempBuffer.append(this.commentIndentation);
 						    	this.column += this.commentIndentation.length();
 							}
 				    		firstColumn = this.column;
-				    		newLineString = newLineBuffer.toString();
+				    		newLineString = this.tempBuffer.toString();
 						} else {
 							this.column = firstColumn;
 						}
@@ -4235,9 +4383,9 @@ public class Scribe implements IJavaDocTagConstants {
 			    		String tokensString = tokensBufferString;
 						buffer.append(tokensString);
 						this.column += tokensString.length();
-						tokensBuffer.setLength(0);
+						this.javadocTokensBuffer.setLength(0);
 						tokensBufferLength = 0;
-			    	}
+		    		}
 					buffer.append(this.scanner.source, tokenStart, tokenLength);
 					this.column += tokenLength;
 					textOnNewLine = false;
@@ -4249,9 +4397,9 @@ public class Scribe implements IJavaDocTagConstants {
     			} else {
 					// append token to the line
 		    		if (insertSpace) {
-		    			tokensBuffer.append(' ');
+		    			this.javadocTokensBuffer.append(' ');
 		    		}
-					tokensBuffer.append(this.scanner.source, tokenStart, tokenLength);
+					this.javadocTokensBuffer.append(this.scanner.source, tokenStart, tokenLength);
     			}
 				previousToken = token;
     			this.needSpace = false;
@@ -4264,9 +4412,9 @@ public class Scribe implements IJavaDocTagConstants {
 		finally {
 			this.scanner.skipComments = false;
 			// Add remaining buffered tokens
-			if (tokensBuffer.length() > 0) {
-				buffer.append(tokensBuffer);
-				this.column += tokensBuffer.length();
+			if (this.javadocTokensBuffer.length() > 0) {
+				buffer.append(this.javadocTokensBuffer);
+				this.column += this.javadocTokensBuffer.length();
 			}
 		}
     }
@@ -4479,27 +4627,34 @@ public class Scribe implements IJavaDocTagConstants {
 			// Split the existing edit to keep the change before the beginning of the last line
 			// but change the indentation after. Note that at this stage, the add*Edit methods
 			// cannot be longer used as the edits are disabled
-			StringBuffer indentationBuffer = new StringBuffer();
+			String indentationString;
 			int currentIndentation = getCurrentIndentation(this.scanner.currentPosition);
 			if (currentIndentation > 0 && this.indentationLevel > 0) {
 				int col = this.column;
-				printIndentationIfNecessary(indentationBuffer);
+				this.tempBuffer.setLength(0);
+				printIndentationIfNecessary(this.tempBuffer);
+				indentationString = this.tempBuffer.toString();
 				this.column = col;
+			} else {
+				indentationString = Util.EMPTY_STRING;
 			}
 			String replacement = currentEdit.replacement;
 			if (replacement.length() == 0) {
 				// previous edit was a delete, as we're sure to have a new line before
 				// the comment, then the edit needs to be either replaced entirely with
 				// the expected indentation
-				this.edits[this.editsIndex-1] = new OptimizedReplaceEdit(beginningOfLine, offset+length-beginningOfLine, indentationBuffer.toString());
+				this.edits[this.editsIndex-1] = new OptimizedReplaceEdit(beginningOfLine, offset+length-beginningOfLine, indentationString);
 			} else {
 				int idx = replacement.lastIndexOf(this.lineSeparator);
 				if (idx >= 0) {
 					// replace current edit if it contains a line separator
 					int start = idx + this.lsLength;
-					StringBuffer buffer = new StringBuffer(replacement.substring(0, start));
-					buffer.append(indentationBuffer);
-					this.edits[this.editsIndex-1] = new OptimizedReplaceEdit(offset, length, buffer.toString());
+					this.tempBuffer.setLength(0);
+					this.tempBuffer.append(replacement.substring(0, start));
+					if (indentationString != Util.EMPTY_STRING) {
+						this.tempBuffer.append(indentationString);
+					}
+					this.edits[this.editsIndex-1] = new OptimizedReplaceEdit(offset, length, this.tempBuffer.toString());
 				}
 			}
 		}
@@ -4779,6 +4934,26 @@ public class Scribe implements IJavaDocTagConstants {
 		System.arraycopy(this.edits, 0, (this.edits = new OptimizedReplaceEdit[this.editsIndex * 2]), 0, this.editsIndex);
 	}
 
+	private void setCommentIndentation(int commentIndentationLevel) {
+		if (commentIndentationLevel == 0) {
+		    this.commentIndentation = null;
+		} else {
+			int length = COMMENT_INDENTATIONS.length;
+			if (commentIndentationLevel > length) {
+				System.arraycopy(COMMENT_INDENTATIONS, 0, COMMENT_INDENTATIONS = new String[commentIndentationLevel+10], 0, length);
+			}
+			this.commentIndentation = COMMENT_INDENTATIONS[commentIndentationLevel-1];
+			if (this.commentIndentation == null) {
+				this.tempBuffer.setLength(0);
+				for (int i=0; i<commentIndentationLevel; i++) {
+					this.tempBuffer.append(' ');
+				}
+				this.commentIndentation = this.tempBuffer.toString();
+				COMMENT_INDENTATIONS[commentIndentationLevel-1] = this.commentIndentation;
+			}
+		}
+	}
+
 	/*
 	 * Look for the tags identified by the scanner to see whether some of them
 	 * may change the status of the edition for the formatter.
diff --git a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/align/Alignment.java b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/align/Alignment.java
index 666208b..40ab51b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/align/Alignment.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/align/Alignment.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.formatter.align;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.jdt.internal.formatter.Location;
 import org.eclipse.jdt.internal.formatter.Scribe;
 
@@ -20,8 +21,62 @@ import org.eclipse.jdt.internal.formatter.Scribe;
  */
 public class Alignment {
 
+	// Kind of alignment
+	public int kind;
+	public static final int ALLOCATION = 1;
+	public static final int ANNOTATION_MEMBERS_VALUE_PAIRS = 2;
+	public static final int ARRAY_INITIALIZER = 3;
+	public static final int ASSIGNMENT = 4;
+	public static final int BINARY_EXPRESSION = 5;
+	public static final int CASCADING_MESSAGE_SEND = 6;
+	public static final int COMPACT_IF = 7;
+	public static final int COMPOUND_ASSIGNMENT = 8;
+	public static final int CONDITIONAL_EXPRESSION = 9;
+	public static final int ENUM_CONSTANTS = 10;
+	public static final int ENUM_CONSTANTS_ARGUMENTS = 11;
+	public static final int EXPLICIT_CONSTRUCTOR_CALL = 12;
+	public static final int FIELD_DECLARATION_ASSIGNMENT = 13;
+	public static final int LOCAL_DECLARATION_ASSIGNMENT = 14;
+	public static final int MESSAGE_ARGUMENTS = 15;
+	public static final int MESSAGE_SEND = 16;
+	public static final int METHOD_ARGUMENTS = 17;
+	public static final int METHOD_DECLARATION = 18;
+	public static final int MULTIPLE_FIELD = 19;
+	public static final int SUPER_CLASS = 20;
+	public static final int SUPER_INTERFACES = 21;
+	public static final int THROWS = 22;
+	public static final int TYPE_MEMBERS = 23;
+	public static final int STRING_CONCATENATION = 24;
+
 	// name of alignment
 	public String name;
+	public static final String[] NAMES = {
+		"", //$NON-NLS-1$
+		"allocation", //$NON-NLS-1$
+		"annotationMemberValuePairs", //$NON-NLS-1$
+		"array_initializer", //$NON-NLS-1$
+		"assignmentAlignment", //$NON-NLS-1$
+		"binaryExpressionAlignment", //$NON-NLS-1$
+		"cascadingMessageSendAlignment", //$NON-NLS-1$
+		"compactIf", //$NON-NLS-1$
+		"compoundAssignmentAlignment", //$NON-NLS-1$
+		"conditionalExpression", //$NON-NLS-1$
+		"enumConstants", //$NON-NLS-1$
+		"enumConstantArguments", //$NON-NLS-1$
+		"explicit_constructor_call", //$NON-NLS-1$
+		"fieldDeclarationAssignmentAlignment", //$NON-NLS-1$
+		"localDeclarationAssignmentAlignment", //$NON-NLS-1$
+		"messageArguments", //$NON-NLS-1$
+		"messageAlignment", //$NON-NLS-1$
+		"methodArguments", //$NON-NLS-1$
+		"methodDeclaration", //$NON-NLS-1$
+		"multiple_field", //$NON-NLS-1$
+		"superclass", //$NON-NLS-1$
+		"superInterfaces", //$NON-NLS-1$
+		"throws", //$NON-NLS-1$
+		"typeMembers", //$NON-NLS-1$
+		"stringConcatenation", //$NON-NLS-1$
+	};
 
 	// link to enclosing alignment
 	public Alignment enclosing;
@@ -45,9 +100,14 @@ public class Alignment {
 	public int shiftBreakIndentationLevel;
 	public int[] fragmentBreaks;
 	public boolean wasSplit;
+	public boolean blockAlign = false;
+	public boolean tooLong = false;
 
 	public Scribe scribe;
 
+	// reset
+	private boolean reset = false;
+
 	/*
 	 * Alignment modes
 	 */
@@ -133,9 +193,11 @@ public class Alignment {
 	public static final int CHUNK_ENUM = 4;
 
 	// location to align and break on.
-	public Alignment(String name, int mode, int tieBreakRule, Scribe scribe, int fragmentCount, int sourceRestart, int continuationIndent){
+	public Alignment(int kind, int mode, int tieBreakRule, Scribe scribe, int fragmentCount, int sourceRestart, int continuationIndent){
 
-		this.name = name;
+		Assert.isTrue(kind >=ALLOCATION && kind <=STRING_CONCATENATION);
+		this.kind = kind;
+		this.name = NAMES[kind];
 		this.location = new Location(scribe, sourceRestart);
 		this.mode = mode;
 		this.tieBreakRule = tieBreakRule;
@@ -174,9 +236,9 @@ public class Alignment {
 		}
 	}
 
-	public boolean checkChunkStart(int kind, int startIndex, int sourceRestart) {
-		if (this.chunkKind != kind) {
-			this.chunkKind = kind;
+	public boolean checkChunkStart(int chunk, int startIndex, int sourceRestart) {
+		if (this.chunkKind != chunk) {
+			this.chunkKind = chunk;
 
 			// when redoing same chunk alignment, must not reset
 			if (startIndex != this.chunkStartIndex) {
@@ -232,6 +294,61 @@ public class Alignment {
 		}
 		return depth;
 	}
+	
+	/**
+	 * Returns whether the alignment can be aligned or not.
+	 * Only used for message send alignment, it currently blocks its alignment
+	 * when it's at the first nesting level of a message send. It allow to save
+	 * space on the argument broken line by reducing the number of indentations.
+	 */
+	public boolean canAlign() {
+		if (this.tooLong) {
+			return true;
+		}
+		boolean canAlign = true;
+		Alignment enclosingAlignment = this.enclosing;
+		while (enclosingAlignment != null) {
+			switch (enclosingAlignment.kind) {
+				case Alignment.ALLOCATION:
+				case Alignment.MESSAGE_ARGUMENTS:
+					// message send inside arguments, avoid to align
+					if (enclosingAlignment.isWrapped() && 
+							(enclosingAlignment.fragmentIndex > 0 || enclosingAlignment.fragmentCount < 2)) {
+						return !this.blockAlign;
+					}
+					if (enclosingAlignment.tooLong) {
+						return true;
+					}
+					canAlign = false;
+					break;
+				case Alignment.MESSAGE_SEND:
+					// multiple depth of message send, hence allow current to align
+					switch (this.kind) {
+						case Alignment.ALLOCATION:
+						case Alignment.MESSAGE_ARGUMENTS:
+						case Alignment.MESSAGE_SEND:
+							Alignment superEnclosingAlignment = enclosingAlignment.enclosing;
+							while (superEnclosingAlignment != null) {
+								switch (superEnclosingAlignment.kind) {
+									case Alignment.ALLOCATION:
+									case Alignment.MESSAGE_ARGUMENTS:
+									case Alignment.MESSAGE_SEND:
+										// block the alignment of the intermediate message send
+										if (this.scribe.nlsTagCounter == 0) {
+											enclosingAlignment.blockAlign = true;
+										}
+										return !this.blockAlign;
+								}
+								superEnclosingAlignment = superEnclosingAlignment.enclosing;
+							}
+							break;
+					}
+					return !this.blockAlign;
+			}
+			enclosingAlignment = enclosingAlignment.enclosing;
+		}
+		return canAlign && !this.blockAlign;
+	}
 
 	public boolean couldBreak(){
 		int i;
@@ -329,12 +446,17 @@ public class Alignment {
 		return false; // cannot split better
 	}
 
-	public Alignment getAlignment(String targetName) {
-
-		if (targetName.equals(this.name)) return this;
-		if (this.enclosing == null) return null;
+	public boolean isWrapped() {
+		return this.fragmentBreaks[this.fragmentIndex] == BREAK;
+	}
 
-		return this.enclosing.getAlignment(targetName);
+	public int wrappedIndex() {
+		for (int i = 0, max = this.fragmentCount; i < max; i++) {
+			if (this.fragmentBreaks[i] == BREAK) {
+				return i;
+			}
+		}
+		return -1;
 	}
 
 	// perform alignment effect for current fragment
@@ -366,6 +488,7 @@ public class Alignment {
 	// reset fragment indentation/break status
 	public void reset() {
 
+		this.wasSplit = false;
 		if (this.fragmentCount > 0){
 			this.fragmentIndentations = new int[this.fragmentCount];
 			this.fragmentBreaks = new int[this.fragmentCount];
@@ -375,6 +498,7 @@ public class Alignment {
 		if ((this.mode & M_FORCE) != 0) {
 			couldBreak();
 		}
+		this.reset = true;
 	}
 
 	public void toFragmentsString(StringBuffer buffer){
@@ -397,6 +521,10 @@ public class Alignment {
 		// First line is for class and name
 		buffer.append(indentation);
 		buffer
+			.append("<kind: ")	//$NON-NLS-1$
+			.append(this.kind)
+			.append("> ");	//$NON-NLS-1$
+		buffer
 			.append("<name: ")	//$NON-NLS-1$
 			.append(this.name)
 			.append(">\n");	//$NON-NLS-1$
@@ -463,12 +591,7 @@ public class Alignment {
 		}
 	}
 
-	public boolean isWrapped() {
-		for (int i = 0, max = this.fragmentCount; i < max; i++) {
-			if (this.fragmentBreaks[i] == BREAK) {
-				return true;
-			}
-		}
-		return false;
+	public boolean wasReset() {
+		return this.reset;
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/BufferChangedEvent.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/BufferChangedEvent.java
index 082291f..ac5a2ac 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/BufferChangedEvent.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/BufferChangedEvent.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CompletionProposal.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CompletionProposal.java
index 53faecc..8f8e70f 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CompletionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -818,7 +818,7 @@ public class CompletionProposal {
 	 * </p>
 	 * <p>
 	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
-	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).<br>
+	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).<br>
 	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
 	 * <code>requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)</code>.
 	 * </p>
@@ -859,7 +859,7 @@ public class CompletionProposal {
 	 * </p>
 	 * <p>
 	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
-	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})<br>
+	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})<br>
 	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
 	 * <code>requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)</code>.
 	 * </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathAttribute.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathAttribute.java
index 063daff..d90ab15 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathAttribute.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathAttribute.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
index 6248737..5b862f6 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,10 @@ import org.eclipse.core.runtime.IPath;
  * <li> project entries (<code>CPE_PROJECT</code>) </li>
  * </ul>
  * In particular, a classpath container can neither reference further classpath containers or classpath variables.
+ * <p> 
+ * A library entry can reference other libraries through the Class-Path section of the JAR's MANIFEST.MF file. If the
+ * container wants such referenced entries to be part of the classpath, the container must explicitly add them to the
+ * array returned from {@link #getClasspathEntries()}.
  * <p>
  * Classpath container values are persisted locally to the workspace, but are not preserved from a
  * session to another. It is thus highly recommended to register a <code>ClasspathContainerInitializer</code>
@@ -63,7 +67,10 @@ public interface IClasspathContainer {
 	 * </ul>
 	 * A classpath container can neither reference further classpath containers
 	 * or classpath variables.
-	 * </p>
+	 * <p>
+	 * A library entry can reference other libraries through the Class-Path section of the JAR's MANIFEST.MF file. If
+	 * the container wants such referenced entries to be part of the classpath, the container must explicitly add them
+	 * to the result.
 	 * <p>
 	 * This method is called by the Java model when it needs to resolve this
 	 * classpath container entry into a list of library and project entries.
@@ -80,6 +87,7 @@ public interface IClasspathContainer {
 	 * <li>{@link JavaCore#newProjectEntry(IPath, boolean)} and variants</li>
 	 * <li>{@link JavaCore#create(org.eclipse.core.resources.IWorkspaceRoot)}</li>
 	 * <li>{@link JavaCore#create(org.eclipse.core.resources.IProject)}</li>
+	 * <li>{@link JavaCore#getReferencedClasspathEntries(IClasspathEntry, IJavaProject)} with <code>null</code> as project</li>
 	 * <li>{@link IJavaModel#getJavaProjects()}</li>
 	 * <li>{@link IJavaProject#getRawClasspath()}</li>
 	 * <li>{@link IJavaProject#readRawClasspath()}</li>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IField.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IField.java
index 1a35f96..15cf167 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IField.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -95,13 +95,16 @@ public Object getConstant() throws JavaModelException;
  */
 String getElementName();
 /**
- * Returns the binding key for this field. A binding key is a key that uniquely
- * identifies this field. It allows access to generic info for parameterized
- * fields.
+ * Returns the binding key for this field only if the given field is {@link #isResolved() resolved}.
+ * A binding key is a key that uniquely identifies this field. It allows access to generic info
+ * for parameterized fields.
  *
+ * <p>If the given field is not resolved, the returned key is simply the java element's key.
+ * </p>
  * @return the binding key for this field
  * @see org.eclipse.jdt.core.dom.IBinding#getKey()
  * @see BindingKey
+ * @see #isResolved()
  * @since 3.1
  */
 String getKey();
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java
index 4046218..14f2ecb 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMember.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMethod.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMethod.java
index 95ee2b4..daa458a 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMethod.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IMethod.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -101,13 +101,16 @@ ITypeParameter[] getTypeParameters() throws JavaModelException;
  */
 int getNumberOfParameters();
 /**
- * Returns the binding key for this method. A binding key is a key that uniquely
- * identifies this method. It allows access to generic info for parameterized
- * methods.
+ * Returns the binding key for this method only if the given method is {@link #isResolved() resolved}.
+ * A binding key is a key that uniquely identifies this method. It allows access
+ * to generic info for parameterized methods.
  *
+ * <p>If the given method is not resolved, the returned key is simply the java element's key.
+ * </p>
  * @return the binding key for this method
  * @see org.eclipse.jdt.core.dom.IBinding#getKey()
  * @see BindingKey
+ * @see #isResolved()
  * @since 3.1
  */
 String getKey();
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
index da7bfdd..cd489e6 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -593,14 +593,17 @@ public interface IType extends IMember, IAnnotatable {
 	IInitializer[] getInitializers() throws JavaModelException;
 
 	/**
-	 * Returns the binding key for this type. A binding key is a key that uniquely
-	 * identifies this type. It allows access to generic info for parameterized
-	 * types.
+	 * Returns the binding key for this type only if the given type is {@link #isResolved() resolved}.
+	 * A binding key is a key that uniquely identifies this type. It allows access
+	 * to generic info for parameterized types.
 	 *
+	 * <p>If the given type is not resolved, the returned key is simply the java element's key.
+	 * </p>
 	 * @return the binding key for this type
 	 * @see org.eclipse.jdt.core.dom.IBinding#getKey()
 	 * @see BindingKey
 	 * @since 3.1
+	 * @see #isResolved()
 	 */
 	String getKey();
 
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
index 821a28b..5d80813 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
index c07bee1..b290571 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
index 9e1a828..f03ec1c 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,6 +21,7 @@ import java.util.zip.ZipFile;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.*;
 import org.eclipse.jdt.core.compiler.IScanner;
+import org.eclipse.jdt.core.compiler.ITerminalSymbols;
 import org.eclipse.jdt.core.formatter.CodeFormatter;
 import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
@@ -86,7 +87,7 @@ public class ToolFactory {
 	 * @return an instance of a code formatter
 	 * @see ICodeFormatter
 	 * @see ToolFactory#createDefaultCodeFormatter(Map)
-	 * @deprecated Use {@link #createCodeFormatter(Map)} instead. Extension point is discontinued
+	 * @deprecated The extension point has been deprecated, use {@link #createCodeFormatter(Map)} instead.
 	 */
 	public static ICodeFormatter createCodeFormatter(){
 
@@ -344,9 +345,7 @@ public class ToolFactory {
 	}
 
 	/**
-	 * Create an instance of the built-in code formatter. A code formatter implementation can be contributed via the
-	 * extension point "org.eclipse.jdt.core.codeFormatter". If unable to find a registered extension, the factory will
-	 * default to using the default code formatter.
+	 * Create an instance of the default code formatter.
 	 *
 	 * @param options - the options map to use for formatting with the default code formatter. Recognized options
 	 * 	are documented on <code>JavaCore#getDefaultOptions()</code>. If set to <code>null</code>, then use
@@ -355,7 +354,7 @@ public class ToolFactory {
 	 * @see ICodeFormatter
 	 * @see ToolFactory#createCodeFormatter()
 	 * @see JavaCore#getOptions()
-	 * @deprecated Use {@link #createCodeFormatter(Map)} instead
+	 * @deprecated Use {@link #createCodeFormatter(Map)} instead but note the different options
 	 */
 	public static ICodeFormatter createDefaultCodeFormatter(Map options){
 		if (options == null) options = JavaCore.getOptions();
@@ -379,26 +378,38 @@ public class ToolFactory {
 	 * </pre>
 	 * </code>
 	 *
-	 * <p>
-	 * The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
-	 * by using API with extra boolean parameter (<code>strictCommentMode</code>).
-	 * <p>
+	 * <p>By default the compliance used to create the scanner is the workspace's compliance when running inside the IDE
+	 * or 1.4 if running from outside of a headless eclipse.
+	 * </p>
+	 *
 	 * @param tokenizeComments if set to <code>false</code>, comments will be silently consumed
 	 * @param tokenizeWhiteSpace if set to <code>false</code>, white spaces will be silently consumed,
 	 * @param assertMode if set to <code>false</code>, occurrences of 'assert' will be reported as identifiers
-	 * (<code>ITerminalSymbols#TokenNameIdentifier</code>), whereas if set to <code>true</code>, it
-	 * would report assert keywords (<code>ITerminalSymbols#TokenNameassert</code>). Java 1.4 has introduced
+	 * ({@link ITerminalSymbols#TokenNameIdentifier}), whereas if set to <code>true</code>, it
+	 * would report assert keywords ({@link ITerminalSymbols#TokenNameassert}). Java 1.4 has introduced
 	 * a new 'assert' keyword.
 	 * @param recordLineSeparator if set to <code>true</code>, the scanner will record positions of encountered line
 	 * separator ends. In case of multi-character line separators, the last character position is considered. These positions
-	 * can then be extracted using <code>IScanner#getLineEnds</code>. Only non-unicode escape sequences are
+	 * can then be extracted using {@link IScanner#getLineEnds()}. Only non-unicode escape sequences are
 	 * considered as valid line separators.
   	 * @return a scanner
 	 * @see org.eclipse.jdt.core.compiler.IScanner
+	 * @see #createScanner(boolean, boolean, boolean, String, String)
 	 */
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator){
-
-		PublicScanner scanner = new PublicScanner(tokenizeComments, tokenizeWhiteSpace, false/*nls*/, assertMode ? ClassFileConstants.JDK1_4 : ClassFileConstants.JDK1_3/*sourceLevel*/, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
+		// use default workspace compliance
+		long complianceLevelValue = CompilerOptions.versionToJdkLevel(JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE));
+		if (complianceLevelValue == 0) complianceLevelValue = ClassFileConstants.JDK1_4; // fault-tolerance
+		PublicScanner scanner =
+			new PublicScanner(
+				tokenizeComments,
+				tokenizeWhiteSpace,
+				false/*nls*/,
+				assertMode ? ClassFileConstants.JDK1_4 : ClassFileConstants.JDK1_3/*sourceLevel*/,
+				complianceLevelValue,
+				null/*taskTags*/,
+				null/*taskPriorities*/,
+				true/*taskCaseSensitive*/);
 		scanner.recordLineSeparator = recordLineSeparator;
 		return scanner;
 	}
@@ -420,29 +431,41 @@ public class ToolFactory {
 	 * </pre>
 	 * </code>
 	 *
-	 * <p>
-	 * The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
-	 * by using API with extra boolean parameter (<code>strictCommentMode</code>).
-	 * <p>
+	 * <p>By default the compliance used to create the scanner is the workspace's compliance when running inside the IDE
+	 * or 1.4 if running from outside of a headless eclipse.
+	 * </p>
+	 *
 	 * @param tokenizeComments if set to <code>false</code>, comments will be silently consumed
 	 * @param tokenizeWhiteSpace if set to <code>false</code>, white spaces will be silently consumed,
 	 * @param recordLineSeparator if set to <code>true</code>, the scanner will record positions of encountered line
 	 * separator ends. In case of multi-character line separators, the last character position is considered. These positions
-	 * can then be extracted using <code>IScanner#getLineEnds</code>. Only non-unicode escape sequences are
+	 * can then be extracted using {@link IScanner#getLineEnds()}. Only non-unicode escape sequences are
 	 * considered as valid line separators.
 	 * @param sourceLevel if set to <code>&quot;1.3&quot;</code> or <code>null</code>, occurrences of 'assert' will be reported as identifiers
-	 * (<code>ITerminalSymbols#TokenNameIdentifier</code>), whereas if set to <code>&quot;1.4&quot;</code>, it
-	 * would report assert keywords (<code>ITerminalSymbols#TokenNameassert</code>). Java 1.4 has introduced
+	 * ({@link ITerminalSymbols#TokenNameIdentifier}), whereas if set to <code>&quot;1.4&quot;</code>, it
+	 * would report assert keywords ({@link ITerminalSymbols#TokenNameassert}). Java 1.4 has introduced
 	 * a new 'assert' keyword.
-  	 * @return a scanner
+	 * @return a scanner
 	 * @see org.eclipse.jdt.core.compiler.IScanner
-     * @since 3.0
+	 * @see #createScanner(boolean, boolean, boolean, String, String)
+	 * @since 3.0
 	 */
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel) {
-		PublicScanner scanner = null;
-		long level = CompilerOptions.versionToJdkLevel(sourceLevel);
-		if (level == 0) level = ClassFileConstants.JDK1_3; // fault-tolerance
-		scanner = new PublicScanner(tokenizeComments, tokenizeWhiteSpace, false/*nls*/,level /*sourceLevel*/, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
+		// use default workspace compliance
+		long complianceLevelValue = CompilerOptions.versionToJdkLevel(JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE));
+		if (complianceLevelValue == 0) complianceLevelValue = ClassFileConstants.JDK1_4; // fault-tolerance
+		long sourceLevelValue = CompilerOptions.versionToJdkLevel(sourceLevel);
+		if (sourceLevelValue == 0) sourceLevelValue = ClassFileConstants.JDK1_3; // fault-tolerance
+		PublicScanner scanner =
+			new PublicScanner(
+				tokenizeComments,
+				tokenizeWhiteSpace,
+				false/*nls*/,
+				sourceLevelValue /*sourceLevel*/,
+				complianceLevelValue,
+				null/*taskTags*/,
+				null/*taskPriorities*/,
+				true/*taskCaseSensitive*/);
 		scanner.recordLineSeparator = recordLineSeparator;
 		return scanner;
 	}
@@ -464,33 +487,29 @@ public class ToolFactory {
 	 * </pre>
 	 * </code>
 	 *
-	 * <p>
-	 * The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
-	 * by using API with extra boolean parameter (<code>strictCommentMode</code>).
-	 * <p>
 	 * @param tokenizeComments if set to <code>false</code>, comments will be silently consumed
 	 * @param tokenizeWhiteSpace if set to <code>false</code>, white spaces will be silently consumed,
 	 * @param recordLineSeparator if set to <code>true</code>, the scanner will record positions of encountered line
 	 * separator ends. In case of multi-character line separators, the last character position is considered. These positions
-	 * can then be extracted using <code>IScanner#getLineEnds</code>. Only non-unicode escape sequences are
+	 * can then be extracted using {@link IScanner#getLineEnds()}. Only non-unicode escape sequences are
 	 * considered as valid line separators.
 	 * @param sourceLevel if set to <code>&quot;1.3&quot;</code> or <code>null</code>, occurrences of 'assert' will be reported as identifiers
-	 * (<code>ITerminalSymbols#TokenNameIdentifier</code>), whereas if set to <code>&quot;1.4&quot;</code>, it
-	 * would report assert keywords (<code>ITerminalSymbols#TokenNameassert</code>). Java 1.4 has introduced
+	 * ({@link ITerminalSymbols#TokenNameIdentifier}), whereas if set to <code>&quot;1.4&quot;</code>, it
+	 * would report assert keywords ({@link ITerminalSymbols#TokenNameassert}). Java 1.4 has introduced
 	 * a new 'assert' keyword.
 	 * @param complianceLevel This is used to support the Unicode 4.0 character sets. if set to 1.5 or above,
 	 * the Unicode 4.0 is supporte, otherwise Unicode 3.0 is supported.
-  	 * @return a scanner
+	 * @return a scanner
 	 * @see org.eclipse.jdt.core.compiler.IScanner
 	 *
-     * @since 3.1
+	 * @since 3.1
 	 */
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel, String complianceLevel) {
 		PublicScanner scanner = null;
 		long sourceLevelValue = CompilerOptions.versionToJdkLevel(sourceLevel);
 		if (sourceLevelValue == 0) sourceLevelValue = ClassFileConstants.JDK1_3; // fault-tolerance
 		long complianceLevelValue = CompilerOptions.versionToJdkLevel(complianceLevel);
-		if (complianceLevelValue == 0) complianceLevelValue = ClassFileConstants.JDK1_3; // fault-tolerance
+		if (complianceLevelValue == 0) complianceLevelValue = ClassFileConstants.JDK1_4; // fault-tolerance
 		scanner = new PublicScanner(tokenizeComments, tokenizeWhiteSpace, false/*nls*/,sourceLevelValue /*sourceLevel*/, complianceLevelValue, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
 		scanner.recordLineSeparator = recordLineSeparator;
 		return scanner;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
index 9e85268..4740662 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
index c7d59b4..9e8b329 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,7 +39,7 @@ public abstract class ChangeClasspathOperation extends JavaModelOperation {
 	 * - update project references
 	 * - create resolved classpath markers
 	 */
-	protected void classpathChanged(ClasspathChange change) throws JavaModelException {
+	protected void classpathChanged(ClasspathChange change, boolean refreshExternalFolder) throws JavaModelException {
 		// reset the project's caches early since some clients rely on the project's caches being up-to-date when run inside an IWorkspaceRunnable
 		// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=212769#c5 )
 		JavaProject project = change.project;
@@ -59,7 +59,7 @@ public abstract class ChangeClasspathOperation extends JavaModelOperation {
 			new ProjectReferenceChange(project, change.oldResolvedClasspath).updateProjectReferencesIfNecessary();
 
 			// and ensure that external folders are updated as well
-			new ExternalFolderChange(project, change.oldResolvedClasspath).updateExternalFoldersIfNecessary(true/*refresh if external linked folder already exists*/, null);
+			new ExternalFolderChange(project, change.oldResolvedClasspath).updateExternalFoldersIfNecessary(refreshExternalFolder, null);
 
 		} else {
 			DeltaProcessingState state = JavaModelManager.getDeltaState();
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
index e09a930..6f7ea3e 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
@@ -140,20 +140,24 @@ public class CompilationUnitProblemFinder extends Compiler {
 		};
 	}
 
+	/*
+	 * Can return null if the process was aborted or canceled 
+	 */
 	public static CompilationUnitDeclaration process(
-		CompilationUnit unitElement,
-		SourceElementParser parser,
-		WorkingCopyOwner workingCopyOwner,
-		HashMap problems,
-		boolean creatingAST,
-		int reconcileFlags,
-		IProgressMonitor monitor)
+			CompilationUnit unitElement,
+			SourceElementParser parser,
+			WorkingCopyOwner workingCopyOwner,
+			HashMap problems,
+			boolean creatingAST,
+			int reconcileFlags,
+			IProgressMonitor monitor)
 		throws JavaModelException {
 
 		JavaProject project = (JavaProject) unitElement.getJavaProject();
 		CancelableNameEnvironment environment = null;
 		CancelableProblemFactory problemFactory = null;
 		CompilationUnitProblemFinder problemFinder = null;
+		CompilationUnitDeclaration unit = null;
 		try {
 			environment = new CancelableNameEnvironment(project, workingCopyOwner, monitor);
 			problemFactory = new CancelableProblemFactory(monitor);
@@ -170,10 +174,9 @@ public class CompilationUnitProblemFinder extends Compiler {
 			if (ignoreMethodBodies) {
 				analyzeAndGenerateCode = false;
 			}
-			CompilationUnitDeclaration unit = null;
-			if (parser != null) {
-				problemFinder.parser = parser;
-				try {
+			try {
+				if (parser != null) {
+					problemFinder.parser = parser;
 					unit = parser.parseCompilationUnit(unitElement, true/*full parse*/, monitor);
 					problemFinder.resolve(
 						unit,
@@ -181,37 +184,38 @@ public class CompilationUnitProblemFinder extends Compiler {
 						true, // verify methods
 						analyzeAndGenerateCode, // analyze code
 						analyzeAndGenerateCode); // generate code
-				} catch (AbortCompilation e) {
-					problemFinder.handleInternalException(e, unit);
+				} else {
+					unit =
+						problemFinder.resolve(
+							unitElement,
+							true, // verify methods
+							analyzeAndGenerateCode, // analyze code
+							analyzeAndGenerateCode); // generate code
 				}
-			} else {
-				unit =
-					problemFinder.resolve(
-						unitElement,
-						true, // verify methods
-						analyzeAndGenerateCode, // analyze code
-						analyzeAndGenerateCode); // generate code
+			} catch (AbortCompilation e) {
+				problemFinder.handleInternalException(e, unit);
 			}
-			CompilationResult unitResult = unit.compilationResult;
-			CategorizedProblem[] unitProblems = unitResult.getProblems();
-			int length = unitProblems == null ? 0 : unitProblems.length;
-			if (length > 0) {
-				CategorizedProblem[] categorizedProblems = new CategorizedProblem[length];
-				System.arraycopy(unitProblems, 0, categorizedProblems, 0, length);
-				problems.put(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, categorizedProblems);
-			}
-			unitProblems = unitResult.getTasks();
-			length = unitProblems == null ? 0 : unitProblems.length;
-			if (length > 0) {
-				CategorizedProblem[] categorizedProblems = new CategorizedProblem[length];
-				System.arraycopy(unitProblems, 0, categorizedProblems, 0, length);
-				problems.put(IJavaModelMarker.TASK_MARKER, categorizedProblems);
-			}
-			if (NameLookup.VERBOSE) {
-				System.out.println(Thread.currentThread() + " TIME SPENT in NameLoopkup#seekTypesInSourcePackage: " + environment.nameLookup.timeSpentInSeekTypesInSourcePackage + "ms");  //$NON-NLS-1$ //$NON-NLS-2$
-				System.out.println(Thread.currentThread() + " TIME SPENT in NameLoopkup#seekTypesInBinaryPackage: " + environment.nameLookup.timeSpentInSeekTypesInBinaryPackage + "ms");  //$NON-NLS-1$ //$NON-NLS-2$
+			if (unit != null) {
+				CompilationResult unitResult = unit.compilationResult;
+				CategorizedProblem[] unitProblems = unitResult.getProblems();
+				int length = unitProblems == null ? 0 : unitProblems.length;
+				if (length > 0) {
+					CategorizedProblem[] categorizedProblems = new CategorizedProblem[length];
+					System.arraycopy(unitProblems, 0, categorizedProblems, 0, length);
+					problems.put(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, categorizedProblems);
+				}
+				unitProblems = unitResult.getTasks();
+				length = unitProblems == null ? 0 : unitProblems.length;
+				if (length > 0) {
+					CategorizedProblem[] categorizedProblems = new CategorizedProblem[length];
+					System.arraycopy(unitProblems, 0, categorizedProblems, 0, length);
+					problems.put(IJavaModelMarker.TASK_MARKER, categorizedProblems);
+				}
+				if (NameLookup.VERBOSE) {
+					System.out.println(Thread.currentThread() + " TIME SPENT in NameLoopkup#seekTypesInSourcePackage: " + environment.nameLookup.timeSpentInSeekTypesInSourcePackage + "ms");  //$NON-NLS-1$ //$NON-NLS-2$
+					System.out.println(Thread.currentThread() + " TIME SPENT in NameLoopkup#seekTypesInBinaryPackage: " + environment.nameLookup.timeSpentInSeekTypesInBinaryPackage + "ms");  //$NON-NLS-1$ //$NON-NLS-2$
+				}
 			}
-			return unit;
 		} catch (OperationCanceledException e) {
 			// catch this exception so as to not enter the catch(RuntimeException e) below
 			throw e;
@@ -236,16 +240,17 @@ public class CompilationUnitProblemFinder extends Compiler {
 			if (problemFinder != null && !creatingAST)
 				problemFinder.lookupEnvironment.reset();
 		}
+		return unit;
 	}
 
 	public static CompilationUnitDeclaration process(
-		CompilationUnit unitElement,
-		WorkingCopyOwner workingCopyOwner,
-		HashMap problems,
-		boolean creatingAST,
-		int reconcileFlags,
-		IProgressMonitor monitor)
-		throws JavaModelException {
+			CompilationUnit unitElement,
+			WorkingCopyOwner workingCopyOwner,
+			HashMap problems,
+			boolean creatingAST,
+			int reconcileFlags,
+			IProgressMonitor monitor)
+			throws JavaModelException {
 
 		return process(unitElement, null/*use default Parser*/, workingCopyOwner, problems, creatingAST, reconcileFlags, monitor);
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
index 8dabcbe..5c6cad4 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1886,9 +1886,9 @@ public class DeltaProcessor {
 					// notification we see, implies that all projects are about to be refreshed.
 					 projects = ((IWorkspace) o).getRoot().getProjects(IContainer.INCLUDE_HIDDEN);
 				}
-				for (int i = 0; projects != null && i < projects.length; i++) {
-					JavaModelManager.getExternalManager().refreshReferences(projects[i], null);
-				}
+				//https://bugs.eclipse.org/bugs/show_bug.cgi?id=302295
+				// Refresh all project references together in a single job
+				JavaModelManager.getExternalManager().refreshReferences(projects, null);
 				return;
 
 			case IResourceChangeEvent.POST_CHANGE :
@@ -2336,7 +2336,7 @@ public class DeltaProcessor {
 	}
 
 	/*
-	 * Update the current delta (ie. add/remove/change the given element) and update the correponding index.
+	 * Update the current delta (i.e. add/remove/change the given element) and update the correponding index.
 	 * Returns whether the children of the given delta must be processed.
 	 * @throws a JavaModelException if the delta doesn't correspond to a java element of the given type.
 	 */
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
index 526ae19..7dec1ba 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -39,14 +40,24 @@ import org.eclipse.jdt.internal.core.util.Util;
 public class ExternalFoldersManager {
 	private static final String EXTERNAL_PROJECT_NAME = ".org.eclipse.jdt.core.external.folders"; //$NON-NLS-1$
 	private static final String LINKED_FOLDER_NAME = ".link"; //$NON-NLS-1$
-	private HashMap folders;
+	private Map folders;
 	private int counter = 0;
+	/* Singleton instance */
+	private static ExternalFoldersManager MANAGER = new ExternalFoldersManager();
 
+	private ExternalFoldersManager() {
+		// Prevent instantiation
+	}
+	
+	public static ExternalFoldersManager getExternalFoldersManager() {
+		return MANAGER;
+	}
+	
 	/*
 	 * Returns a set of external path to external folders referred to on the given classpath.
 	 * Returns null if none.
 	 */
-	public static HashSet 	getExternalFolders(IClasspathEntry[] classpath) {
+	public static HashSet getExternalFolders(IClasspathEntry[] classpath) {
 		if (classpath == null)
 			return null;
 		HashSet folders = null;
@@ -92,8 +103,8 @@ public class ExternalFoldersManager {
 		return addFolder(externalFolderPath, getExternalFoldersProject());
 	}
 
-	private synchronized IFolder addFolder(IPath externalFolderPath, IProject externalFoldersProject) {
-		HashMap knownFolders = getFolders();
+	private IFolder addFolder(IPath externalFolderPath, IProject externalFoldersProject) {
+		Map knownFolders = getFolders();
 		Object existing = knownFolders.get(externalFolderPath);
 		if (existing != null) {
 			return (IFolder) existing;
@@ -129,25 +140,27 @@ public class ExternalFoldersManager {
 			project.delete(true, monitor);
 	}
 
-	private synchronized ArrayList getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException {
+	private ArrayList getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException {
 		DeltaProcessingState state = JavaModelManager.getDeltaState();
 		HashMap roots = state.roots;
 		HashMap sourceAttachments = state.sourceAttachments;
 		if (roots == null && sourceAttachments == null)
 			return null;
-		HashMap knownFolders = getFolders();
-		Iterator iterator = knownFolders.entrySet().iterator();
+		Map knownFolders = getFolders();
 		ArrayList result = null;
-		while (iterator.hasNext()) {
-			Map.Entry entry = (Map.Entry) iterator.next();
-			IPath path = (IPath) entry.getKey();
-			if ((roots != null && !roots.containsKey(path))
-					&& (sourceAttachments != null && !sourceAttachments.containsKey(path))) {
-				IFolder folder = (IFolder) entry.getValue();
-				if (folder != null) {
-					if (result == null)
-						result = new ArrayList();
-					result.add(folder);
+		synchronized (knownFolders) {
+			Iterator iterator = knownFolders.entrySet().iterator();
+			while (iterator.hasNext()) {
+				Map.Entry entry = (Map.Entry) iterator.next();
+				IPath path = (IPath) entry.getKey();
+				if ((roots != null && !roots.containsKey(path))
+						&& (sourceAttachments != null && !sourceAttachments.containsKey(path))) {
+					IFolder folder = (IFolder) entry.getValue();
+					if (folder != null) {
+						if (result == null)
+							result = new ArrayList();
+						result.add(folder);
+					}
 				}
 			}
 		}
@@ -222,13 +235,13 @@ public class ExternalFoldersManager {
 		project.create(desc, IResource.HIDDEN, monitor);
 	}
 
-	public synchronized IFolder getFolder(IPath externalFolderPath) {
+	public IFolder getFolder(IPath externalFolderPath) {
 		return (IFolder) getFolders().get(externalFolderPath);
 	}
 
-	private HashMap getFolders() {
+	private Map getFolders() {
 		if (this.folders == null) {
-			this.folders = new HashMap();
+			Map tempFolders = new HashMap();
 			IProject project = getExternalFoldersProject();
 			try {
 				if (!project.isAccessible()) {
@@ -237,7 +250,7 @@ public class ExternalFoldersManager {
 						openExternalFoldersProject(project, null/*no progress*/);
 					} else {
 						// if project doesn't exist, do not open and recreate it as it means that there are no external folders
-						return this.folders;
+						return this.folders = Collections.synchronizedMap(tempFolders);
 					}
 				}
 				IResource[] members = project.members();
@@ -245,12 +258,13 @@ public class ExternalFoldersManager {
 					IResource member = members[i];
 					if (member.getType() == IResource.FOLDER && member.isLinked() && member.getName().startsWith(LINKED_FOLDER_NAME)) {
 						IPath externalFolderPath = member.getLocation();
-						this.folders.put(externalFolderPath, member);
+						tempFolders.put(externalFolderPath, member);
 					}
 				}
 			} catch (CoreException e) {
 				Util.log(e, "Exception while initializing external folders"); //$NON-NLS-1$
 			}
+			this.folders = Collections.synchronizedMap(tempFolders);
 		}
 		return this.folders;
 	}
@@ -258,6 +272,36 @@ public class ExternalFoldersManager {
 	/*
 	 * Refreshes the external folders referenced on the classpath of the given source project
 	 */
+	public void refreshReferences(final IProject[] sourceProjects, IProgressMonitor monitor) {
+		IProject externalProject = getExternalFoldersProject();
+		try {
+			HashSet externalFolders = null;
+			for (int index = 0; index < sourceProjects.length; index++) {
+				if (sourceProjects[index].equals(externalProject))
+					continue;
+				if (!JavaProject.hasJavaNature(sourceProjects[index]))
+					continue;
+
+				HashSet foldersInProject = getExternalFolders(((JavaProject) JavaCore.create(sourceProjects[index])).getResolvedClasspath());
+				
+				if (foldersInProject == null || foldersInProject.size() == 0)
+					continue;
+				if (externalFolders == null)
+					externalFolders = new HashSet();
+				
+				externalFolders.addAll(foldersInProject);
+			}
+			if (externalFolders == null) 
+				return;
+
+			Iterator iterator = externalFolders.iterator();
+			Job refreshJob = new RefreshJob(iterator);
+			refreshJob.schedule();
+		} catch (CoreException e) {
+			Util.log(e, "Exception while refreshing external project"); //$NON-NLS-1$
+		}
+		return;
+	}
 	public void refreshReferences(IProject source, IProgressMonitor monitor) {
 		IProject externalProject = getExternalFoldersProject();
 		if (source.equals(externalProject))
@@ -268,25 +312,9 @@ public class ExternalFoldersManager {
 			HashSet externalFolders = getExternalFolders(((JavaProject) JavaCore.create(source)).getResolvedClasspath());
 			if (externalFolders == null)
 				return;
-			final Iterator iterator = externalFolders.iterator();
-			Job refreshJob = new Job(Messages.refreshing_external_folders) {
-				public boolean belongsTo(Object family) {
-					return family == ResourcesPlugin.FAMILY_MANUAL_REFRESH;
-				}
-				protected IStatus run(IProgressMonitor pm) {
-					try {
-						while (iterator.hasNext()) {
-							IPath externalPath = (IPath) iterator.next();
-							IFolder folder = getFolder(externalPath);
-							if (folder != null)
-								folder.refreshLocal(IResource.DEPTH_INFINITE, pm);
-						}
-					} catch (CoreException e) {
-						return e.getStatus();
-					}
-					return Status.OK_STATUS;
-				}
-			};
+			Iterator iterator = externalFolders.iterator();
+			
+			Job refreshJob = new RefreshJob(iterator);
 			refreshJob.schedule();
 		} catch (CoreException e) {
 			Util.log(e, "Exception while refreshing external project"); //$NON-NLS-1$
@@ -294,9 +322,35 @@ public class ExternalFoldersManager {
 		return;
 	}
 
-	public synchronized IFolder removeFolder(IPath externalFolderPath) {
+	public IFolder removeFolder(IPath externalFolderPath) {
 		return (IFolder) getFolders().remove(externalFolderPath);
 	}
 
-
+	class RefreshJob extends Job {
+		Iterator externalFolders = null;
+		RefreshJob(Iterator externalFolders){
+			super(Messages.refreshing_external_folders);
+			this.externalFolders = externalFolders;
+		}
+		
+		public boolean belongsTo(Object family) {
+			return family == ResourcesPlugin.FAMILY_MANUAL_REFRESH;
+		}
+		
+		protected IStatus run(IProgressMonitor pm) {
+			try {
+				while (this.externalFolders.hasNext()) {
+					IPath externalPath = (IPath) this.externalFolders.next();
+					IFolder folder = getFolder(externalPath);
+					if (folder != null) {
+						folder.refreshLocal(IResource.DEPTH_INFINITE, pm);
+					}
+				}
+			} catch (CoreException e) {
+				return e.getStatus();
+			}
+			return Status.OK_STATUS;
+		}
+	}
+	
 }
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModel.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModel.java
index 173f031..d2e6aba 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModel.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -49,7 +49,7 @@ public class JavaModel extends Openable implements IJavaModel {
 
 	/**
 	 * A set of external files ({@link #existingExternalFiles}) which have
-	 * been confirmed as file (ie. which returns true to {@link java.io.File#isFile()}.
+	 * been confirmed as file (i.e. which returns true to {@link java.io.File#isFile()}.
 	 * Note this cache is kept for the whole session.
 	 */
 	public static HashSet existingExternalConfirmedFiles = new HashSet();
@@ -366,14 +366,14 @@ private synchronized static boolean existingExternalFilesContains(File externalF
 }
 
 /**
- * Helper method - returns whether an object is afile (ie. which returns true to {@link java.io.File#isFile()}.
+ * Helper method - returns whether an object is afile (i.e. which returns true to {@link java.io.File#isFile()}.
  */
 public static boolean isFile(Object target) {
 	return getFile(target) != null;
 }
 
 /**
- * Helper method - returns the file item (ie. which returns true to {@link java.io.File#isFile()},
+ * Helper method - returns the file item (i.e. which returns true to {@link java.io.File#isFile()},
  * or null if unbound
  */
 public static synchronized File getFile(Object target) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
index 38da6b2..65d27c4 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
@@ -212,6 +212,11 @@ public class JavaModelManager implements ISaveParticipant, IContentTypeChangeLis
 	public static final String ANNOTATION_PROCESSOR_MANAGER_EXTPOINT_ID = "annotationProcessorManager" ;  //$NON-NLS-1$
 
 	/**
+	 * Name of the JVM parameter to specify whether or not referenced JAR should be resolved for container libraries.
+	 */
+	private static final String RESOLVE_REFERENCED_LIBRARIES_FOR_CONTAINERS = "resolveReferencedLibrariesForContainers"; //$NON-NLS-1$
+	
+	/**
 	 * Special value used for recognizing ongoing initialization and breaking initialization cycles
 	 */
 	public final static IPath VARIABLE_INITIALIZATION_IN_PROGRESS = new Path("Variable Initialization In Progress"); //$NON-NLS-1$
@@ -257,6 +262,8 @@ public class JavaModelManager implements ISaveParticipant, IContentTypeChangeLis
 
 	public static boolean PERF_VARIABLE_INITIALIZER = false;
 	public static boolean PERF_CONTAINER_INITIALIZER = false;
+	// Non-static, which will give it a chance to retain the default when and if JavaModelManager is restarted.
+	boolean resolveReferencedLibrariesForContainers = false;
 
 	public final static ICompilationUnit[] NO_WORKING_COPY = new ICompilationUnit[0];
 
@@ -451,7 +458,7 @@ public class JavaModelManager implements ISaveParticipant, IContentTypeChangeLis
 	/* whether an AbortCompilationUnit should be thrown when the source of a compilation unit cannot be retrieved */
 	public ThreadLocal abortOnMissingSource = new ThreadLocal();
 
-	private ExternalFoldersManager externalFoldersManager = new ExternalFoldersManager();
+	private ExternalFoldersManager externalFoldersManager = ExternalFoldersManager.getExternalFoldersManager();
 
 	/**
 	 * Returns whether the given full path (for a package) conflicts with the output location
@@ -1540,6 +1547,8 @@ public class JavaModelManager implements ISaveParticipant, IContentTypeChangeLis
 		if (Platform.isRunning()) {
 			this.indexManager = new IndexManager();
 			this.nonChainingJars = loadNonChainingJarsCache();
+			String includeContainerReferencedLib = System.getProperty(RESOLVE_REFERENCED_LIBRARIES_FOR_CONTAINERS);
+			this.resolveReferencedLibrariesForContainers = TRUE.equalsIgnoreCase(includeContainerReferencedLib);
 		}
 	}
 
@@ -1670,7 +1679,7 @@ public class JavaModelManager implements ISaveParticipant, IContentTypeChangeLis
 	/*
 	 * Return a new Java 6 annotation processor manager.  The manager will need to
 	 * be configured before it can be used.  Returns null if a manager cannot be
-	 * created, ie if the current VM does not support Java 6 annotation processing.
+	 * created, i.e. if the current VM does not support Java 6 annotation processing.
 	 */
 	public AbstractAnnotationProcessorManager createAnnotationProcessorManager() {
 		synchronized(this) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java
index 842a30f..08c4b60 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -309,7 +309,7 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
 				getSubProgressMonitor(1));
 			setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
 			while (resource instanceof IFolder) {
-				// deleting a package: delete the parent if it is empty (eg. deleting x.y where folder x doesn't have resources but y)
+				// deleting a package: delete the parent if it is empty (e.g. deleting x.y where folder x doesn't have resources but y)
 				// without deleting the package fragment root
 				resource = resource.getParent();
 				if (!resource.equals(rootResource) && resource.members().length == 0) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
index 4c70c3f..781dc69 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
@@ -2671,8 +2671,19 @@ public class JavaProject
 						if (cEntry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
 							// resolve ".." in library path
 							cEntry = cEntry.resolvedDotDot();
-							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=305037
-							// responsibility of resolving chained (referenced) libraries lies with the container
+							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=313965
+							// Do not resolve if the system attribute is set to false	
+							if (resolveChainedLibraries
+									&& JavaModelManager.getJavaModelManager().resolveReferencedLibrariesForContainers
+									&& result.rawReverseMap.get(cEntry.getPath()) == null) {
+								// resolve Class-Path: in manifest
+								ClasspathEntry[] extraEntries = cEntry.resolvedChainedLibraries();
+								for (int k = 0, length2 = extraEntries.length; k < length2; k++) {
+									if (!rawLibrariesPath.contains(extraEntries[k].getPath())) {
+										addToResult(rawEntry, extraEntries[k], result, resolvedEntries, externalFoldersManager, referencedEntriesMap, false);
+									}
+								}
+							}
 						}
 						addToResult(rawEntry, cEntry, result, resolvedEntries, externalFoldersManager, referencedEntriesMap, false);
 					}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
index 4e65340..cb1e11c 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
index e34b9d2..9623813 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
@@ -71,7 +71,7 @@ public class SetClasspathOperation extends ChangeClasspathOperation {
 			ClasspathChange classpathChange = perProjectInfo.setRawClasspath(this.newRawClasspath, this.referencedEntries, this.newOutputLocation, JavaModelStatus.VERIFIED_OK/*format is ok*/);
 
 			// if needed, generate delta, update project ref, create markers, ...
-			classpathChanged(classpathChange);
+			classpathChanged(classpathChange, true/*refresh if external linked folder already exists*/);
 
 			// write .classpath file
 			if (this.canChangeResources && perProjectInfo.writeAndCacheClasspath(this.project, this.newRawClasspath, this.newOutputLocation))
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetContainerOperation.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetContainerOperation.java
index 0448064..4a498fb 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetContainerOperation.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetContainerOperation.java
@@ -107,7 +107,7 @@ public class SetContainerOperation extends ChangeClasspathOperation {
 					ClasspathChange classpathChange = affectedProject.getPerProjectInfo().resetResolvedClasspath();
 
 					// if needed, generate delta, update project ref, create markers, ...
-					classpathChanged(classpathChange);
+					classpathChanged(classpathChange, i==0/*refresh external linked folder only once*/);
 
 					if (this.canChangeResources) {
 						// touch project to force a build if needed
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetVariablesOperation.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetVariablesOperation.java
index aa2a75b..e4dfc5c 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetVariablesOperation.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetVariablesOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -144,7 +144,7 @@ public class SetVariablesOperation extends ChangeClasspathOperation {
 						ClasspathChange classpathChange = affectedProject.getPerProjectInfo().resetResolvedClasspath();
 
 						// if needed, generate delta, update project ref, create markers, ...
-						classpathChanged(classpathChange);
+						classpathChanged(classpathChange, true/*refresh if external linked folder already exists*/);
 
 						if (this.canChangeResources) {
 							// touch project to force a build if needed
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AdditionalTypeCollection.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AdditionalTypeCollection.java
index 5098dca..9bf892b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AdditionalTypeCollection.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AdditionalTypeCollection.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@ char[][] definedTypeNames;
 
 protected AdditionalTypeCollection(char[][] definedTypeNames, char[][][] qualifiedReferences, char[][] simpleNameReferences, char[][] rootReferences) {
 	super(qualifiedReferences, simpleNameReferences, rootReferences);
-	this.definedTypeNames = definedTypeNames; // do not bother interning member type names (ie. 'A$M')
+	this.definedTypeNames = definedTypeNames; // do not bother interning member type names (i.e. 'A$M')
 }
 }
 
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java
index e69d9c3..5b200f6 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,7 +29,7 @@ public class State {
 String javaProjectName;
 ClasspathMultiDirectory[] sourceLocations;
 ClasspathLocation[] binaryLocations;
-// keyed by the project relative path of the type (ie. "src1/p1/p2/A.java"), value is a ReferenceCollection or an AdditionalTypeCollection
+// keyed by the project relative path of the type (i.e. "src1/p1/p2/A.java"), value is a ReferenceCollection or an AdditionalTypeCollection
 SimpleLookupTable references;
 // keyed by qualified type name "p1/p2/A", value is the project relative path which defines this type "src1/p1/p2/A.java"
 public SimpleLookupTable typeLocators;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
index 04694d6..7212053 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
@@ -502,7 +502,11 @@ private void reportHierarchy(IType focus, TypeDeclaration focusLocalType, Refere
 	fixSupertypeBindings();
 
 	int objectIndex = -1;
+	IProgressMonitor progressMonitor = this.builder.hierarchy.progressMonitor;
 	for (int current = this.typeIndex; current >= 0; current--) {
+		if (progressMonitor != null && progressMonitor.isCanceled())
+			throw new OperationCanceledException();
+		
 		ReferenceBinding typeBinding = this.typeBindings[current];
 
 		// java.lang.Object treated at the end
@@ -751,13 +755,16 @@ public void resolve(Openable[] openables, HashSet localTypes, IProgressMonitor m
 			}
 		}
 
-		// complete type bindings (ie. connect super types)
+		// complete type bindings (i.e. connect super types)
 		for (int i = 0; i < unitsIndex; i++) {
 			CompilationUnitDeclaration parsedUnit = parsedUnits[i];
 			if (parsedUnit != null) {
 				try {
-					if (hasLocalType[i]) // NB: no-op if method bodies have been already parsed
+					if (hasLocalType[i]) { // NB: no-op if method bodies have been already parsed
+						if (monitor != null && monitor.isCanceled())
+							throw new OperationCanceledException();
 						parser.getMethodBodies(parsedUnit);
+					}
 				} catch (AbortCompilation e) {
 					// classpath problem for this type: don't try to resolve (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=49809)
 					hasLocalType[i] = false;
@@ -780,6 +787,8 @@ public void resolve(Openable[] openables, HashSet localTypes, IProgressMonitor m
 			if (parsedUnit != null) {
 				boolean containsLocalType = hasLocalType[i];
 				if (containsLocalType) {
+					if (monitor != null && monitor.isCanceled())
+						throw new OperationCanceledException();
 					parsedUnit.scope.faultInTypes();
 					parsedUnit.resolve();
 				}
@@ -817,7 +826,7 @@ private void setEnvironment(LookupEnvironment lookupEnvironment, HierarchyBuilde
 }
 
 /*
- * Set the focus type (ie. the type that this resolver is computing the hierarch for.
+ * Set the focus type (i.e. the type that this resolver is computing the hierarch for.
  * Returns the binding of this focus type or null if it could not be found.
  */
 public ReferenceBinding setFocusType(char[][] compoundName) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
index 4e6e8fc..88d7e45 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -435,7 +435,14 @@ public class BindingKeyResolver extends BindingKeyParser {
 			case Wildcard.EXTENDS:
 			case Wildcard.SUPER:
 				BindingKeyResolver boundResolver = (BindingKeyResolver) this.types.get(0);
-				this.typeBinding = this.environment.createWildcard((ReferenceBinding) this.typeBinding, this.wildcardRank, (TypeBinding) boundResolver.compilerBinding, null /*no extra bound*/, kind);
+				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=157847, do not allow creation of
+				// internally inconsistent wildcards of the form '? super <null>' or '? extends <null>'
+				final Binding boundBinding = boundResolver.compilerBinding;
+				if (boundBinding instanceof TypeBinding) {
+					this.typeBinding = this.environment.createWildcard((ReferenceBinding) this.typeBinding, this.wildcardRank, (TypeBinding) boundBinding, null /*no extra bound*/, kind);
+				} else {
+					this.typeBinding = null;
+				}
 				break;
 			case Wildcard.UNBOUND:
 				this.typeBinding = this.environment.createWildcard((ReferenceBinding) this.typeBinding, this.wildcardRank, null/*no bound*/, null /*no extra bound*/, kind);
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DOMFinder.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DOMFinder.java
index 8eb8b09..f56ce63 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DOMFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DOMFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/HandleFactory.java b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/HandleFactory.java
index 497611e..9087c13 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/HandleFactory.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/HandleFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,9 +65,9 @@ public class HandleFactory {
 
 	/**
 	 * Creates an Openable handle from the given resource path.
-	 * The resource path can be a path to a file in the workbench (eg. /Proj/com/ibm/jdt/core/HandleFactory.java)
+	 * The resource path can be a path to a file in the workbench (e.g. /Proj/com/ibm/jdt/core/HandleFactory.java)
 	 * or a path to a file in a jar file - it then contains the path to the jar file and the path to the file in the jar
-	 * (eg. c:/jdk1.2.2/jre/lib/rt.jar|java/lang/Object.class or /Proj/rt.jar|java/lang/Object.class)
+	 * (e.g. c:/jdk1.2.2/jre/lib/rt.jar|java/lang/Object.class or /Proj/rt.jar|java/lang/Object.class)
 	 * NOTE: This assumes that the resource path is the toString() of an IPath,
 	 *       in other words, it uses the IPath.SEPARATOR for file path
 	 *            and it uses '/' for entries in a zip file.
diff --git a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties
index 163c443..78a1922 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -184,7 +184,7 @@ path_nullPath = Path cannot be null
 path_mustBeAbsolute = Path must be absolute
 cache_invalidLoadFactor = Incorrect load factor
 savedState_jobName = Processing Java changes since last activation
-refreshing_external_folders = "Refreshing external folders"
+refreshing_external_folders = Refreshing external folders
 
 ## java model initialization
 javamodel_initialization = Initializing Java tooling
diff --git a/eclipse/plugins/org.eclipse.jdt.core/notes/R31_buildnotes_jdt-core.html b/eclipse/plugins/org.eclipse.jdt.core/notes/R31_buildnotes_jdt-core.html
index ed4a307..7a64b2a 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/notes/R31_buildnotes_jdt-core.html
+++ b/eclipse/plugins/org.eclipse.jdt.core/notes/R31_buildnotes_jdt-core.html
@@ -1704,7 +1704,7 @@ What's new in this drop</h2>
       </ul>
 </li>
 <li>Code select now works into Javadoc comment wherever a reference can be specified
-(ie. @see, @link, @linkplain, @throws, @exception, @param or @value tags)<br>
+(i.e. @see, @link, @linkplain, @throws, @exception, @param or @value tags)<br>
 (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54968">54968</a>).<br>
 For example, hit F3 with cursor located in <code>MyClass</code>, in following Javadoc comment:
 <pre>
@@ -1898,7 +1898,7 @@ int IGNORE_DECLARING_TYPE = 0x10;
  */
 int IGNORE_RETURN_TYPE = 0x20;
 </pre>
-Note that these flags are active only for search of declarations (ie. <code>IJavaSearchConstants.DECLARATIONS</code> and <code>IJavaSearchConstants.ALL_OCCURRENCES</code>)
+Note that these flags are active only for search of declarations (i.e. <code>IJavaSearchConstants.DECLARATIONS</code> and <code>IJavaSearchConstants.ALL_OCCURRENCES</code>)
 and while searching for IJavaElement (see doc of <code>SearchPattern.createPattern(IJavaElement, int)</code> API method).
 </li>
 <li>Improved API for type name requestor. Abstract class <code>TypeNameRequestor</code> replaces interface <code>ITypeNameRequestor</code> which is deprecated.<br>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/notes/R32_buildnotes_jdt-core.html b/eclipse/plugins/org.eclipse.jdt.core/notes/R32_buildnotes_jdt-core.html
index 0eda2ea..37787aa 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/notes/R32_buildnotes_jdt-core.html
+++ b/eclipse/plugins/org.eclipse.jdt.core/notes/R32_buildnotes_jdt-core.html
@@ -2330,7 +2330,7 @@ public static final boolean camelCaseMatch(String pattern, int patternStart, int
 /**
  * Validate compatibility between given string pattern and match rule.
  *
- * Optimized (ie. returned match rule is modified) combinations are:
+ * Optimized (i.e. returned match rule is modified) combinations are:
  *  - {@link #R_PATTERN_MATCH} without any '*' or '?' in string pattern:
  * 		pattern match bit is unset,
  * 	- {@link #R_PATTERN_MATCH} and {@link #R_PREFIX_MATCH}  bits simultaneously set:
@@ -2342,7 +2342,7 @@ public static final boolean camelCaseMatch(String pattern, int patternStart, int
  * 	- {@link #R_CAMELCASE_MATCH} combined with {@link #R_PREFIX_MATCH} and {@link #R_CASE_SENSITIVE}
  * 		bits is reduced to only {@link #R_CAMELCASE_MATCH} as Camel Case search is already prefix and case sensitive.
  *
- * Rejected (ie. returned match rule -1) combinations are:
+ * Rejected (i.e. returned match rule -1) combinations are:
  * 	- {@link #R_REGEXP_MATCH} with any other match mode bit set.
  *
  * @param stringPattern The string pattern
@@ -2355,7 +2355,7 @@ public static int validateMatchRule(String stringPattern, int matchRule) {
 <li>Added Camel Case support in completion.
 When you perform code complete, the proposals list contains proposals whose name match with the camel case pattern.
 <br>
-eg. a possible proposal for TT| is ToTo.
+e.g. a possible proposal for TT| is ToTo.
 </li>
 <li>Added option to control Camel Case completion.
 <pre>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/notes/R33_buildnotes_jdt-core.html b/eclipse/plugins/org.eclipse.jdt.core/notes/R33_buildnotes_jdt-core.html
index d090bcb..6ca636e 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/notes/R33_buildnotes_jdt-core.html
+++ b/eclipse/plugins/org.eclipse.jdt.core/notes/R33_buildnotes_jdt-core.html
@@ -2156,7 +2156,7 @@ to create an instance of it:
 public static TypeNameMatch createTypeNameMatch(IType type, int modifiers)
 </pre>
 Early performance tests using added <code>searchAllTypeNames</code> method with <code>TypeNameMatchRequestor</code>
-requestor (ie. a la Open Type dialog) show interesting memory footprint reduction (around 30%). More precise measures of this
+requestor (i.e. a la Open Type dialog) show interesting memory footprint reduction (around 30%). More precise measures of this
 performance improvement will be done later...
 </li>
 <li>Added new <code>SearchEngine</code> API method for search all type names with multiple qualifications and type names
@@ -2605,7 +2605,7 @@ Eclipse SDK 3.3M2 - 15th September 2006 - 3.3 MILESTONE 2
 and <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=156491">bug 156491</a>).
 <br>
 When a search requestor (<code>SearchRequestor</code>) accepts this kind of match,
-it knows if a method reference match is a polymorphic method (ie. implemented in a super or sub type) or not.
+it knows if a method reference match is a polymorphic method (i.e. implemented in a super or sub type) or not.
 <p>
 For example, in example below:</p>
 <pre>
@@ -2995,7 +2995,7 @@ Eclipse SDK 3.3M1 - 27th June 2006
  *     . {@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type
  *     . {@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations
  *     . {@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces
- *     . {@link IJavaSearchConstants#TYPE}: look for all types (ie. classes, interfaces, enum and annotation types)
+ *     . {@link IJavaSearchConstants#TYPE}: look for all types (i.e. classes, interfaces, enum and annotation types)
  * @param scope the scope to search in
  * @param nameRequestor the requestor that collects the results of the search
  * @param waitingPolicy one of
diff --git a/eclipse/plugins/org.eclipse.jdt.core/notes/R35_buildnotes_jdt-core.html b/eclipse/plugins/org.eclipse.jdt.core/notes/R35_buildnotes_jdt-core.html
index 87fe4e6..009720c 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/notes/R35_buildnotes_jdt-core.html
+++ b/eclipse/plugins/org.eclipse.jdt.core/notes/R35_buildnotes_jdt-core.html
@@ -799,7 +799,7 @@ There is also a similar new API to complete anonymous type constructor: <code>AN
 	 * &lt;/p&gt;
 	 * &lt;p&gt;
 	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
-	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).&lt;br&gt;
+	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).&lt;br&gt;
 	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
 	 * &lt;code&gt;requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)&lt;/code&gt;.
 	 * &lt;/p&gt;
@@ -840,7 +840,7 @@ There is also a similar new API to complete anonymous type constructor: <code>AN
 	 * &lt;/p&gt;
 	 * &lt;p&gt;
 	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
-	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})&lt;br&gt;
+	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})&lt;br&gt;
 	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
 	 * &lt;code&gt;requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)&lt;/code&gt;.
 	 * &lt;/p&gt;
diff --git a/eclipse/plugins/org.eclipse.jdt.core/plugin.xml b/eclipse/plugins/org.eclipse.jdt.core/plugin.xml
index 4a044b6..3784256 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-    Copyright (c) 2004, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2004, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/schema/codeFormatter.exsd b/eclipse/plugins/org.eclipse.jdt.core/schema/codeFormatter.exsd
index 4fe77e6..61c1911 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/schema/codeFormatter.exsd
+++ b/eclipse/plugins/org.eclipse.jdt.core/schema/codeFormatter.exsd
@@ -1,111 +1,100 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jdt.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.jdt.core" id="codeFormatter" name="Code Formatters"/>
-      </appInfo>
-      <documentation>
-         This extension point allows clients to contribute new source code formatter implementations.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="codeFormatter" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified identifier of the target extension point
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  an optional identifier of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  an optional name of the extension instance
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="codeFormatter">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the class that defines the code formatter implementation. This class must be a public implementation of &lt;code&gt;org.eclipse.jdt.core.ICodeFormatter&lt;/code&gt; with a public 0-argument constructor.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         2.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jdt.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.jdt.core" id="codeFormatter" name="Code Formatters"/>
+      </appInfo>
+      <documentation>
+         This extension point allows clients to contribute new source code formatter implementations.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element deprecated="true" />
+         </appInfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="codeFormatter" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="codeFormatter">
+      <complexType>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the class that defines the code formatter implementation. This class must be a public implementation of &lt;code&gt;org.eclipse.jdt.core.ICodeFormatter&lt;/code&gt; with a public 0-argument constructor.
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         2.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
          Example of an implementation of &lt;code&gt;ICodeFormatter&lt;/code&gt;:  &lt;pre&gt;                                                                       
 &lt;extension point=&quot;org.eclipse.jdt.core.codeFormatter&quot;&gt;            
    &lt;codeFormatter                                                                                              
       class=&quot;com.example.MyCodeFormatter&quot;/&gt;                           
 &lt;/extension&gt;
-&lt;/pre&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2000, 2004 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which accompanies 
-this distribution, and is available at &lt;a
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-     </documentation>
-   </annotation>
-
-</schema>
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2000, 2010 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at &lt;a
+href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/eclipse/plugins/org.eclipse.jdt.core/schema/compiler.dtd b/eclipse/plugins/org.eclipse.jdt.core/schema/compiler.dtd
index f838dd4..7d989a3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/schema/compiler.dtd
+++ b/eclipse/plugins/org.eclipse.jdt.core/schema/compiler.dtd
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!ELEMENT compiler (error*,command_line?,options?,classpaths?,error*,sources*,extra_problems?,stats?,exception*)>
+<!ELEMENT compiler (error*,command_line?,options?,classpaths?,error*,warning*,sources*,extra_problems?,stats?,exception*)>
 <!ELEMENT command_line (argument*)>
 <!ELEMENT options (option*)>
 <!ELEMENT classpaths (classpath+)>
 <!ELEMENT error (#PCDATA)>
+<!ELEMENT warning (#PCDATA)>
 <!ELEMENT sources (source+)>
 <!ELEMENT source (problems*,tasks*,(classfile | error)*)>
 <!ELEMENT problems (problem+)>
@@ -68,6 +69,7 @@
 >
 <!ATTLIST classfile path CDATA #REQUIRED>
 <!ATTLIST error message CDATA #REQUIRED>
+<!ATTLIST warning message CDATA #REQUIRED>
 <!ATTLIST problem_summary problems CDATA #REQUIRED
                           errors   CDATA #REQUIRED
                           warnings CDATA #REQUIRED
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ecj.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ecj.xml
index e985d76..c4ec3ba 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ecj.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ecj.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
<!--
+
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac.xml
index 8c7d2ac..22e0ccc 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2.xml
index a5fe20e..52ce9d8 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2_linux.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2_linux.xml
index 6d38b19..91f931d 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2_linux.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac2_linux.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml
index 7a0cae9..3e2cbbc 100755
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/exportplugin.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/exportplugin.xml
index 1223454..f15df63 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/exportplugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/exportplugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
<!--
+
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/ikvm_script.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/ikvm_script.xml
index ff090db..922bb32 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/ikvm_script.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/ikvm_script.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/oldexportplugin.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/oldexportplugin.xml
index 4b76405..79fe67d 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/scripts/oldexportplugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.core/scripts/oldexportplugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
<!--
+
+<!--
     Copyright (c) 2007, 2009 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
index 11867b3..26763cd 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
@@ -199,13 +199,13 @@ public class SearchEngine {
 	 * <p>
 	 * By default, hierarchy scopes include all direct and indirect supertypes and subtypes of the
 	 * focus type. This method, however, allows to restrict the hierarchy to true subtypes,
-	 * not including supertypes. Also inclusion of the focus type itself is controled by a parameter. 
+	 * and exclude supertypes. Also, inclusion of the focus type itself is controlled by a parameter. 
 	 * </p>
 	 * 
 	 * @param project the project to which to constrain the search, or <code>null</code> if
 	 *        search should consider all types in the workspace 
 	 * @param type the focus of the hierarchy scope
-	 * @param onlySubtypes if true only subtypes of <code>type</code> are considered
+	 * @param onlySubtypes if <code>true</code> only subtypes of <code>type</code> are considered
 	 * @param includeFocusType if true the focus type <code>type</code> is included in the resulting scope, 
 	 * 		  otherwise it is excluded
 	 * @param owner the owner of working copies that take precedence over original compilation units, 
@@ -620,7 +620,7 @@ public class SearchEngine {
 	 *		<li>{@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type</li>
 	 * 	<li>{@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations</li>
 	 *		<li>{@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces</li>
-	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (ie. classes, interfaces, enum and annotation types)</li>
+	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (i.e. classes, interfaces, enum and annotation types)</li>
 	 *	</ul>
 	 * @param scope the scope to search in
 	 * @param nameRequestor the requestor that collects the results of the search
@@ -709,7 +709,7 @@ public class SearchEngine {
 	 *		<li>{@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type</li>
 	 * 	<li>{@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations</li>
 	 *		<li>{@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces</li>
-	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (ie. classes, interfaces, enum and annotation types)</li>
+	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (i.e. classes, interfaces, enum and annotation types)</li>
 	 *	</ul>
 	 * @param scope the scope to search in
 	 * @param nameRequestor the requestor that collects the results of the search
@@ -810,7 +810,7 @@ public class SearchEngine {
 	 *		<li>{@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type</li>
 	 * 	<li>{@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations</li>
 	 *		<li>{@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces</li>
-	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (ie. classes, interfaces, enum and annotation types)</li>
+	 * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (i.e. classes, interfaces, enum and annotation types)</li>
 	 *	</ul>
 	 * @param scope the scope to search in
 	 * @param nameMatchRequestor the {@link TypeNameMatchRequestor requestor} that collects
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java
index 31569e0..cf96ff3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java
@@ -24,6 +24,7 @@ import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.jdt.internal.core.LocalVariable;
 import org.eclipse.jdt.internal.core.index.EntryResult;
 import org.eclipse.jdt.internal.core.index.Index;
+import org.eclipse.jdt.internal.core.search.HierarchyScope;
 import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
 import org.eclipse.jdt.internal.core.search.JavaSearchScope;
 import org.eclipse.jdt.internal.core.search.StringOperation;
@@ -275,6 +276,13 @@ public SearchPattern(int matchRule) {
  * @nooverride This method is not intended to be re-implemented or extended by clients.
  */
 public void acceptMatch(String relativePath, String containerPath, char separator, SearchPattern pattern, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope) {
+	acceptMatch(relativePath, containerPath, separator, pattern, requestor, participant, scope, null);
+}
+/**
+ * @noreference This method is not intended to be referenced by clients.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ */
+public void acceptMatch(String relativePath, String containerPath, char separator, SearchPattern pattern, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor monitor) {
 
 	if (scope instanceof JavaSearchScope) {
 		JavaSearchScope javaSearchScope = (JavaSearchScope) scope;
@@ -295,7 +303,9 @@ public void acceptMatch(String relativePath, String containerPath, char separato
 		buffer.append(separator);
 		buffer.append(relativePath);
 		String documentPath = buffer.toString();
-		if (scope.encloses(documentPath))
+		boolean encloses = (scope instanceof HierarchyScope) ? ((HierarchyScope)scope).encloses(documentPath, monitor)
+							: scope.encloses(documentPath);
+		if (encloses) 
 			if (!requestor.acceptIndexMatch(documentPath, pattern, participant, null))
 				throw new OperationCanceledException();
 
@@ -1379,83 +1389,76 @@ private static SearchPattern createPackagePattern(String patternString, int limi
  * <ul>
  * 	<li>Type patterns have the following syntax:
  * 		<p><b><code>[qualification '.']typeName ['&lt;' typeArguments '&gt;']</code></b></p>
- *			<p>Some samples:<code>
+ *			<p>Examples:</p>
  *			<ul>
- * 			<li>java.lang.Object</li>
- *				<li>Runnable</li>
- *				<li>List&lt;String&gt;</li>
+ * 			<li><code>java.lang.Object</code></li>
+ *				<li><code>Runnable</code></li>
+ *				<li><code>List&lt;String&gt;</code></li>
  *			</ul>
- *			</code>
- *			</p><p>
+ *			<p>
  *			Type arguments can be specified to search for references to parameterized types
  * 		using following syntax:</p><p>
  * 		<b><code>'&lt;' { [ '?' {'extends'|'super'} ] type ( ',' [ '?' {'extends'|'super'} ] type )* | '?' } '&gt;'</code></b>
- * 		</p><p><i>
+ * 		</p><div style="font-style:italic;">
  * 		Note that:
  * 		<ul>
  * 			<li>'*' is not valid inside type arguments definition &lt;&gt;</li>
  * 			<li>'?' is treated as a wildcard when it is inside &lt;&gt; (i.e. it must be put on first position of the type argument)</li>
  * 		</ul>
- * 		</i></p>
+ * 		</div>
  * 	</li>
  * 	<li>Method patterns have the following syntax:
  * 		<p><b><code>[declaringType '.'] ['&lt;' typeArguments '&gt;'] methodName ['(' parameterTypes ')'] [returnType]</code></b></p>
- *			<p>Type arguments have the same syntax as explained in the type patterns section</p>
- *			<p>Some samples:<code>
+ *			<p>Type arguments have the same syntax as explained in the type patterns section.</p>
+ *			<p>Examples:</p>
  *			<ul>
- *				<li>java.lang.Runnable.run() void</li>
- *				<li>main(*)</li>
- *				<li>&lt;String&gt;toArray(String[])</li>
+ *				<li><code>java.lang.Runnable.run() void</code></li>
+ *				<li><code>main(*)</code></li>
+ *				<li><code>&lt;String&gt;toArray(String[])</code></li>
  *			</ul>
- *			</code>
- *			</p>
- *		</li>
+ *	</li>
  * 	<li>Constructor patterns have the following syntax:
  *			<p><b><code>['&lt;' typeArguments '&gt;'] [declaringQualification '.'] typeName ['(' parameterTypes ')']</code></b></p>
- *			<p>Type arguments have the same syntax as explained in the type patterns section</p>
- *			<p>Some samples:<code>
+ *			<p>Type arguments have the same syntax as explained in the type patterns section.</p>
+ *			<p><i>Note that the constructor name should not be entered as it is always the same as the type name.</i></p>
+ *			<p>Examples:</p>
  *			<ul>
- *				<li>java.lang.Object()</li>
- *				<li>Test(*)</li>
- *				<li>&lt;Exception&gt;Sample(Exception)</li>
+ *				<li><code>java.lang.Object()</code></li>
+ *				<li><code>Test(*)</code></li>
+ *				<li><code>&lt;Exception&gt;Sample(Exception)</code></li>
  *			</ul>
- *			</code>
- *			 </p>
+ * 		<br>
  * 	</li>
  * 	<li>Field patterns have the following syntax:
  *			<p><b><code>[declaringType '.'] fieldName [fieldType]</code></b></p>
- *			<p>Some samples:<code>
+ *			<p>Examples:</p>
  *			<ul>
- *				<li>java.lang.String.serialVersionUID long</li>
- *				<li>field*</li>
+ *				<li><code>java.lang.String.serialVersionUID long</code></li>
+ *				<li><code>field*</code></li>
  *			</ul>
- *			</code>
- *			</p>
  * 	</li>
  * 	<li>Package patterns have the following syntax:
  *			<p><b><code>packageNameSegment {'.' packageNameSegment}</code></b></p>
- *			<p>Some samples:<code>
+ *			<p>Examples:</p>
  *			<ul>
- *				<li>java.lang</li>
- *				<li>org.e*.jdt.c*e</li>
+ *				<li><code>java.lang</code></li>
+ *				<li><code>org.e*.jdt.c*e</code></li>
  *			</ul>
- *			</code>
- *			</p>
  * 	</li>
  * </ul>
  * @param searchFor determines the nature of the searched elements
  *	<ul>
  * 	<li>{@link IJavaSearchConstants#CLASS}: only look for classes</li>
- *		<li>{@link IJavaSearchConstants#INTERFACE}: only look for interfaces</li>
+ *	<li>{@link IJavaSearchConstants#INTERFACE}: only look for interfaces</li>
  * 	<li>{@link IJavaSearchConstants#ENUM}: only look for enumeration</li>
- *		<li>{@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type</li>
+ *	<li>{@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type</li>
  * 	<li>{@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations</li>
- *		<li>{@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces</li>
+ *	<li>{@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces</li>
  * 	<li>{@link IJavaSearchConstants#TYPE}: look for all types (i.e. classes, interfaces, enum and annotation types)</li>
- *		<li>{@link IJavaSearchConstants#FIELD}: look for fields</li>
- *		<li>{@link IJavaSearchConstants#METHOD}: look for methods</li>
- *		<li>{@link IJavaSearchConstants#CONSTRUCTOR}: look for constructors</li>
- *		<li>{@link IJavaSearchConstants#PACKAGE}: look for packages</li>
+ *	<li>{@link IJavaSearchConstants#FIELD}: look for fields</li>
+ *	<li>{@link IJavaSearchConstants#METHOD}: look for methods</li>
+ *	<li>{@link IJavaSearchConstants#CONSTRUCTOR}: look for constructors</li>
+ *	<li>{@link IJavaSearchConstants#PACKAGE}: look for packages</li>
  *	</ul>
  * @param limitTo determines the nature of the expected matches
  *	<ul>
@@ -1564,10 +1567,10 @@ private static SearchPattern createPackagePattern(String patternString, int limi
  *			<li>{@link #R_EXACT_MATCH} | {@link #R_ERASURE_MATCH}: if a case
  *				insensitive and erasure match is requested.</li>
  *		</ul>
- * 	Note that {@link #R_ERASURE_MATCH} or {@link #R_EQUIVALENT_MATCH} has no effect
- * 	on non-generic types/methods search.
+ * 	<p>Note that {@link #R_ERASURE_MATCH} or {@link #R_EQUIVALENT_MATCH} has no effect
+ * 	on non-generic types/methods search.</p>
  * 	<p>
- * 	Note also that the default behavior for generic types/methods search is to find exact matches.
+ * 	Note also that the default behavior for generic types/methods search is to find exact matches.</p>
  * @return a search pattern on the given string pattern, or <code>null</code> if the string pattern is ill-formed
  */
 public static SearchPattern createPattern(String stringPattern, int searchFor, int limitTo, int matchRule) {
@@ -2304,7 +2307,7 @@ public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchP
 				// TODO (kent) some clients may not need the document names
 				String[] names = entry.getDocumentNames(index);
 				for (int j = 0, n = names.length; j < n; j++)
-					acceptMatch(names[j], containerPath, separator, decodedResult, requestor, participant, scope);
+					acceptMatch(names[j], containerPath, separator, decodedResult, requestor, participant, scope, monitor);
 			}
 		}
 	} finally {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameMatch.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameMatch.java
index 69a7a51..9ca3a3a 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameMatch.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameMatch.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -74,7 +74,7 @@ public abstract int getModifiers();
  * @see IJavaElement#getAncestor(int)
  *
  * @throws NullPointerException if matched type is <code> null</code>
- * @return the existing java model package fragment root (ie. cannot be <code>null</code>
+ * @return the existing java model package fragment root (i.e. cannot be <code>null</code>
  * 	and will return <code>true</code> to <code>exists()</code> message).
  */
 public IPackageFragmentRoot getPackageFragmentRoot() {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameRequestor.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameRequestor.java
index de0a24c..159d81e 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameRequestor.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/TypeNameRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,12 +29,12 @@ public abstract class TypeNameRequestor {
 	 * </p>
 	 *
 	 * @param modifiers the modifier flags of the type. Note that for source type,
-	 *		these flags may slightly differ from thoses get after resolution.
+	 *		these flags may slightly differ from those get after resolution.
 	 *		For example an interface defined by <code>interface A {}</code>,
 	 *		although obviously public, will be returned false by <code>Flags.isPublic(modifiers)</code>
-	 *		due to the fact that its declaration does not explicitely define public flag.
+	 *		due to the fact that its declaration does not explicitly define public flag.
 	 *		@see org.eclipse.jdt.core.Flags
-	 * @param packageName the package name as specified in the package declaration (ie. a dot-separated name)
+	 * @param packageName the package name as specified in the package declaration (i.e. a dot-separated name)
 	 * @param simpleTypeName the simple name of the type
 	 * @param enclosingTypeNames if the type is a member type,
 	 *          the simple names of the enclosing types from the outer-most to the
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/CategoryTable.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/CategoryTable.java
deleted file mode 100644
index 66fddc9..0000000
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/CategoryTable.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.core.index;
-
-import org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
-
-
-/**
- * Hashtable of {char[] --> Object } typically used for the category table
- * stored in the {@link DiskIndex disk index}.
- * <p>
- * This is a more specific {@link HashtableOfObject hashtable of objects} where
- * the hash code is computed by using twice more characters than the hash
- * code computation of the {@link HashtableOfObject original hashtable}.
- * </p><p>
- * This is typically important for type declaration category table for which the
- * key postfix might have more than 16 identical characters...
- * </p>
- * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=289057"
- */
-public final class CategoryTable extends HashtableOfObject {
-
-	public CategoryTable() {
-		super();
-	}
-	public CategoryTable(int size) {
-		super(size);
-	}
-	
-	/* (non-Javadoc)
-	 * 
-	 * The hash code computation is done by using half of the 32 characters last
-	 * characters of the given array instead of only half of the 16 last ones for the
-	 * super implementation...
-	 * 
-	 * @see org.eclipse.jdt.internal.compiler.util.HashtableOfObject#hashCode(char[])
-	 */
-	protected int hashCode(char[] array) {
-		int length = array.length;
-		int hash = length == 0 ? 31 : array[0];
-		if (length < 16) {
-			for (int i = length; --i > 0;)
-				hash = (hash * 31) + array[i];
-		} else {
-			// 16 characters is enough to compute a decent hash code, don't waste time examining every character
-			for (int i = length - 1, last = i > 32 ? i - 32 : 0; i > last; i -= 2)
-				hash = (hash * 31) + array[i];
-			
-		}
-		return hash & 0x7FFFFFFF;
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.internal.compiler.util.HashtableOfObject#rehash()
-	 */
-	protected void rehash() {
-		CategoryTable newHashtable = new CategoryTable(this.elementSize * 2);		// double the number of expected elements
-		char[] currentKey;
-		for (int i = this.keyTable.length; --i >= 0;)
-			if ((currentKey = this.keyTable[i]) != null)
-				newHashtable.putUnsafely(currentKey, this.valueTable[i]);
-	
-		this.keyTable = newHashtable.keyTable;
-		this.valueTable = newHashtable.valueTable;
-		this.threshold = newHashtable.threshold;
-	}
-}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/DiskIndex.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/DiskIndex.java
index 3438860..2724ec3 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/DiskIndex.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/DiskIndex.java
@@ -132,20 +132,20 @@ SimpleSet addDocumentNames(String substring, MemoryIndex memoryIndex) throws IOE
 	}
 	return results;
 }
-private HashtableOfObject addQueryResult(HashtableOfObject results, char[] word, CategoryTable wordsToDocNumbers, MemoryIndex memoryIndex, boolean prevResults) throws IOException {
+private HashtableOfObject addQueryResult(HashtableOfObject results, char[] word, Object docs, MemoryIndex memoryIndex, boolean prevResults) throws IOException {
 	// must skip over documents which have been added/changed/deleted in the memory index
 	if (results == null)
 		results = new HashtableOfObject(13);
 	EntryResult result = prevResults ? (EntryResult) results.get(word) : null;
 	if (memoryIndex == null) {
 		if (result == null)
-			results.putUnsafely(word, new EntryResult(word, wordsToDocNumbers));
+			results.putUnsafely(word, new EntryResult(word, docs));
 		else
-			result.addDocumentTable(wordsToDocNumbers);
+			result.addDocumentTable(docs);
 	} else {
 		SimpleLookupTable docsToRefs = memoryIndex.docsToReferences;
 		if (result == null) result = new EntryResult(word, null);
-		int[] docNumbers = readDocumentNumbers(wordsToDocNumbers.get(word));
+		int[] docNumbers = readDocumentNumbers(docs);
 		for (int i = 0, l = docNumbers.length; i < l; i++) {
 			String docName = readDocumentName(docNumbers[i]);
 			if (!docsToRefs.containsKey(docName))
@@ -167,14 +167,15 @@ HashtableOfObject addQueryResults(char[][] categories, char[] key, int matchRule
 	boolean prevResults = false;
 	if (key == null) {
 		for (int i = 0, l = categories.length; i < l; i++) {
-			CategoryTable wordsToDocNumbers = readCategoryTable(categories[i], true); // cache if key is null since its a definite match
+			HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], true); // cache if key is null since its a definite match
 			if (wordsToDocNumbers != null) {
 				char[][] words = wordsToDocNumbers.keyTable;
+				Object[] values = wordsToDocNumbers.valueTable;
 				if (results == null)
 					results = new HashtableOfObject(wordsToDocNumbers.elementSize);
 				for (int j = 0, m = words.length; j < m; j++)
 					if (words[j] != null)
-						results = addQueryResult(results, words[j], wordsToDocNumbers, memoryIndex, prevResults);
+						results = addQueryResult(results, words[j], values[j], memoryIndex, prevResults);
 			}
 			prevResults = results != null;
 		}
@@ -184,21 +185,23 @@ HashtableOfObject addQueryResults(char[][] categories, char[] key, int matchRule
 		switch (matchRule) {
 			case SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE:
 				for (int i = 0, l = categories.length; i < l; i++) {
-					CategoryTable wordsToDocNumbers = readCategoryTable(categories[i], false);
-					if (wordsToDocNumbers != null && wordsToDocNumbers.containsKey(key))
-						results = addQueryResult(results, key, wordsToDocNumbers, memoryIndex, prevResults);
+					HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], false);
+					Object value;
+					if (wordsToDocNumbers != null && (value = wordsToDocNumbers.get(key)) != null)
+						results = addQueryResult(results, key, value, memoryIndex, prevResults);
 					prevResults = results != null;
 				}
 				break;
 			case SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE:
 				for (int i = 0, l = categories.length; i < l; i++) {
-					CategoryTable wordsToDocNumbers = readCategoryTable(categories[i], false);
+					HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], false);
 					if (wordsToDocNumbers != null) {
 						char[][] words = wordsToDocNumbers.keyTable;
+						Object[] values = wordsToDocNumbers.valueTable;
 						for (int j = 0, m = words.length; j < m; j++) {
 							char[] word = words[j];
 							if (word != null && key[0] == word[0] && CharOperation.prefixEquals(key, word))
-								results = addQueryResult(results, word, wordsToDocNumbers, memoryIndex, prevResults);
+								results = addQueryResult(results, word, values[j], memoryIndex, prevResults);
 						}
 					}
 					prevResults = results != null;
@@ -206,13 +209,14 @@ HashtableOfObject addQueryResults(char[][] categories, char[] key, int matchRule
 				break;
 			default:
 				for (int i = 0, l = categories.length; i < l; i++) {
-					CategoryTable wordsToDocNumbers = readCategoryTable(categories[i], false);
+					HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], false);
 					if (wordsToDocNumbers != null) {
 						char[][] words = wordsToDocNumbers.keyTable;
+						Object[] values = wordsToDocNumbers.valueTable;
 						for (int j = 0, m = words.length; j < m; j++) {
 							char[] word = words[j];
 							if (word != null && Index.isMatch(key, word, matchRule))
-								results = addQueryResult(results, word, wordsToDocNumbers, memoryIndex, prevResults);
+								results = addQueryResult(results, word, values[j], memoryIndex, prevResults);
 						}
 					}
 					prevResults = results != null;
@@ -344,9 +348,9 @@ private void copyQueryResults(HashtableOfObject categoryToWords, int newPosition
 		char[] categoryName = categoryNames[i];
 		if (categoryName != null) {
 			SimpleWordSet wordSet = (SimpleWordSet) wordSets[i];
-			CategoryTable wordsToDocs = (CategoryTable) this.categoryTables.get(categoryName);
+			HashtableOfObject wordsToDocs = (HashtableOfObject) this.categoryTables.get(categoryName);
 			if (wordsToDocs == null)
-				this.categoryTables.put(categoryName, wordsToDocs = new CategoryTable(wordSet.elementSize));
+				this.categoryTables.put(categoryName, wordsToDocs = new HashtableOfObject(wordSet.elementSize));
 
 			char[][] words = wordSet.words;
 			for (int j = 0, m = words.length; j < m; j++) {
@@ -450,11 +454,11 @@ private void mergeCategories(DiskIndex onDisk, int[] positions, FileOutputStream
 	this.categoryTables = null;
 }
 private void mergeCategory(char[] categoryName, DiskIndex onDisk, int[] positions, FileOutputStream stream) throws IOException {
-	CategoryTable wordsToDocs = (CategoryTable) this.categoryTables.get(categoryName);
+	HashtableOfObject wordsToDocs = (HashtableOfObject) this.categoryTables.get(categoryName);
 	if (wordsToDocs == null)
-		wordsToDocs = new CategoryTable(3);
+		wordsToDocs = new HashtableOfObject(3);
 
-	CategoryTable oldWordsToDocs = onDisk.readCategoryTable(categoryName, true);
+	HashtableOfObject oldWordsToDocs = onDisk.readCategoryTable(categoryName, true);
 	if (oldWordsToDocs != null) {
 		char[][] oldWords = oldWordsToDocs.keyTable;
 		Object[] oldArrayOffsets = oldWordsToDocs.valueTable;
@@ -588,7 +592,7 @@ private synchronized String[] readAllDocumentNames() throws IOException {
 		this.streamBuffer = null;
 	}
 }
-private synchronized CategoryTable readCategoryTable(char[] categoryName, boolean readDocNumbers) throws IOException {
+private synchronized HashtableOfObject readCategoryTable(char[] categoryName, boolean readDocNumbers) throws IOException {
 	// result will be null if categoryName is unknown
 	int offset = this.categoryOffsets.get(categoryName);
 	if (offset == HashtableOfIntValues.NO_VALUE) {
@@ -598,7 +602,7 @@ private synchronized CategoryTable readCategoryTable(char[] categoryName, boolea
 	if (this.categoryTables == null) {
 		this.categoryTables = new HashtableOfObject(3);
 	} else {
-		CategoryTable cachedTable = (CategoryTable) this.categoryTables.get(categoryName);
+		HashtableOfObject cachedTable = (HashtableOfObject) this.categoryTables.get(categoryName);
 		if (cachedTable != null) {
 			if (readDocNumbers) { // must cache remaining document number arrays
 				Object[] arrayOffsets = cachedTable.valueTable;
@@ -611,7 +615,7 @@ private synchronized CategoryTable readCategoryTable(char[] categoryName, boolea
 	}
 
 	FileInputStream stream = new FileInputStream(this.indexFile);
-	CategoryTable categoryTable = null;
+	HashtableOfObject categoryTable = null;
 	char[][] matchingWords = null;
 	int count = 0;
 	int firstOffset = -1;
@@ -629,7 +633,7 @@ private synchronized CategoryTable readCategoryTable(char[] categoryName, boolea
 				System.err.println("size = "+size); //$NON-NLS-1$
 				System.err.println("--------------------   END   --------------------"); //$NON-NLS-1$
 			}
-			categoryTable = new CategoryTable(size);
+			categoryTable = new HashtableOfObject(size);
 		} catch (OutOfMemoryError oom) {
 			// DEBUG
 			oom.printStackTrace();
@@ -1038,10 +1042,10 @@ private void writeCategories(FileOutputStream stream) throws IOException {
 	Object[] tables = this.categoryTables.valueTable;
 	for (int i = 0, l = categoryNames.length; i < l; i++)
 		if (categoryNames[i] != null)
-			writeCategoryTable(categoryNames[i], (CategoryTable) tables[i], stream);
+			writeCategoryTable(categoryNames[i], (HashtableOfObject) tables[i], stream);
 	this.categoryTables = null;
 }
-private void writeCategoryTable(char[] categoryName, CategoryTable wordsToDocs, FileOutputStream stream) throws IOException {
+private void writeCategoryTable(char[] categoryName, HashtableOfObject wordsToDocs, FileOutputStream stream) throws IOException {
 	// the format of a category table is as follows:
 	// any document number arrays with >= 256 elements are written before the table (the offset to each array is remembered)
 	// then the number of word->int[] pairs in the table is written
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/EntryResult.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/EntryResult.java
index a3f2597..ad65513 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/EntryResult.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/EntryResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,32 +11,31 @@
 package org.eclipse.jdt.internal.core.index;
 
 import org.eclipse.jdt.core.compiler.CharOperation;
-import org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
 import org.eclipse.jdt.internal.compiler.util.SimpleSet;
 
 public class EntryResult {
 
 private char[] word;
-private HashtableOfObject[] documentTables;
+private Object[] documentTables;
 private SimpleSet documentNames;
 
-public EntryResult(char[] word, HashtableOfObject table) {
+public EntryResult(char[] word, Object table) {
 	this.word = word;
 	if (table != null)
-		this.documentTables = new HashtableOfObject[] {table};
+		this.documentTables = new Object[] {table};
 }
 public void addDocumentName(String documentName) {
 	if (this.documentNames == null)
 		this.documentNames = new SimpleSet(3);
 	this.documentNames.add(documentName);
 }
-public void addDocumentTable(HashtableOfObject table) {
+public void addDocumentTable(Object table) {
 	if (this.documentTables != null) {
 		int length = this.documentTables.length;
-		System.arraycopy(this.documentTables, 0, this.documentTables = new HashtableOfObject[length + 1], 0, length);
+		System.arraycopy(this.documentTables, 0, this.documentTables = new Object[length + 1], 0, length);
 		this.documentTables[length] = table;
 	} else {
-		this.documentTables = new HashtableOfObject[] {table};
+		this.documentTables = new Object[] {table};
 	}
 }
 public char[] getWord() {
@@ -46,7 +45,7 @@ public String[] getDocumentNames(Index index) throws java.io.IOException {
 	if (this.documentTables != null) {
 		int length = this.documentTables.length;
 		if (length == 1 && this.documentNames == null) { // have a single table
-			Object offset = this.documentTables[0].get(this.word);
+			Object offset = this.documentTables[0];
 			int[] numbers = index.diskIndex.readDocumentNumbers(offset);
 			String[] names = new String[numbers.length];
 			for (int i = 0, l = numbers.length; i < l; i++)
@@ -55,7 +54,7 @@ public String[] getDocumentNames(Index index) throws java.io.IOException {
 		}
 
 		for (int i = 0; i < length; i++) {
-			Object offset = this.documentTables[i].get(this.word);
+			Object offset = this.documentTables[i];
 			int[] numbers = index.diskIndex.readDocumentNumbers(offset);
 			for (int j = 0, k = numbers.length; j < k; j++)
 				addDocumentName(index.diskIndex.readDocumentName(numbers[j]));
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
index 0c755aa..ba5c38b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
@@ -651,7 +651,12 @@ public class BasicSearchEngine {
 			if (copies != null) {
 				for (int i = 0; i < copiesLength; i++) {
 					final ICompilationUnit workingCopy = copies[i];
-					if (!scope.encloses(workingCopy)) continue;
+					if (scope instanceof HierarchyScope) {
+						if (!((HierarchyScope)scope).encloses(workingCopy, progressMonitor)) continue;
+					} else {
+						if (!scope.encloses(workingCopy)) continue;
+					}
+					
 					final String path = workingCopy.getPath().toString();
 					if (workingCopy.isConsistent()) {
 						IPackageDeclaration[] packageDeclarations = workingCopy.getPackageDeclarations();
@@ -1140,7 +1145,11 @@ public class BasicSearchEngine {
 			if (copies != null) {
 				for (int i = 0; i < copiesLength; i++) {
 					final ICompilationUnit workingCopy = copies[i];
-					if (!scope.encloses(workingCopy)) continue;
+					if (scope instanceof HierarchyScope) {
+						if (!((HierarchyScope)scope).encloses(workingCopy, progressMonitor)) continue;
+					} else {
+						if (!scope.encloses(workingCopy)) continue;
+					}
 					final String path = workingCopy.getPath().toString();
 					if (workingCopy.isConsistent()) {
 						IPackageDeclaration[] packageDeclarations = workingCopy.getPackageDeclarations();
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/HierarchyScope.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/HierarchyScope.java
index e66de58..6224c5b 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/HierarchyScope.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/HierarchyScope.java
@@ -18,6 +18,7 @@ import java.util.Iterator;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.*;
 import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.eclipse.jdt.internal.core.*;
@@ -259,13 +260,16 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 	 * @see IJavaSearchScope#encloses(String)
 	 */
 	public boolean encloses(String resourcePath) {
+		return encloses(resourcePath, null);
+	}
+	public boolean encloses(String resourcePath, IProgressMonitor progressMonitor) {
 		if (this.hierarchy == null) {
 			if (resourcePath.equals(this.focusPath)) {
 				return true;
 			} else {
 				if (this.needsRefresh) {
 					try {
-						initialize();
+						initialize(progressMonitor);
 					} catch (JavaModelException e) {
 						return false;
 					}
@@ -278,7 +282,7 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 		}
 		if (this.needsRefresh) {
 			try {
-				refresh();
+				refresh(progressMonitor);
 			} catch(JavaModelException e) {
 				return false;
 			}
@@ -305,19 +309,22 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 	public boolean enclosesFineGrained(IJavaElement element) {
 		if ((this.subTypes == null) && this.allowMemberAndEnclosingTypes) 
 			return true; // no fine grained checking requested
-		return encloses(element);
+		return encloses(element, null);
 	}
 	/* (non-Javadoc)
 	 * @see IJavaSearchScope#encloses(IJavaElement)
 	 */
 	public boolean encloses(IJavaElement element) {
+		return encloses(element, null);
+	}
+	public boolean encloses(IJavaElement element, IProgressMonitor progressMonitor) {
 		if (this.hierarchy == null) {
 			if (this.includeFocusType && this.focusType.equals(element.getAncestor(IJavaElement.TYPE))) {
 				return true;
 			} else {
 				if (this.needsRefresh) {
 					try {
-						initialize();
+						initialize(progressMonitor);
 					} catch (JavaModelException e) {
 						return false;
 					}
@@ -330,7 +337,7 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 		}
 		if (this.needsRefresh) {
 			try {
-				refresh();
+				refresh(progressMonitor);
 			} catch(JavaModelException e) {
 				return false;
 			}
@@ -409,7 +416,7 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 	public IPath[] enclosingProjectsAndJars() {
 		if (this.needsRefresh) {
 			try {
-				refresh();
+				refresh(null);
 			} catch(JavaModelException e) {
 				return new IPath[0];
 			}
@@ -417,18 +424,21 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 		return this.enclosingProjectsAndJars;
 	}
 	protected void initialize() throws JavaModelException {
+		initialize(null);
+	}
+	protected void initialize(IProgressMonitor progressMonitor) throws JavaModelException {
 		this.resourcePaths = new HashSet();
 		this.elements = new IResource[5];
 		this.elementCount = 0;
 		this.needsRefresh = false;
 		if (this.hierarchy == null) {
 			if (this.javaProject != null) {
-				this.hierarchy = this.focusType.newTypeHierarchy(this.javaProject, this.owner, null);
+				this.hierarchy = this.focusType.newTypeHierarchy(this.javaProject, this.owner, progressMonitor);
 			} else {
-				this.hierarchy = this.focusType.newTypeHierarchy(this.owner, null);
+				this.hierarchy = this.focusType.newTypeHierarchy(this.owner, progressMonitor);
 			}
 		} else {
-			this.hierarchy.refresh(null);
+			this.hierarchy.refresh(progressMonitor);
 		}
 		buildResourceVector();
 	}
@@ -440,8 +450,11 @@ public class HierarchyScope extends AbstractSearchScope implements SuffixConstan
 		this.needsRefresh = this.hierarchy == null ? false : ((TypeHierarchy)this.hierarchy).isAffected(delta, eventType);
 	}
 	protected void refresh() throws JavaModelException {
+		refresh(null);
+	}
+	protected void refresh(IProgressMonitor progressMonitor) throws JavaModelException {
 		if (this.hierarchy != null) {
-			initialize();
+			initialize(progressMonitor);
 		}
 	}
 	public String toString() {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
index da481a8..d267925 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -202,7 +202,7 @@ private void initializeIndexLocations() {
 					if (primaryType != null) {
 						char[][] qualifiedName = CharOperation.splitOn('.', primaryType.getFullyQualifiedName().toCharArray());
 						char[][][] qualifiedNames = ReferenceCollection.internQualifiedNames(new char[][][] {qualifiedName});
-						focusQualifiedName = qualifiedNames[0];
+						focusQualifiedName =  qualifiedNames.length == 0 ? qualifiedName : qualifiedNames[0];
 					}
 				}
 			}
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
index 18ade5f..a6ce042 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -47,7 +47,6 @@ public class IndexManager extends JobManager implements IIndexConstants {
 
 	/* need to save ? */
 	private boolean needToSave = false;
-	private static final CRC32 checksumCalculator = new CRC32();
 	private IPath javaPluginLocation = null;
 
 	/* can only replace a current state if its less than the new one */
@@ -134,7 +133,7 @@ public IPath computeIndexLocation(IPath containerPath) {
 	IPath indexLocation = (IPath) this.indexLocations.get(containerPath);
 	if (indexLocation == null) {
 		String pathString = containerPath.toOSString();
-		checksumCalculator.reset();
+		CRC32 checksumCalculator = new CRC32();
 		checksumCalculator.update(pathString.getBytes());
 		String fileName = Long.toString(checksumCalculator.getValue()) + ".index"; //$NON-NLS-1$
 		if (VERBOSE)
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
index 37dedb5..87bd73f 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -71,7 +71,7 @@ public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchP
 	Object[] names = intersectedNames.values;
 	for (int i = 0, l = names.length; i < l; i++)
 		if (names[i] != null)
-			acceptMatch((String) names[i], containerPath, separator, null/*no pattern*/, requestor, participant, scope); // AndPatterns cannot provide the decoded result
+			acceptMatch((String) names[i], containerPath, separator, null/*no pattern*/, requestor, participant, scope, progressMonitor); // AndPatterns cannot provide the decoded result
 }
 /**
  * Returns whether another query must be done.
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
index 85b9e09..19585d2 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
@@ -725,7 +725,13 @@ protected IType createTypeHandle(String simpleTypeName) {
 	return classFile.getType();
 }
 protected boolean encloses(IJavaElement element) {
-	return element != null && this.scope.encloses(element);
+	if (element != null) {
+		if (this.scope instanceof HierarchyScope)
+			return ((HierarchyScope)this.scope).encloses(element, this.progressMonitor);
+		else 
+			return this.scope.encloses(element);
+	}
+	return false;
 }
 /* (non-Javadoc)
  * Return info about last type argument of a parameterized type reference.
@@ -1143,7 +1149,7 @@ public void locateMatches(SearchDocument[] searchDocuments) throws CoreException
 			this.progressMonitor.beginTask("", searchDocuments.length); //$NON-NLS-1$
 		}
 
-		// initialize pattern for polymorphic search (ie. method reference pattern)
+		// initialize pattern for polymorphic search (i.e. method reference pattern)
 		this.patternLocator.initializePolymorphicSearch(this);
 
 		JavaProject previousJavaProject = null;
@@ -1827,7 +1833,7 @@ protected void reportAccurateParameterizedMethodReference(SearchMatch match, AST
 	if (match.getRule() == 0) return;
 	if (!encloses((IJavaElement)match.getElement())) return;
 
-	// If there's type arguments, look for end (ie. char '>') of last one.
+	// If there's type arguments, look for end (i.e. char '>') of last one.
 	int start = match.getOffset();
 	if (typeArguments != null && typeArguments.length > 0) {
 		boolean isErasureMatch= (this.pattern instanceof OrPattern) ? ((OrPattern)this.pattern).isErasureMatch() : ((JavaSearchPattern)this.pattern).isErasureMatch();
@@ -1883,7 +1889,7 @@ protected void reportAccurateParameterizedTypeReference(SearchMatch match, TypeR
 	if (match.getRule() == 0) return;
 	if (!encloses((IJavaElement)match.getElement())) return;
 
-	// If there's type arguments, look for end (ie. char '>') of last one.
+	// If there's type arguments, look for end (i.e. char '>') of last one.
 	int end = typeRef.sourceEnd;
 	if (typeArguments != null) {
 
@@ -2075,7 +2081,7 @@ protected void reportBinaryMemberDeclaration(IResource resource, IMember binaryM
 }
 /**
  * Visit the given method declaration and report the nodes that match exactly the
- * search pattern (ie. the ones in the matching nodes set)
+ * search pattern (i.e. the ones in the matching nodes set)
  * Note that the method declaration has already been checked.
  */
 protected void reportMatching(AbstractMethodDeclaration method, TypeDeclaration type, IJavaElement parent, int accuracy, boolean typeInHierarchy, MatchingNodeSet nodeSet) throws CoreException {
@@ -2390,7 +2396,7 @@ protected void reportMatching(CompilationUnitDeclaration unit, boolean mustResol
 }
 /**
  * Visit the given field declaration and report the nodes that match exactly the
- * search pattern (ie. the ones in the matching nodes set)
+ * search pattern (i.e. the ones in the matching nodes set)
  */
 protected void reportMatching(FieldDeclaration field, FieldDeclaration[] otherFields, TypeDeclaration type, IJavaElement parent, int accuracy, boolean typeInHierarchy, MatchingNodeSet nodeSet) throws CoreException {
 	IJavaElement enclosingElement = null;
@@ -2518,7 +2524,7 @@ protected void reportMatching(FieldDeclaration field, FieldDeclaration[] otherFi
 }
 /**
  * Visit the given type declaration and report the nodes that match exactly the
- * search pattern (ie. the ones in the matching nodes set)
+ * search pattern (i.e. the ones in the matching nodes set)
  */
 protected void reportMatching(TypeDeclaration type, IJavaElement parent, int accuracy, MatchingNodeSet nodeSet, int occurrenceCount) throws CoreException {
 	// create type handle
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
index 0221f79..b7ee6fd 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
index 3a1d98d..3ecfc39 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -56,7 +56,7 @@ public char[][] getIndexCategories() {
 }
 protected boolean hasNextQuery() {
 	// if package has at least 4 segments, don't look at the first 2 since they are mostly
-	// redundant (eg. in 'org.eclipse.jdt.core.*' 'org.eclipse' is used all the time)
+	// redundant (e.g. in 'org.eclipse.jdt.core.*' 'org.eclipse' is used all the time)
 	return --this.currentSegment >= (this.segments.length >= 4 ? 2 : 0);
 }
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
index d978c75..5167157 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -264,7 +264,7 @@ protected boolean matchesName(char[] pattern, char[] name) {
  * 		<li>{@link #EXACT_FLAVOR}: Given name is equals to pattern</li>
  * 		<li>{@link #PREFIX_FLAVOR}: Given name prefix equals to pattern</li>
  * 		<li>{@link #CAMELCASE_FLAVOR}: Given name matches pattern as Camel Case</li>
- * 		<li>{@link #PATTERN_FLAVOR}: Given name matches pattern as Pattern (ie. using '*' and '?' characters)</li>
+ * 		<li>{@link #PATTERN_FLAVOR}: Given name matches pattern as Pattern (i.e. using '*' and '?' characters)</li>
  * 		</ul>
  * 	</li>
  * </ul>
@@ -426,9 +426,9 @@ protected int referenceType() {
 /**
  * Finds out whether the given ast node matches this search pattern.
  * Returns IMPOSSIBLE_MATCH if it doesn't.
- * Returns INACCURATE_MATCH if it potentially matches this search pattern (ie.
+ * Returns INACCURATE_MATCH if it potentially matches this search pattern (i.e.
  * it has already been resolved but resolving failed.)
- * Returns ACCURATE_MATCH if it matches exactly this search pattern (ie.
+ * Returns ACCURATE_MATCH if it matches exactly this search pattern (i.e.
  * it doesn't need to be resolved or it has already been resolved.)
  */
 public int resolveLevel(ASTNode possibleMatchingNode) {
@@ -702,7 +702,7 @@ public int resolveLevel(Binding binding) {
  * Returns whether the given type binding matches the given simple name pattern
  * and qualification pattern.
  * Note that from since 3.1, this method resolve to accurate member or local types
- * even if they are not fully qualified (ie. X.Member instead of p.X.Member).
+ * even if they are not fully qualified (i.e. X.Member instead of p.X.Member).
  * Returns ACCURATE_MATCH if it does.
  * Returns INACCURATE_MATCH if resolve failed.
  * Returns IMPOSSIBLE_MATCH if it doesn't.
@@ -822,7 +822,7 @@ protected int resolveLevelForType (char[] simpleNamePattern,
 		return level;
 	}
 
-	// Standard types (ie. neither generic nor parameterized nor raw types)
+	// Standard types (i.e. neither generic nor parameterized nor raw types)
 	// cannot match pattern with type parameters or arguments
 	TypeBinding leafType = type.leafComponentType();
 	if (!leafType.isParameterizedType()) {
diff --git a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
index 34ab8cb..00b206f 100644
--- a/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
+++ b/eclipse/plugins/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,7 +31,7 @@ public class TypeParameterLocator extends PatternLocator {
 
 	/*
 	 * Verify whether a type reference matches name pattern.
-	 * Type parameter references (ie. type arguments) are compiler type reference nodes
+	 * Type parameter references (i.e. type arguments) are compiler type reference nodes
 	 */
 	public int match(TypeReference node, MatchingNodeSet nodeSet) {
 		if (this.pattern.findReferences) {
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/breakpoints/JavaBreakpointConditionEditor.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/breakpoints/JavaBreakpointConditionEditor.java
index a66c4b2..b425894 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/breakpoints/JavaBreakpointConditionEditor.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/breakpoints/JavaBreakpointConditionEditor.java
@@ -242,8 +242,11 @@ public final class JavaBreakpointConditionEditor extends AbstractJavaBreakpointE
 	 */
 	public Control createControl(Composite parent) {
 		Composite controls = SWTFactory.createComposite(parent, parent.getFont(), 2, 1, GridData.FILL_HORIZONTAL, 0, 0);
-		fConditional = new Button(controls, SWT.CHECK);
-		fConditional.setText(processMnemonics(PropertyPageMessages.JavaBreakpointConditionEditor_0));
+		fConditional = SWTFactory.createCheckButton(controls, 
+				processMnemonics(PropertyPageMessages.JavaBreakpointConditionEditor_0), 
+				null, 
+				false, 
+				1);
 		fConditional.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
 		fConditional.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaAppletLaunchShortcut.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaAppletLaunchShortcut.java
index ea2d469..f87316f 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaAppletLaunchShortcut.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaAppletLaunchShortcut.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/BreakpointRenameFieldParticipant.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/BreakpointRenameFieldParticipant.java
index f476d6d..5d4784b 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/BreakpointRenameFieldParticipant.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/BreakpointRenameFieldParticipant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,17 +10,23 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.debug.core.refactoring;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.debug.core.IJavaWatchpoint;
+import org.eclipse.jdt.internal.debug.core.breakpoints.JavaWatchpoint;
 import org.eclipse.jdt.internal.debug.ui.BreakpointUtils;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.CompositeChange;
 
 /**
  * Breakpoint participant for field rename.
@@ -37,6 +43,22 @@ public class BreakpointRenameFieldParticipant extends BreakpointRenameParticipan
 	}
 	
 	/* (non-Javadoc)
+	 * @see org.eclipse.jdt.internal.debug.core.refactoring.BreakpointRenameParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
+		List changes = new ArrayList();
+		IResource resource = getBreakpointContainer();
+		IMarker[] markers = resource.findMarkers(JavaWatchpoint.JAVA_WATCHPOINT, true, IResource.DEPTH_INFINITE);
+		gatherChanges(markers, changes, getArguments().getNewName());
+		if (changes.size() > 1) {
+			return new CompositeChange(RefactoringMessages.BreakpointRenameParticipant_1, (Change[]) changes.toArray(new Change[changes.size()]));
+		} else if (changes.size() == 1) {
+			return (Change) changes.get(0);
+		}
+		return null;
+	}
+	
+	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.internal.debug.core.refactoring.BreakpointRenameParticipant#gatherChanges(org.eclipse.core.resources.IMarker[], java.util.List, java.lang.String)
 	 */
 	protected void gatherChanges(IMarker[] markers, List changes, String destFieldName) throws CoreException, OperationCanceledException {
@@ -46,10 +68,12 @@ public class BreakpointRenameFieldParticipant extends BreakpointRenameParticipan
 			IBreakpoint breakpoint = getBreakpoint(marker);
 			if (breakpoint instanceof IJavaWatchpoint) {
 				IJavaWatchpoint watchpoint = (IJavaWatchpoint) breakpoint;
-				IType breakpointType = BreakpointUtils.getType(watchpoint);
-				if (breakpointType != null && originalField.getDeclaringType().equals(breakpointType)) {
-					IField destField = originalField.getDeclaringType().getField(destFieldName);
-					changes.add(new WatchpointFieldChange(watchpoint, destField));
+				if(originalField.getElementName().equals(watchpoint.getFieldName())) {
+					IType breakpointType = BreakpointUtils.getType(watchpoint);
+					if (breakpointType != null && originalField.getDeclaringType().equals(breakpointType)) {
+						IField destField = originalField.getDeclaringType().getField(destFieldName);
+						changes.add(new WatchpointFieldChange(watchpoint, destField));
+					}
 				}
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ProjectSelectionDialog.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ProjectSelectionDialog.java
index 87fc1ca..1610686 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ProjectSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ProjectSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,6 +40,7 @@ public class ProjectSelectionDialog extends AbstractDebugCheckboxSelectionDialog
 	public ProjectSelectionDialog(Shell parentShell, List projects){
 		super(parentShell);
 		setShellStyle(getShellStyle() | SWT.RESIZE);
+		setShowSelectAllButtons(true);
 		fProjects = projects;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
index 2699fd2..5a722b3 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
@@ -46,11 +46,15 @@ import org.eclipse.jdt.core.ITypeParameter;
 import org.eclipse.jdt.core.ITypeRoot;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.Signature;
-import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.ASTParser;
+import org.eclipse.jdt.core.SourceRange;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.ClassInstanceCreation;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.IBinding;
 import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.dom.NodeFinder;
+import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.SimpleType;
 import org.eclipse.jdt.debug.core.IJavaBreakpoint;
 import org.eclipse.jdt.debug.core.IJavaClassPrepareBreakpoint;
 import org.eclipse.jdt.debug.core.IJavaFieldVariable;
@@ -66,6 +70,7 @@ import org.eclipse.jdt.internal.debug.ui.DebugWorkingCopyManager;
 import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
 import org.eclipse.jdt.ui.IWorkingCopyManager;
 import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jdt.ui.SharedASTProvider;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -239,7 +244,7 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTargetExtensio
 							BreakpointUtils.addJavaBreakpointAttributes(attributes, type);
 							IJavaLineBreakpoint breakpoint = JDIDebugModel.createLineBreakpoint(resource, tname, lnumber, charstart, charend, 0, true, attributes);
 							if(locator == null) {
-								new BreakpointLocationVerifierJob(document, parseCompilationUnit(type.getTypeRoot(), true), breakpoint, lnumber, tname, type, editor, bestMatch).schedule();
+								new BreakpointLocationVerifierJob(document, parseCompilationUnit(type.getTypeRoot()), breakpoint, lnumber, tname, type, editor, bestMatch).schedule();
 							}
 	                    }
 	                    else {
@@ -442,26 +447,61 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTargetExtensio
      * @return the binary name for the given {@link IType}
      * @since 3.6
      */
-    String getQualifiedName(IType type) {
+    String getQualifiedName(IType type) throws JavaModelException {
     	IJavaProject project = type.getJavaProject();
-    	if (project != null && project.isOnClasspath(type)) {
-	    	 ASTParser parser = ASTParser.newParser(AST.JLS3);
-		     parser.setSource(type.getTypeRoot());
-		     IBinding[] bindings = parser.createBindings(new IJavaElement[] {type}, null);
-		     if(bindings != null && bindings.length > 0) {
-		    	 ITypeBinding tbinding = (ITypeBinding) bindings[0];
-		    	 if(tbinding != null) {
-		    		 String name = tbinding.getBinaryName();
-		    		 if (name != null) {
-		    			 return name;
-		    		 }
-		    	 }
-		     }
+    	if (project != null && project.isOnClasspath(type) && needsBindings(type)) {
+    		CompilationUnit cuNode = parseCompilationUnit(type.getTypeRoot());
+    		ISourceRange nameRange = type.getNameRange();
+    		if (SourceRange.isAvailable(nameRange)) {
+				ASTNode node = NodeFinder.perform(cuNode, nameRange);
+				if (node instanceof SimpleName) {
+					IBinding binding;
+					if (node.getLocationInParent() == SimpleType.NAME_PROPERTY &&
+							node.getParent().getLocationInParent() == ClassInstanceCreation.TYPE_PROPERTY) {
+						binding = ((ClassInstanceCreation) node.getParent().getParent()).resolveTypeBinding();
+					} else {
+						binding = ((SimpleName) node).resolveBinding();
+					}
+					if (binding instanceof ITypeBinding) {
+			    		String name = ((ITypeBinding) binding).getBinaryName();
+			    		if (name != null) {
+			    			return name;
+			    		}
+					}
+				}
+    		}    		
     	}
 	    return createQualifiedTypeName(type);
     }
     
     /**
+     * Checks if the type or any of its enclosing types are local types.
+     * @param type
+     * @return <code>true</code> if the type or a parent type are a local type
+     * @throws JavaModelException
+     * @since 3.6
+     */
+    boolean needsBindings(IType type) throws JavaModelException {
+    	if(type.isMember()) {
+    		if(type.isLocal() && !type.isAnonymous()) {
+    			return true;
+    		}
+    		IJavaElement parent = type.getParent();
+    		IType ptype = null;
+    		while(parent != null) {
+    			if(parent.getElementType() == IJavaElement.TYPE) {
+    				ptype = (IType) parent;
+    				if(ptype.isLocal() && !ptype.isAnonymous()) {
+    					return true;
+    				}
+    			}
+    			parent = parent.getParent();
+    		}
+    	}
+    	return false;
+    }
+    
+    /**
      * Returns the package qualified name, while accounting for the fact that a source file might
      * not have a project
      * @param type the type to ensure the package qualified name is created for
@@ -1047,26 +1087,20 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTargetExtensio
     /**
      * Returns the compilation unit from the editor
      * @param editor the editor to get the compilation unit from
-     * @param binding if bindings should be resolved
      * @return the compilation unit or <code>null</code>
      */
-    protected CompilationUnit parseCompilationUnit(ITextEditor editor, boolean binding) {
-        return parseCompilationUnit(getTypeRoot(editor.getEditorInput()), binding);
+    protected CompilationUnit parseCompilationUnit(ITextEditor editor) {
+        return parseCompilationUnit(getTypeRoot(editor.getEditorInput()));
     }
 
     /**
-     * Parses the {@link ITypeRoot} with or without bindings resolution
-     * @param root
-     * @param bindings
+     * Parses the {@link ITypeRoot}.
+     * @param root the root
      * @return the parsed {@link CompilationUnit}
      */
-    CompilationUnit parseCompilationUnit(ITypeRoot root, boolean bindings) {
+    CompilationUnit parseCompilationUnit(ITypeRoot root) {
     	if(root != null) {
-	        ASTParser parser = ASTParser.newParser(AST.JLS3);
-	        parser.setResolveBindings(bindings);
-	        parser.setBindingsRecovery(bindings);
-	        parser.setSource(root);
-	        return (CompilationUnit) parser.createAST(null);
+    		return SharedASTProvider.getAST(root, SharedASTProvider.WAIT_YES, null);
         }
         return null;
     }
@@ -1193,7 +1227,7 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTargetExtensio
     	if(sel instanceof IStructuredSelection) {
     		IMember member = (IMember) ((IStructuredSelection)sel).getFirstElement();
     		int mtype = member.getElementType();
-    		if(mtype == IJavaElement.FIELD || mtype == IJavaElement.METHOD) {
+    		if(mtype == IJavaElement.FIELD || mtype == IJavaElement.METHOD || mtype == IJavaElement.INITIALIZER) {
     			// remove line breakpoint if present first
     	    	if (selection instanceof ITextSelection) {
     				ITextSelection ts = (ITextSelection) selection;
@@ -1204,7 +1238,7 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTargetExtensio
     					DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint(breakpoint, true);
     					return;
     				}
-    				CompilationUnit unit = parseCompilationUnit(getTextEditor(part), true);
+    				CompilationUnit unit = parseCompilationUnit(getTextEditor(part));
         			ValidBreakpointLocationLocator loc = new ValidBreakpointLocationLocator(unit, ts.getStartLine()+1, true, true);
         			unit.accept(loc);
         			if(loc.getLocationType() == ValidBreakpointLocationLocator.LOCATION_METHOD) {
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/breakpoints/JavaBreakpointTypeAdapterFactory.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/breakpoints/JavaBreakpointTypeAdapterFactory.java
index 97a6e26..d32d20b 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/breakpoints/JavaBreakpointTypeAdapterFactory.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/breakpoints/JavaBreakpointTypeAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -82,7 +82,7 @@ public class JavaBreakpointTypeAdapterFactory implements IAdapterFactory {
             	IBreakpoint breakpoint = (IBreakpoint)adaptableObject;
             	String type = DebugPlugin.getDefault().getBreakpointManager().getTypeName(breakpoint);
             	IBreakpointTypeCategory category = (IBreakpointTypeCategory) fOtherTypes.get(type);
-            	if (category == null) {
+            	if (category == null && type != null) {
 	            	if (breakpoint instanceof IJavaExceptionBreakpoint) {
 	                   	category = new BreakpointTypeCategory(type, getImageDescriptor(JavaDebugImages.IMG_OBJS_EXCEPTION_BRKPT_TYPE));
 	            	} else if (breakpoint instanceof IJavaClassPrepareBreakpoint) {
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
index 709cc8e..dc81935 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/NewSnippetFileWizardPage.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/NewSnippetFileWizardPage.java
index c6b1bf1..33e9c12 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/NewSnippetFileWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/NewSnippetFileWizardPage.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SelectImportsDialog.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SelectImportsDialog.java
index 0987c52..fb496a5 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SelectImportsDialog.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SelectImportsDialog.java
@@ -139,7 +139,6 @@ public class SelectImportsDialog extends TitleAreaDialog {
 	
 	private void createImportButtons(Composite container) {
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IJavaDebugHelpContextIds.SNIPPET_IMPORTS_DIALOG);
-		Font font = container.getFont();
 		
 		// button container
 		Composite buttonContainer = new Composite(container, SWT.NONE);
@@ -152,12 +151,10 @@ public class SelectImportsDialog extends TitleAreaDialog {
 		buttonContainer.setLayout(buttonLayout);
 		
 		// Add type button
-		fAddTypeButton = new Button(buttonContainer, SWT.PUSH);
-		fAddTypeButton.setText(SnippetMessages.getString("SelectImportsDialog.Add_&Type_1")); //$NON-NLS-1$
-		fAddTypeButton.setToolTipText(SnippetMessages.getString("SelectImportsDialog.Choose_a_Type_to_Add_as_an_Import_2")); //$NON-NLS-1$
-		gd = getButtonGridData(fAddTypeButton);
-		fAddTypeButton.setLayoutData(gd);
-		fAddTypeButton.setFont(font);
+		fAddTypeButton = SWTFactory.createPushButton(buttonContainer, 
+				SnippetMessages.getString("SelectImportsDialog.Add_&Type_1"),  //$NON-NLS-1$
+				SnippetMessages.getString("SelectImportsDialog.Choose_a_Type_to_Add_as_an_Import_2"),  //$NON-NLS-1$
+				null);
 		fAddTypeButton.addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent se) {
 				addType();
@@ -167,12 +164,10 @@ public class SelectImportsDialog extends TitleAreaDialog {
 		});
 		
 		// Add package button
-		fAddPackageButton = new Button(buttonContainer, SWT.PUSH);
-		fAddPackageButton.setText(SnippetMessages.getString("SelectImportsDialog.Add_&Package_3")); //$NON-NLS-1$
-		fAddPackageButton.setToolTipText(SnippetMessages.getString("SelectImportsDialog.Choose_a_Package_to_Add_as_an_Import_4")); //$NON-NLS-1$
-		gd = getButtonGridData(fAddPackageButton);
-		fAddPackageButton.setLayoutData(gd);
-		fAddPackageButton.setFont(font);
+		fAddPackageButton = SWTFactory.createPushButton(buttonContainer, 
+				SnippetMessages.getString("SelectImportsDialog.Add_&Package_3"),  //$NON-NLS-1$
+				SnippetMessages.getString("SelectImportsDialog.Choose_a_Package_to_Add_as_an_Import_4"),  //$NON-NLS-1$
+				null);
 		fAddPackageButton.addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent se) {
 				addPackage();
@@ -182,12 +177,10 @@ public class SelectImportsDialog extends TitleAreaDialog {
 		});
 		
 		// Remove button
-		fRemoveImportsButton = new Button(buttonContainer, SWT.PUSH);
-		fRemoveImportsButton.setText(SnippetMessages.getString("SelectImportsDialog.&Remove_5")); //$NON-NLS-1$
-		fRemoveImportsButton.setToolTipText(SnippetMessages.getString("SelectImportsDialog.Remove_All_Selected_Imports_6")); //$NON-NLS-1$
-		gd = getButtonGridData(fRemoveImportsButton);
-		fRemoveImportsButton.setLayoutData(gd);
-		fRemoveImportsButton.setFont(font);
+		fRemoveImportsButton = SWTFactory.createPushButton(buttonContainer, 
+				SnippetMessages.getString("SelectImportsDialog.&Remove_5"),  //$NON-NLS-1$
+				SnippetMessages.getString("SelectImportsDialog.Remove_All_Selected_Imports_6"),  //$NON-NLS-1$
+				null);
 		fRemoveImportsButton.addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent se) {
 				removeImports();
@@ -199,13 +192,6 @@ public class SelectImportsDialog extends TitleAreaDialog {
 		
 	}
 	
-	private GridData getButtonGridData(Button button) {
-		GridData gd= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-		button.setLayoutData(gd);
-		SWTFactory.setButtonDimensionHint(button);
-		return gd;
-	}
-		
 	private void removeImports() {
 		IStructuredSelection selection = (IStructuredSelection)fImportsViewer.getSelection();		
 		fImportContentProvider.removeImports(selection.toArray());
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SnippetMessages.properties b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SnippetMessages.properties
index 884e14b..053eabd 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SnippetMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/SnippetMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/EventDispatcher.java b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/EventDispatcher.java
index 5f7228f..94cbcd5 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/EventDispatcher.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/EventDispatcher.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/BreakpointListenerManager.java b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/BreakpointListenerManager.java
index 77ddf89..5c16e46 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/BreakpointListenerManager.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/BreakpointListenerManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -163,7 +163,7 @@ public class BreakpointListenerManager {
 		public int installingBreakpoint(IJavaDebugTarget target, IJavaBreakpoint breakpoint, IJavaType type) {
 			IJavaBreakpointListener delegate = getDelegate();
 			if (delegate != null) {
-				delegate.installingBreakpoint(target, breakpoint, type);
+				return delegate.installingBreakpoint(target, breakpoint, type);
 			}
 			return IJavaBreakpointListener.DONT_CARE;
 		}
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.java b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.java
index c235156..9dee846 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,6 +40,8 @@ public class JDIDebugBreakpointMessages extends NLS {
 
 	public static String JavaExceptionBreakpoint_Unable_to_create_breakpoint_request___VM_disconnected__1;
 
+	public static String JavaMethodBreakpoint_0;
+
 	public static String JavaMethodBreakpoint_Unable_to_create_breakpoint_request___VM_disconnected__1;
 
 	public static String JavaTargetPatternBreakpoint_Unable_to_add_breakpoint___VM_disconnected__1;
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.properties b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.properties
index 40c8ec1..2771291 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JDIDebugBreakpointMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -32,6 +32,7 @@ JavaWatchpoint_Unable_to_create_breakpoint_request___VM_disconnected__1=Unable t
 
 JavaExceptionBreakpoint_Unable_to_create_breakpoint_request___VM_disconnected__1=Unable to create breakpoint request - VM disconnected.
 
+JavaMethodBreakpoint_0=Unable to restore type name pattern on method breakpoint
 JavaMethodBreakpoint_Unable_to_create_breakpoint_request___VM_disconnected__1=Unable to create breakpoint request - VM disconnected.
 
 JavaTargetPatternBreakpoint_Unable_to_add_breakpoint___VM_disconnected__1=Unable to add breakpoint - VM disconnected.
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaMethodBreakpoint.java b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaMethodBreakpoint.java
index 0ee2671..df54c2d 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaMethodBreakpoint.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaMethodBreakpoint.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,14 +14,18 @@ package org.eclipse.jdt.internal.debug.core.breakpoints;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.jdt.debug.core.IJavaMethodBreakpoint;
+import org.eclipse.jdt.debug.core.JDIDebugModel;
 import org.eclipse.jdt.internal.debug.core.JDIDebugPlugin;
 import org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget;
 import org.eclipse.jdt.internal.debug.core.model.JDIThread;
@@ -554,7 +558,11 @@ public class JavaMethodBreakpoint extends JavaLineBreakpoint implements IJavaMet
 		fMethodSignature = marker.getAttribute(METHOD_SIGNATURE, null);
 		String typePattern= marker.getAttribute(TYPE_NAME, ""); //$NON-NLS-1$
 		if (typePattern != null) {
-			fPattern = Pattern.compile(convertToRegularExpression(typePattern));
+			try {
+				fPattern = Pattern.compile(convertToRegularExpression(typePattern));
+			} catch (PatternSyntaxException e) {
+				throw new CoreException(new Status(IStatus.ERROR, JDIDebugModel.getPluginIdentifier(), JDIDebugBreakpointMessages.JavaMethodBreakpoint_0, e));
+			}
 		}
 	}	
 	
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
index 5efaada..84f8758 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIObjectValue.java b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIObjectValue.java
index f359b04..12c310a 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIObjectValue.java
+++ b/eclipse/plugins/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIObjectValue.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/plugin.xml b/eclipse/plugins/org.eclipse.jdt.debug/plugin.xml
index 563c2cc..bbfd254 100644
--- a/eclipse/plugins/org.eclipse.jdt.debug/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.debug/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/about.properties b/eclipse/plugins/org.eclipse.jdt.doc.isv/about.properties
index c22e18e..813400f 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/about.properties
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Java development tooling plug-in developers guide\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright IBM Corp. and others 2000, 2004.  All rights reserved.\n\
+(c) Copyright IBM Corporation. and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/jdt
 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/buildDoc.xml b/eclipse/plugins/org.eclipse.jdt.doc.isv/buildDoc.xml
index f80c435..c36f182 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/buildDoc.xml
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/buildDoc.xml
@@ -68,7 +68,14 @@
 		<exec dir="." executable="${javadoc}" output="doc.bin.log">
 			<arg line="@${basedir}/${optionsFile} -J-Xmx500M" />
 		</exec>
+		
+		<!--workaround for bug 101048-->
+		<replace dir="reference/api" token="=&quot;/../misc/api-usage-rules.html" value="=&quot;./../misc/api-usage-rules.html">
+			<include name="*htm*" />
+		</replace>
+		
 		<antcall target="generateJdtAptJavadoc" />
+		
 	</target>
 	
 	<target name="generateJdtAptJavadoc">
@@ -94,6 +101,12 @@
 		<exec dir="." executable="${javadoc15}" output="jdtapt.doc.bin.log">
 			<arg line="@${basedir}/${jdtaptoptionsFile} -J-Xmx500M" />
 		</exec>
+		
+		<!--workaround for bug 101048-->
+		<replace dir="reference/apt" token="=&quot;/../misc/api-usage-rules.html" value="=&quot;./../misc/api-usage-rules.html">
+			<include name="*htm*" />
+		</replace>
+		
 	</target>
 
 	<target name="buildPlatformDoc" unless="platform.index.present">
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/CopyrightTabPage.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/CopyrightTabPage.html
index d0cd43f..06b71be 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/CopyrightTabPage.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/CopyrightTabPage.html
@@ -6,6 +6,7 @@
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" type="text/css" href="../book.css">
 </head>
+<body>
 <font color="#4444cc">
 <pre>/*******************************************************************************
  * Copyright (c) 2009 IBM Corporation and others.
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_codeformatter.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_codeformatter.htm
index a9741f0..042a880 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_codeformatter.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_codeformatter.htm
@@ -71,7 +71,7 @@ in order to get the formatted result.</p>
 				DefaultCodeFormatterConstants.WRAP_ONE_PER_LINE,
 				DefaultCodeFormatterConstants.INDENT_ON_COLUMN));
 		
-		// instanciate the default code formatter with the given options
+		// instantiate the default code formatter with the given options
 		final CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(options);
 		
 		// retrieve the source to format
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm
index ecf4fb5..4a786e4 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
      
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      
@@ -158,8 +158,27 @@ If you want to generate no .class file at all, use <font color="#3366FF">-d none
 </tr>
 <tr>
 <td valign=top width="250">-encoding &lt;encoding name&gt;</td>
-<td colspan="3">Specify default source encoding format (custom encoding can also be specified on a per file basis by suffixing each input source file/folder name with <font color="#3366FF">[&lt;encoding name&gt;]</font>, 
-    for example <font color="#3366FF">X.java[utf8]</font>).</td>
+<td colspan="3">Specify default encoding for all source files. Custom encoding can also be specified on a per file basis by suffixing each input source file/folder name with <font color="#3366FF">[&lt;encoding name&gt;]</font>. 
+For example <font color="#3366FF">X.java[utf8]</font> would specify the <code>UTF-8</code> encoding for the compilation unit
+X.java located in the current user directory.<p>If multiple default source file encodings are specified, the last one will be used.</p>
+<p>For example:</p>
+<ul>
+<li>
+<font color="#3366FF"><code>... -encoding UTF-8 X.java[Cp1252] Y.java[UTF-16] Z.java ....</code></font><br>
+All source files will be read using UTF-8 encoding (this includes <font color="#3366FF">Z.java</font>). <font color="#3366FF">X.java</font> 
+will be read using Cp1252 encoding and <font color="#3366FF">Y.java</font> will be used
+using UTF-16 encoding.
+</li>
+<li>
+<font color="#3366FF"><code>... -encoding UTF-8 -encoding UTF-16 ....</code></font><br>
+All source files will be read using UTF-16 encoding. The -encoding option for UTF-8 is ignored.
+</li>
+<li>
+<font color="#3366FF"><code>... -encoding Cp1252 /foo/bar/X.java[UTF-16] /foo/bar[UTF-8] ....</code></font><br>
+All source files will be read using Cp1252 encoding. X.java is the only file inside the /foo/bar directory to be read using 
+the encoding UTF-16. All other files in that directory will use UTF-8 encoding.
+</li>
+</ul></td>
 </tr>
 <tr>
 <th colspan="4">Compliance options</th>
@@ -238,7 +257,7 @@ and <font color="#3366FF">1.6</font>, <font color="#3366FF"><I>enum</I></font> a
 <td colspan="3">Display advanced warning options</td>
 </tr>
 <tr>
-<td valign=top width="250" rowspan="66">-warn:...
+<td valign=top width="250" rowspan="67">-warn:...
 </td>
 <td valign=top colspan="3">Specify the set of enabled warnings.<br>e.g. <font color="#3366FF">-warn:unusedLocal,deprecation</font><br>
 <table>
@@ -454,7 +473,7 @@ and <font color="#3366FF">1.6</font>, <font color="#3366FF"><I>enum</I></font> a
 <tr>
 <td align=center valign=top>+</td>
 <td align=left valign=top>raw</td>
-<td valign=top>usage a of raw type (instead of a parametrized type)</td>
+<td valign=top>usage a of raw type (instead of a parameterized type)</td>
 </tr>
 <tr>
 <td align=center valign=top>-</td>
@@ -614,6 +633,24 @@ unusedLocal and deprecation warnings will be converted to errors. All other warn
 <td colspan="3">Equivalent to <font color="#3366FF">-warn:+deprecation</font>.</td>
 </tr>
 <tr>
+<td valign=top>-properties &lt;file&gt;</td>
+<td colspan="3">Set warnings/errors option based on the properties file contents.
+This option can be used with -nowarn, -err:.. or -warn:.. options, but the last one on the 
+command line sets the options to be used.<br>
+<p>The properties file contents can be generated by setting project specific settings on an existing java project
+and using the file in <code>.settings/org.eclipse.jdt.core.prefs</code> file as a properties file, or
+a simple text file that is defined entry/value pairs using the constants defined in the 
+<code>org.eclipse.jdt.core.JavaCore</code> class.</p>
+<pre>
+...
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+...
+</pre>
+</td>
+</tr>
+<tr>
 <th colspan="4">Debug options</th>
 </tr>
 <tr>
@@ -815,9 +852,9 @@ Eclipse batch compiler. When you run your ant buildfile:</p>
 <ol>
 <li>outside of Eclipse: the easiest way to set up the ant runtime classpath is to add the <code>ecj.jar</code> file using the <code>-lib</code>
 argument or dumping it inside the <code>ANT_HOME</code> location.</li>
-<li>inside Eclipse using the same JRE than Eclipse: the Eclipse batch compiler is implicitely added to the ant runtime
+<li>inside Eclipse using the same JRE than Eclipse: the Eclipse batch compiler is implicitly added to the ant runtime
 classpath.</li>
-<li>inside Eclipse using the different JRE: the Eclipse batch compiler must be explicitely added to the ant runtime classpath.
+<li>inside Eclipse using the different JRE: the Eclipse batch compiler must be explicitly added to the ant runtime classpath.
 This can be done using the <code>ecj.jar</code> file or using the org.eclipse.jdt.core jar file and the <code>jdtCompilerAdapter.jar</code> file located inside the
 org.eclipse.jdt.core jar file (this jar file needs to be extracted first).</li>
 </ol>
@@ -841,7 +878,7 @@ org.eclipse.jdt.core jar file (this jar file needs to be extracted first).</li>
 	&lt;/target&gt;
 &lt;/project&gt;
 </font>
-</pre><p>The syntax used for the javac Ant task can be found in the <a href="http://ant.apache.org/manual/CoreTasks/javac.html">
+</pre><p>The syntax used for the javac Ant task can be found in the <a href="http://ant.apache.org/manual/Tasks/javac.html">
  Ant javac task documentation</a>. The current adapter supports the Javac Ant task 1.4.1 up to 1.6.5 versions.</p>
 <p>If you are using a version above 1.5.0, you can use the nested compiler argument element (<code>&lt;compilerarg&gt;</code>) to specify compiler
 specific options.
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_contributing_a_cleanup.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_contributing_a_cleanup.htm
index 7a64d37..2d71f6a 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_contributing_a_cleanup.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_contributing_a_cleanup.htm
@@ -127,6 +127,6 @@ The options initializer can either be contributed for a normal code clean up or
 			options.setOption("cleanup.update_copyrights", CleanUpOptions.TRUE);
 		}
 	}</font></pre>
-<p> The UI code to configure the options for this example can be found here: <a href="CopyrightTabPage.html"><b>CleanUpTabPage.java</b></a>.
+<p> The UI code to configure the options for this example can be found here: <a href="CopyrightTabPage.html"><b>CleanUpTabPage.java</b></a>.</p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_manip.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_manip.htm
index 518396d..93947a4 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_manip.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_manip.htm
@@ -317,7 +317,7 @@ fairly simple to iterate and retrieve the right token. We also recommend that yo
 position of the <i>super</i> keyword in a 
 <b><a href="../reference/api/org/eclipse/jdt/core/dom/SuperMethodInvocation.html">SuperMethodInvocation</a></b>.</p>
 
-<h4>Source code modifcations</h4>
+<h4>Source code modifications</h4>
 
 <P>
 Some source code modifications are not provided via the Java element API.
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_options.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_options.htm
index 4ea4517..5c6ab59 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_options.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_options.htm
@@ -380,7 +380,7 @@ DOM AST Javadoc node will be only a flat text instead of having structured tag e
 </tr>
 <tr valign="top">
 <td rowspan=3>When enabled, the compiler will issue an error or a warning when 
-  a case may be entered by falling through a preceeding, non empty case.</td>
+  a case may be entered by falling through a preceding, non empty case.</td>
 <td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#ERROR">ERROR</a></b></td>
 </tr>
 <tr valign="top">
@@ -802,7 +802,20 @@ When enabling this option, the compiler will issue an error or a warning for hid
 </tr>
 <tr valign="top">
 <td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#IGNORE"><i>IGNORE</i></a></b></td>
-</tr>							  
+</tr>
+
+<tr>
+<td colspan=2><b>Reporting Missing <code>@Override</code> Annotation For Interface Method Implementation</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_MISSING_OVERRIDE_ANNOTATION_FOR_INTERFACE_METHOD_IMPLEMENTATION">COMPILER_PB_MISSING_OVERRIDE_ANNOTATION_FOR_INTERFACE_METHOD_IMPLEMENTATION</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>When enabled, the compiler will issue an error or a warning whenever encountering a method declaration which overrides or implements a superinterface method but has no <code>@Override</code> annotation.
+<br>This option only has an effect if the compiler compliance is 1.6 or greater.
+<br>The severity of the problem is controlled with option <b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_MISSING_OVERRIDE_ANNOTATION">COMPILER_PB_MISSING_OVERRIDE_ANNOTATION</a></b>.</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#ENABLED"><i>ENABLED</i></a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#DISABLED">DISABLED</a></b></td>							  
+</tr>
 
 <tr>
 <td colspan=2><b>Reporting Missing Declaration of serialVersionUID Field on Serializable Class</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_MISSING_SERIAL_VERSION">COMPILER_PB_MISSING_SERIAL_VERSION</a></b>)</td>
@@ -1024,6 +1037,19 @@ When enabling this option, the compiler will issue an error or a warning for hid
 </tr>
 
 <tr>
+<td colspan=2><b>Further Determining the Effect of <code>@SuppressWarnings</code> if also COMPILER_PB_SUPPRESS_WARNINGS is enabled.</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS">COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>When enabled, the <code>@SuppressWarnings</code> annotation can additionally be used to suppress optional compiler diagnostics that have been configured as ERROR. 
+<br>When disabled, all <code>@SuppressWarnings</code> annotations only affects warnings. 
+</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#ENABLED">ENABLED</a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#DISABLED"><i>DISABLED</i></a></b></td>
+</tr>
+
+<tr>
 <td colspan=2><b>Determining Effect of @SuppressWarnings</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_SUPPRESS_WARNINGS">COMPILER_PB_SUPPRESS_WARNINGS</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -1351,6 +1377,20 @@ invalidates type safety since involving raw types (e.g. invoking #foo(X&lt;Strin
 </tr>
 
 <tr>
+<td colspan=2><b>Reporting Allocation of an Unused Object</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_UNUSED_OBJECT_ALLOCATION">COMPILER_PB_UNUSED_OBJECT_ALLOCATION</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=3>When enabled, the compiler will issue an error or a warning if an object is allocated but never used, neither by holding a reference nor by invoking one of the object's methods.</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#ERROR">ERROR</a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#WARNING">WARNING</a></b></td>
+</tr>
+<tr valign="top">
+<td><b><i><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#IGNORE">IGNORE</a></i></b></td>
+</tr>
+
+<tr>
 <td colspan=2><b>Reporting Unused Parameter</b> (<b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#COMPILER_PB_UNUSED_PARAMETER">COMPILER_PB_UNUSED_PARAMETER</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -1673,7 +1713,7 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <tr valign="top">
 <td rowspan=1>Specify filters to control the resource copy process. (&lt;name&gt; is a file name pattern (only * wild-cards allowed) or the name of a folder which ends with '/';
   any resource which name matches one or more of these patterns is <em>not</em>
-  copied to the ouput folder.)</td>
+  copied to the output folder.)</td>
 <td>{&lt;name&gt;[,&lt;name&gt;]*}.<br><b><i>Default value is ""</i></b></td>
 </tr>
 
@@ -1811,6 +1851,17 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td>createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT)</td>
 </tr>
 <tr>
+<td colspan=2><b>Option for alignment of arguments in annotation</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_ANNOTATION">FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_ANNOTATION</a></b>)</td>
+</tr>
+<tr valign="top">
+<td>Possible value</td>
+<td>values returned by <code>createAlignmentValue(boolean, int, int)</code> call</td>
+</tr>
+<tr valign="top">
+<td>Default value</td>
+<td>createAlignmentValue(false, WRAP_NO_SPLIT, INDENT_DEFAULT)</td>
+</tr>
+<tr>
 <td colspan=2><b>Option for alignment of arguments in explicit constructor call</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_EXPLICIT_CONSTRUCTOR_CALL">FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_EXPLICIT_CONSTRUCTOR_CALL</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -1910,6 +1961,17 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td>createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT)</td>
 </tr>
 <tr>
+<td colspan=2><b>Option for alignment of method declaration</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_ALIGNMENT_FOR_METHOD_DECLARATION">FORMATTER_ALIGNMENT_FOR_METHOD_DECLARATION</a></b>)</td>
+</tr>
+<tr valign="top">
+<td>Possible value</td>
+<td>values returned by <code>createAlignmentValue(boolean, int, int)</code> call</td>
+</tr>
+<tr valign="top">
+<td>Default value</td>
+<td>createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT)</td>
+</tr>
+<tr>
 <td colspan=2><b>Option for alignment of multiple fields</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_ALIGNMENT_FOR_MULTIPLE_FIELDS">FORMATTER_ALIGNMENT_FOR_MULTIPLE_FIELDS</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -2367,6 +2429,16 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE">FALSE</a></b></td>
 </tr>
 <tr>
+<td colspan=2><b>Option to format line comments that start on the first column</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_COMMENT_FORMAT_LINE_COMMENT_STARTING_ON_FIRST_COLUMN">FORMATTER_COMMENT_FORMAT_LINE_COMMENT_STARTING_ON_FIRST_COLUMN</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#TRUE"><i>TRUE</i></a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE">FALSE</a></b></td>
+</tr>
+<tr>
 <td colspan=2><b>Option to control whether the header comment of a Java source file is formatted</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_COMMENT_FORMAT_HEADER">FORMATTER_COMMENT_FORMAT_HEADER</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -2448,6 +2520,26 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td>"80"</td>
 </tr>
 <tr>
+<td colspan=2><b>Option to control whether block comments will have new lines at boundaries</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_COMMENT_NEW_LINES_AT_BLOCK_BOUNDARIES">FORMATTER_COMMENT_NEW_LINES_AT_BLOCK_BOUNDARIES</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#TRUE"><i>TRUE</i></a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE">FALSE</a></b></td>
+</tr>
+<tr>
+<td colspan=2><b>Option to control whether javadoc comments will have new lines at boundaries</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_COMMENT_NEW_LINES_AT_JAVADOC_BOUNDARIES">FORMATTER_COMMENT_NEW_LINES_AT_JAVADOC_BOUNDARIES</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#TRUE"><i>TRUE</i></a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE">FALSE</a></b></td>
+</tr>
+<tr>
 <td colspan=2><b>Option to compact else/if</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_COMPACT_ELSE_IF">FORMATTER_COMPACT_ELSE_IF</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -2480,6 +2572,38 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td>"2"</td>
 </tr>
 <tr>
+<td colspan=2><b>Option to use the disabling and enabling tags</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_USE_ON_OFF_TAGS">FORMATTER_USE_ON_OFF_TAGS</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#TRUE">TRUE</a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE"><i>FALSE</i></a></b></td>
+</tr>
+<tr>
+<td colspan=2><b>Option to define the tag to put in a comment to disable the formatting</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_DISABLING_TAG">FORMATTER_DISABLING_TAG</a></b>)</td>
+</tr>
+<tr valign="top">
+<td>Possible values</td>
+<td>String</td>
+</tr>
+<tr valign="top">
+<td>Default value</td>
+<td>"@format:off"</td>
+</tr>
+<tr>
+<td colspan=2><b>Option to define the tag to put in a comment to re-enable the formatting after it has been disabled</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_ENABLING_TAG">FORMATTER_ENABLING_TAG</a></b>)</td>
+</tr>
+<tr valign="top">
+<td>Possible values</td>
+<td>String</td>
+</tr>
+<tr valign="top">
+<td>Default value</td>
+<td>"@format:on"</td>
+</tr>
+<tr>
 <td colspan=2><b>Option to indent body declarations compare to its enclosing annotation declaration header</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_INDENT_BODY_DECLARATIONS_COMPARE_TO_ANNOTATION_DECLARATION_HEADER">FORMATTER_INDENT_BODY_DECLARATIONS_COMPARE_TO_ANNOTATION_DECLARATION_HEADER</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -2621,6 +2745,16 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#DO_NOT_INSERT">DO_NOT_INSERT</a></b></td>
 </tr>
 <tr>
+<td colspan=2><b>Option to insert a new line after a label</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_INSERT_NEW_LINE_AFTER_LABEL">FORMATTER_INSERT_NEW_LINE_AFTER_LABEL</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#INSERT">INSERT</a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/JavaCore.html#DO_NOT_INSERT"><i>DO_NOT_INSERT</i></a></b></td>
+</tr>
+<tr>
 <td colspan=2><b>Option to insert a new line after the opening brace in an array initializer</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_INSERT_NEW_LINE_AFTER_OPENING_BRACE_IN_ARRAY_INITIALIZER">FORMATTER_INSERT_NEW_LINE_AFTER_OPENING_BRACE_IN_ARRAY_INITIALIZER</a></b>)</td>
 </tr>
 <tr valign="top">
@@ -4313,7 +4447,7 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE"><i>FALSE</i></a></b></td>
 </tr>
 <tr>
-<td colspan=2><b>Option to keep empty array initializer one one line</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_KEEP_EMPTY_ARRAY_INITIALIZER_ON_ONE_LINE">FORMATTER_KEEP_EMPTY_ARRAY_INITIALIZER_ON_ONE_LINE</a></b>)</td>
+<td colspan=2><b>Option to keep empty array initializer one line</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_KEEP_EMPTY_ARRAY_INITIALIZER_ON_ONE_LINE">FORMATTER_KEEP_EMPTY_ARRAY_INITIALIZER_ON_ONE_LINE</a></b>)</td>
 </tr>
 <tr valign="top">
 <td rowspan=2>Possible values</td>
@@ -4438,7 +4572,18 @@ in a <a HREF="#compatibility"><b>compatibility table</b></a> below.
 <tr valign="top">
 <td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE"><i>FALSE</i></a></b></td>
 </tr>
-<tr><td colspan=2><b>Option to wrap before the binary operator</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_WRAP_BEFORE_BINARY_OPERATOR">FORMATTER_WRAP_BEFORE_BINARY_OPERATOR</a></b>)</td>
+<tr>
+<td colspan=2><b>Option to wrap before the binary operator</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_WRAP_BEFORE_BINARY_OPERATOR">FORMATTER_WRAP_BEFORE_BINARY_OPERATOR</a></b>)</td>
+</tr>
+<tr valign="top">
+<td rowspan=2>Possible values</td>
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#TRUE"><i>TRUE</i></a></b></td>
+</tr>
+<tr valign="top">
+<td><b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FALSE">FALSE</a></b></td>
+</tr>
+<tr>
+<td colspan=2><b>Option to wrap outer expressions in nested expressions</b> (<b><a href="../reference/api/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.html#FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED">FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED</a></b>)</td>
 </tr>
 <tr valign="top">
 <td rowspan=2>Possible values</td>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_wizards.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_wizards.htm
index 8cd4a1f..36cb5b1 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_wizards.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_api_wizards.htm
@@ -44,7 +44,7 @@ intended to be subclassed.&nbsp;</p>
   </li>    
   <li> 
     <a href="../reference/api/org/eclipse/jdt/ui/wizards/NewAnnotationWizardPage.html"><b>NewAnnotationWizardPage</b></a>
-    allows users to define a new Java annotations.Clients can instantiate and configure the wizard page. To implement your own type wizard
+    allows users to define a new Java annotations. Clients can instantiate and configure the wizard page. To implement your own type wizard
     subclass <a href="../reference/api/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.html"><b>NewTypeWizardPage</b></a>.
     To simply open the original 'New Java Annotation wizard' use the <a href="../reference/api/org/eclipse/jdt/ui/actions/OpenNewAnnotationWizardAction.html"><b>OpenNewAnnotationWizardAction</b></a>.
     </li>    
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm
index 79d04f9..7cad0c3 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm
@@ -42,7 +42,7 @@ Java IDE infrastructure.&nbsp; The JDT Core packages include:</p>
   </li>
   <li><a href="../reference/api/org/eclipse/jdt/core/jdom/package-summary.html"><b> 
     org.eclipse.jdt.core.jdom</b></a> - supports a Java Document Object Model (DOM) 
-    that can be used for walking the structure of a Java compilation unit.
+    that can be used for walking the structure of a Java compilation unit. All types within this package are deprecated.
   </li>
   <li><b><a href="../reference/api/org/eclipse/jdt/core/search/package-summary.html"> 
     org.eclipse.jdt.core.search</a></b> - supports searching the workspace's Java
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtOptions.txt b/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtOptions.txt
index 9e51030..b224695 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtOptions.txt
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtOptions.txt
@@ -33,7 +33,7 @@
 -classpath @rt@
 ;../com.ibm.icu_4.2.1.v20100412.jar
 ;../org.eclipse.jdt.apt.core/mirrorapi.jar
-;../org.apache.ant_1.7.1.v20090120-1145/lib/ant.jar
+;../org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar
 ;../org.eclipse.ant.core/@dot
 ;../org.eclipse.compare/@dot
 ;../org.eclipse.compare.core/@dot
@@ -92,7 +92,7 @@
 -windowtitle "Eclipse JDT API Specification"
 -doctitle "Eclipse JDT API Specification"
 -header "<b>Eclipse JDT</b><br>Release 3.6"
--bottom "Copyright (c) IBM Corp. and others 2000, 2010.  All Rights Reserved."
+-bottom '<font size="-1"><p><a href="{@docRoot}/../misc/api-usage-rules.html">Guidelines for using Eclipse APIs</a>.</p><p>Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.</p></font>'
 -group "Java development tools core plug-in packages" "org.eclipse.jdt.core
 ;org.eclipse.jdt.core.*"
 -group "Java development tools UI plug-in packages" "org.eclipse.jdt.ui
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtaptOptions.txt b/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtaptOptions.txt
index c93260e..60fca40 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtaptOptions.txt
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/jdtaptOptions.txt
@@ -30,7 +30,7 @@
 -classpath ${bootclasspath}
 ;../com.ibm.icu_4.2.1.v20100412.jar
 ;../org.eclipse.jdt.apt.core/mirrorapi.jar
-;../org.apache.ant_1.7.1.v20090120-1145/lib/ant.jar
+;../org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar
 ;../org.eclipse.ant.core/@dot
 ;../org.eclipse.compare/@dot
 ;../org.eclipse.compare.core/@dot
@@ -90,7 +90,7 @@
 -windowtitle "Eclipse JDT API Specification"
 -doctitle "Eclipse JDT API Specification"
 -header "<b>Eclipse JDT</b><br>Release 3.6"
--bottom "Copyright (c) IBM Corp. and others 2000, 2010.  All Rights Reserved."
+-bottom '<font size="-1"><p><a href="{@docRoot}/../misc/api-usage-rules.html">Guidelines for using Eclipse APIs</a>.</p><p>Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.</p></font>'
 -group "Java development tools APT plug-in packages" "org.eclipse.jdt.apt.core
 ;org.eclipse.jdt.apt.core.*"
 -link http://java.sun.com/javase/6/docs/api
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/notices.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/notices.html
index b2201a7..33aa981 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/notices.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/notices.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <LINK REL="STYLESHEET" HREF="book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -13,7 +13,7 @@
 <h3>
 <a NAME="Notices"></a>Notices</h3>
 <p>
-The material in this guide is Copyright (c) IBM Corporation and others 2000, 2009.
+The material in this guide is Copyright (c) IBM Corporation and others 2000, 2010.
 </p>
 <p>
 <a href="about.html">Terms and conditions regarding the use of this guide.</a>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.2/recommended.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.2/recommended.html
index c6e9ca5..19bae6c 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.2/recommended.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.2/recommended.html
@@ -23,11 +23,11 @@
 </ol>
 
 <h2><a name="compilationParticipant">Compilation participant extension point</a></h2>
-	<p>A new extension point (<code>org.eclipse.jdt.core.compilationParticipant</code>) allows plugins that are dependent on
+	<p>A new extension point (<code>org.eclipse.jdt.core.compilationParticipant</code>) allows plug-ins that are dependent on
 	<code>org.eclipse.jdt.core</code> to participate in the Java build process, as well as in the reconciling of Java editors.</p>
 	<p>By implementing <code>org.eclipse.jdt.core.compiler.CompilationParticipant</code> and extending this extension
 	point, one can be notified when a build is starting, when a clean is starting, or when a working copy (in a Java editor) is being
-	reconciled. During these notifcations, types can be added, changed or removed, build markers can be created, or errors
+	reconciled. During these notifications, types can be added, changed or removed, build markers can be created, or errors
 	can be reported to the Java editor.</p>
   
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/faq.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/faq.html
index 5729119..6cbaf9d 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/faq.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/faq.html
@@ -69,7 +69,7 @@ How to re-write the code depends on the fact that given problem requestor was nu
 	<li><strong>Problem requestor was not null</strong>
 	<p>
 	In this case, client must ensure that the working copy owner requestor is the same than
-	the one given as parameter to the deprecated method. The simplest way to to this is to make
+	the one given as parameter to the deprecated method. The simplest way to this is to make
 	the working copy owner returning this requestor.
 	</p><p>
 	So, following snippet warned for calls to deprecated methods...:</p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/recommended.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/recommended.html
index 501430d..64de020 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/recommended.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.3/recommended.html
@@ -74,7 +74,7 @@ How to re-write the code depends on the fact that given problem requestor was nu
 	<li><strong>Problem requestor was not null</strong>
 	<p>
 	In this case, client must ensure that the working copy owner requestor is the same than
-	the one given as parameter to the deprecated method. The simplest way to to this is to make
+	the one given as parameter to the deprecated method. The simplest way to this is to make
 	the working copy owner returning this requestor.
 	</p><p>
 	So, following snippet warned for calls to deprecated methods...:</p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.6/incompatibilities.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.6/incompatibilities.html
index 1674b88..3d555dd 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.6/incompatibilities.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/porting/3.6/incompatibilities.html
@@ -20,6 +20,8 @@
 <ol>
   <li><a href="#JUnit4">SDK ships 2 org.junit plug-ins (versions 3.8.2 and 4.8.1)</a></li>
   <li><a href="#AbstractTemplatesPage">Source incompatibility for subclasses of <code>AbstractTemplatesPage</code></a></li>
+  <li><a href="#SuppressWarningRawTypes"><code>@SuppressWarnings("unchecked")</code> does not ignore raw types warnings anymore</a></li>
+  <li><a href="#ReferencedLibraries">Classpath containers have the choice to resolve the referenced libraries themselves</a></li>  
 </ol>
 
 <hr>
@@ -31,7 +33,7 @@
 The SDK now ships 2 org.junit plug-ins (versions 3.8.2 and 4.8.1). Clients that want to run JUnit Plug-in Tests with a Java 5 or later VM
 and that require org.junit with a version bound that does not include 4.x need to update their version bound to include 4.x
 (e.g. change their <code>Require-Bundle:</code> header to <code>org.junit;bundle-version="3.8.2"</code>).
-If they don't update their bounds, both versions of org.junit are resolved at run time, which leads to errors when test classes are loaded.
+If they don't update their bounds, both versions of org.junit are resolved at run time, which leads to errors when test classes are loaded.</p>
 <p>For complete details on the steps required to transition to using JUnit4 or to continue using JUnit3, please see:<br>
 <a href="http://wiki.eclipse.org/Eclipse/Testing/JUnit4_Changes">http://wiki.eclipse.org/Eclipse/Testing/JUnit4_Changes</a>.</p>
 <p><strong>Action required:</strong> Clients that require org.junit should make sure they
@@ -46,5 +48,50 @@ include 4.x in their required version bounds.</p>
 
 <!-- ############################################## -->
 
+<h2>3. <a name="SuppressWarningRawTypes"><code>@SuppressWarnings("unchecked")</code> does not ignore raw types warnings anymore</a></h2>
+<p><strong>What is affected:</strong> Usage of <code>@SuppressWarnings("unchecked")</code>.</p>
+<p><strong>Description:</strong> Up to Eclipse 3.5, <code>@SuppressWarnings("unchecked")</code> was used to suppress the unchecked and raw types warnings.
+This was not consistent with other compilers (e.g. javac). A new warning token <code>"rawtypes"</code> has been added to cover the case of raw type warnings
+exclusively. So in order to get rid of all warnings, in Eclipse 3.6, it might be required to add <code>"rawtypes"</code> in the warning token list.</p>
+<p>If it is not possible to update the code, a system property (<code>-DsuppressRawWhenUnchecked=true</code>) can be added to the <code>-vmargs</code> list on startup.
+This preserves the old behavior. The projects need to be manually cleaned and rebuilt after toggling the property.</p>
+<p><strong>Action required:</strong> When new warnings that were previously ignored are now reported, add <code>"rawtypes"</code> to the list of warning tokens.
+</p>Before:
+<pre>
+ at SuppressWarnings("unchecked")
+    void bar(List list) {
+        List&lt;String&gt; ls2 = list;
+    }
+ at SuppressWarnings("unchecked")
+private List l;
+</pre>
+After:
+<pre>
+ at SuppressWarnings(<b>{</b>"unchecked", "rawtypes"<b>}</b>)
+    void bar(List list) {
+        List&lt;String&gt; ls2 = list;
+    }
+ at SuppressWarnings("rawtypes")
+private List l;
+</pre>
+<!-- ############################################## -->
+<h2>4. <a name="ReferencedLibraries">Classpath containers have the choice to resolve the referenced libraries themselves</a></h2>
+<p><strong>What is affected:</strong> Classpath containers that depended on JDT to resolve referenced libraries via JAR's MANIFEST.MF.</p>
+<p><strong>Description:</strong> 
+In 3.5, classpath containers did not have full control over what JARs ended up on the classpath, since references in the Class-Path section 
+of a JAR's MANIFEST.MF were automatically added. In 3.6, referenced JARs are not automatically added any more. However, a classpath container 
+implementor can use <code>JavaCore#getReferencedClasspathEntries()</code> to resolve the referenced JARs and return them in the implementation of 
+<code>IClasspathContainer#getClasspathEntries()</code>.</p>
+<p>Please refer to the documentation of these APIs:</p>
+<ul>
+<li><code>IClasspathContainer</code></li>
+<li><code>JavaCore#getReferencedClasspathEntries()</code></li>
+</ul>
+<p><strong>Action required:</strong> 
+If the classpath container implementation cannot be changed to accommodate this, the 3.5 behavior can be retained by adding a system property (<code>-DresolveReferencedLibrariesForContainers=true</code>) to the <code>-vmargs</code>
+list on start-up.</p> 
+
+<!-- ############################################## -->
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/api-usage-rules.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/api-usage-rules.html
new file mode 100644
index 0000000..6a83810
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/api-usage-rules.html
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<link REL="STYLESHEET" HREF="../../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+   <title>Eclipse Platform API - Rules of Engagement</title>
+  
+
+</head>
+<body>
+
+<h1>
+Eclipse platform<br>
+API rules of engagement</h1>
+<i><font size=-1>Version 0.15 - Last revised 12:00 May 30, 2001</font></i>
+<p>Here are the rules of engagement for clients of the Eclipse platform
+API (and other components).</p>
+<h2>
+What it means to be API</h2>
+<p>The Eclipse platform defines API elements for use by its clients, namely
+ISVs writing plug-ins. These plug-ins may in turn define API elements for
+their clients, and so on. API elements are the public face: they carry
+a specification about what they are supposed to do, and about how they
+are intended to be used. API elements are supported: the Eclipse platform
+team will fix implementation bugs where there is a deviation from the specified
+behavior. Since there is often a high cost associated with breaking API
+changes, the Eclipse platform team will also try to evolve API elements
+gracefully through successive major releases.</p>
+<h2>
+How to tell API from non-API</h2>
+<p>By their very nature, API elements are documented and have a specification,
+in contrast to non-API elements which are internal implementation details
+usually without published documentation or specifications. So if you cannot
+find the documentation for something, that's usually a good indicator that
+it's not API.</p>
+<p>To try to draw the line more starkly, the code base for the platform
+is separated into API and non-API packages, with all API elements being
+declared in designated API packages.</p>
+<ul>
+<li>
+<b>API package</b> - a Java package that contains at least one API class
+or API interface. The names of API packages are advertised in the documentation
+for that component; where feasible, all other packages containing only
+implementation details have "internal" in the package name. The names of
+API packages may legitimately appear in client code. For the Eclipse platform
+proper, these are:</li>
+
+</ul><ul>
+<li>
+<tt>org.eclipse.foo.*</tt> - for example, <tt>org.eclipse.swt.widgets</tt>,
+<tt>org.eclipse.ui</tt>,
+or <tt>org.eclipse.core.runtime</tt></li>
+
+<li>
+<tt>org.eclipse.foo.internal.*</tt> - not API; internal implementation
+packages</li>
+
+<li>
+<tt>org.eclipse.foo.examples.*</tt> - not API; these are examples</li>
+
+<li>
+<tt>org.eclipse.foo.tests.*</tt> - not API; these are test suites</li>
+</ul>
+<ul>
+<li>
+<b>API class or interface</b> - a <tt>public</tt> class or interface in
+an API package, or a <tt>public</tt> or <tt>protected</tt> class or interface
+member declared in, or inherited by, some other API class or interface.
+The names of API classes and interfaces may legitimately appear in client
+code.</li>
+
+<li>
+<b>API method or constructor</b> - a <tt>public</tt> or <tt>protected</tt>
+method or constructor either declared in, or inherited by, an API class
+or interface. The names of API methods may legitimately appear in client
+code.</li>
+
+<li>
+<b>API field</b> - a <tt>public</tt> or <tt>protected</tt> field either
+declared in, or inherited by, an API class or interface. The names of API
+fields may legitimately appear in client code.</li>
+</ul>
+Everything else is considered internal implementation detail and off limits
+to all clients. Legitimate client code must never reference the names of
+non-API elements (not even using Java reflection). In some cases, the Java
+language's name accessibility rules are used to disallow illegal references.
+However, there are many cases where this is simply not possible. Observing
+this one simple rule avoids the problem completely:
+<ul>
+<li>
+<b>Stick to officially documented APIs. </b>Only reference packages that
+are documented in the <b><i>published API Javadoc</i></b> for the component.
+Never reference a package belonging to another component that has "internal"
+in its name---these are never API. Never reference a package for which
+there is no published API Javadoc---these are not API either.</li>
+</ul>
+
+<h2>
+General rules</h2>
+The specification of API elements is generated from Javadoc comments in
+the element's Java source code. For some types of elements, the specification
+is in the form of a contract. For example, in the case of methods, the
+contract is between two parties, the caller of the method and the implementor
+of the method. The fundamental ground rule is:
+<ul>
+<li>
+<b>Honor all contracts.</b> The contracts are described in the published
+Javadoc for the API elements you are using.</li>
+</ul>
+The term "must", when used in an API contract, means that it is incumbent
+on the party to ensure that the condition would always be met; any failure
+to do so would be considered a programming error with unspecified (and
+perhaps unpredictable) consequences.
+<ul>
+<li>
+<b>You must honor "must". </b>Pay especially close heed to conditions where
+"must" is used.</li>
+</ul>
+Other common sense rules:
+<ul>
+<li>
+<b>Do not rely on incidental behavior. </b>Incidental behavior is behavior
+observed by experiment or in practice, but which is not guaranteed by any
+API specification.</li>
+
+<li>
+<b>Do not treat null as an object.</b> Null is more the lack of an object.
+Assume everything is non-null unless the API specification says otherwise.</li>
+
+<li>
+<b>Do not try to cheat with Java reflection.</b> Using Java reflection
+to circumvent Java compiler checking buys you nothing more. There are no
+additional API contracts for uses of reflection; reflection simply increases
+the likelihood of relying on unspecified behavior and internal implementation
+detail.</li>
+
+<li>
+<b>Use your own packages. </b>Do not declare code in a package belonging
+to another component. Always declare your own code in your own packages.</li>
+</ul>
+
+<h2>
+Calling public API methods</h2>
+For most clients, the bulk of the Eclipse API takes the form of public
+methods on API interfaces or classes, provided for the client to call when
+appropriate.
+<ul>
+<li>
+<b>Ensure preconditions.</b> Do ensure that an API method's preconditions
+are met before calling the method. Conversely, the caller may safely assume
+that the method's postconditions will have been achieved immediately upon
+return from the call.</li>
+
+<li>
+<b>Null parameters.</b> Do not pass null as a parameter to an API method
+unless the parameter is explicitly documented as allowing null. This is
+perhaps the most frequently made programming error.</li>
+
+<li>
+<b>Restricted callers.</b> Do not call an API method that is documented
+as available only to certain callers unless you're one of them. In some
+situations, methods need to be part of the public API for the benefit of
+a certain class of callers (often internal); calling one of these methods
+at the wrong time has unspecified (and perhaps unpredictable) consequences.</li>
+
+<li>
+<b>Debugging methods.</b> Do not call an API method labeled "for debugging
+purposes only". For example, most <tt>toString()</tt> methods are in this
+category.</li>
+
+<li>
+<b>Parameter capture.</b> Do not pass an array, collection, or other mutable
+object as a parameter to an API method and then modify the object passed
+in. This is just asking for trouble.</li>
+</ul>
+
+<h2>
+Instantiating platform API classes</h2>
+Not all concrete API classes are intended to be instantiated by just anyone.
+API classes have an instantiation contract indicating the terms under which
+instances may be created. The contract may also cover things like residual
+initialization responsibilities (for example, configuring a certain property
+before the instance is fully active) and associated lifecycle responsibilities
+(for example, calling <tt>dispose()</tt> to free up OS resources hung on
+to by the instance). Classes that are designed to be instantiated by clients
+are explicitly flagged in the Javadoc class comment (with words like "Clients
+may instantiate.").
+<ul>
+<li>
+<b>Restricted instantiators.</b> Do not instantiate an API class that is
+documented as available only to certain parties unless you're one of them.
+In some situations, classes need to be part of the public API for the benefit
+of a certain party (often internal); instantiating one of these classes
+incorrectly has unspecified (and perhaps unpredictable) consequences.</li>
+</ul>
+
+<h2>
+Subclassing platform API classes</h2>
+Only a subset of the API classes were designed to be subclassed. API classes
+have a subclass contract indicating the terms under which subclasses may
+be declared. This contract also covers initialization responsibilities
+and lifecycle responsibilities. Classes that are designed to be subclassed
+by clients are explicitly flagged in the Javadoc class comment (with words
+like "Clients may subclass.").
+<ul>
+<li>
+<b>Restricted subclassers.</b> Do not subclass an API class that is not
+intended to be subclassed. Treat these classes as if they had been declared
+final. (These are sometimes referred to as "soft final" classes).</li>
+</ul>
+
+<h2>
+Calling protected API methods</h2>
+Calling inherited protected and public methods from within a subclass is
+generally allowed; however, this often requires more care to correctly
+call than to call public methods from outside the hierarchy.
+<h2>
+Overriding API methods</h2>
+Only a subset of the public and protected API methods were designed to
+be overridden. Each API method has a subclass contract indicating the terms
+under which a subclass may override it. By default, overriding is not permitted.
+It is important to check the subclass contract on the actual method implementation
+being overridden; the terms of subclass contracts are not automatically
+passed along when that method is overridden.
+<ul>
+<li>
+<b>Do not override a public or protected API method unless it is explicitly
+allowed.</b> Unless otherwise indicated, treat all methods as if they had
+been declared final. (These are sometimes known as "soft final" methods).
+If the kind of overriding allowed is:
+
+<ul>
+<li>"<b>implement</b>" - the abstract method declared on the subclass must
+be implemented by a concrete subclass</li>
+<li>"<b>extend</b>" - the method declared on the subclass must invoke the
+method on the superclass (exactly once)</li>
+<li>"<b>re-implement</b>" - the method declared on the subclass must not
+invoke the method on the superclass</li>
+<li>"<b>override</b>" - the method declared on the subclass is free to
+invoke the method on the superclass as it sees fit</li></ul></li>
+
+<li>
+<b>Ensure postconditions. </b>Do ensure that any postconditions specified
+for the API method are met by the implementation upon return.</li>
+
+<li>
+<b>Proactively check preconditions. </b>Do not presume that preconditions
+specified for the API method have necessarily been met upon entry. Although
+the method implementation would be within its rights to not check specified
+preconditions, it is usually a good idea to check preconditions (when feasible
+and reasonably inexpensive) in order to blow the whistle on misbehaving
+callers.</li>
+
+<li>
+<b>Null result. </b>Do not return null as a result from an API method unless
+the result is explicitly documented (on the specifying interface or superclass)
+as allowing null.</li>
+
+<li>
+<b>Return copies. </b>Do not return an irreplaceable array, collection,
+or other mutable object as the result from an API method. Always return
+a copy to avoid trouble from callers that might modify the object.</li>
+</ul>
+
+<h2>
+Implementing platform API interfaces</h2>
+Only a subset of the API interfaces were designed to be implemented by
+clients. API interfaces have a contract indicating the terms under which
+it may be implemented. Interfaces that are designed to be implemented by
+clients are explicitly flagged in the Javadoc class comment (with words
+like "Clients may implement."). A client may declare a subinterface of
+an API interface if and only if they are allowed to implement it.
+<ul>
+<li>
+<b>Restricted implementors.</b> Do not implement an API interface that
+is documented as available only to certain parties unless you're one of
+them. In many situations, interfaces are used to hide internal implementation
+details from view.</li>
+</ul>
+
+<h2>
+Implementing public API methods</h2>
+See "Overriding API methods".
+<h2>
+Accessing fields in API classes and interfaces</h2>
+<p>Clients may read API fields, most of which are final. Certain struct-like
+objects may have non-final public fields, which clients may read and write
+unless otherwise indicated.</p>
+<ul>
+<li>
+<b>Null fields.</b> Do not set an API field to null unless this is explicitly
+allowed.</li>
+</ul>
+
+<h2>
+Casting objects of a known API type</h2>
+<p>
+An object of a known API type may only be cast to a different API type
+(or conditionally cast using instanceof) if this is explicitly allowed
+in the API.
+</p>
+<ul>
+<li>
+<b>Cast and instanceof.</b> Do not use instanceof and cast expressions
+to increase what is known about an object beyond what the API supports.
+Improper use exposes incidental implementation details not guaranteed by
+the API.</li>
+</ul>
+<p>
+And, of course, casting any object to a non-API class or interface is always
+inappropriate.
+</p>
+<h2>
+Not following the rules</h2>
+<p>Whether done knowingly or unwittingly, there are consequences for transgressing
+the rules. It might be easier for all involved if there were API police
+that would bust you for breaking the rules. However, that is not the case.
+For the most part, API conformance operates as an honor system, with each
+client responsible for knowing the rules and adhering to them.</p>
+<p>The contracts on the API elements delimit the behavior that is supported
+and sustained. As the Eclipse platform matures and evolves, it will be
+the API contracts that guide how this evolution happens. Outside of these
+contracts, everything is unsupported and subject to change, without notice,
+and at any time (even mid-release or between different OS platforms). Client
+code that oversteps the above rules might fail on different versions and
+patch levels of the platform; or when run on different underlying OSes;
+or when run with a different mix of co-resident plug-ins; or when run with
+a different workbench perspective; and so on. Indeed, no one is even particularly
+interested in speculating exactly how any particular transgression might
+come back to bite you. To those who choose to ignore the rules, don't say
+that you weren't warned. And don't expect much more than a sympathetic
+"Told you so."</p>
+<p>On the other hand, client plug-in code that lives by the above rules
+should continue to work across different versions and patch levels of the
+platform, across different underlying OSes, and should peacefully co-exist
+with other plug-ins. If everyone plays by the rules, the Eclipse platform
+will provide a stable and supported base on which to build exciting new
+products.</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/overview-jdt.html b/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/overview-jdt.html
index 2da5767..817a7ef 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/overview-jdt.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.isv/reference/misc/overview-jdt.html
@@ -13,7 +13,7 @@
   environment. </p>
 <p>The Java development tooling itself is divided up into a number of separate 
   plug-ins. The following table shows which API packages are found in which plug-ins as of
-Eclipse 3.5. This table is useful 
+Eclipse 3.6. This table is useful 
   for determining which plug-ins a given plug-in should include as prerequisites. 
 </p>
 <table border="1" width="80%" align="center">
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/about.properties b/eclipse/plugins/org.eclipse.jdt.doc.user/about.properties
index 536ead4..e750e07 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/about.properties
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Java development tooling user guide\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright IBM Corp. and others 2000, 2004.  All rights reserved.\n\
+(c) Copyright IBM Corporation and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/jdt
 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-editor.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-editor.htm
index 7e04379..0096ef5 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-editor.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-editor.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
 
@@ -47,7 +47,7 @@
     </p>
 
     <p>The most common way to invoke the Java editor is to open a Java file from the
-    Package explorer using pop-up menus or by clicking the file
+    Package Explorer using pop-up menus or by clicking the file
     (single or double-click depending on the user preferences). You can
     also open the editor by opening Java elements, such as types, methods, or
     fields, from other views.</p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-perspective.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-perspective.htm
index 3555b75..b658174 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-perspective.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-perspective.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
 
@@ -21,7 +21,7 @@
     <ul>
       <li><span>Package Explorer</span></li>
 
-      <li><span>Hierarchy</span></li>
+      <li><span>Type Hierarchy</span></li>
 
       <li><span>Outline</span></li>
 
@@ -84,8 +84,8 @@
      <a href="../reference/views/display/ref-display_view.htm">Display view</a><br>
      <a href="../reference/views/expressions/ref-expressions_view.htm">Expressions view</a><br>
      <a href="../reference/views/ref-view-outline.htm">Java outline</a><br>
-     <a href="../reference/views/ref-view-package-explorer.htm">Package explorer view</a><br>
-     <a href="../reference/views/ref-type-hierarchy.htm">Type hierarchy view</a><br>
+     <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer view</a><br>
+     <a href="../reference/views/ref-type-hierarchy.htm">Type Hierarchy view</a><br>
      <a href="../reference/views/variables/ref-variables_view.htm">Variables view</a></p>
 
     
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-decorators.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-decorators.htm
index 765395d..7c61c01 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-decorators.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-decorators.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -39,7 +39,7 @@
 	
     <p><img src="../images/ngrelr.png" alt="Related reference" border="0" ><br>
      <a href="../reference/preferences/java/ref-preferences-appearance.htm">Appearance preference page</a><br>
-     <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a></p>
+     <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a></p>
 
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-filtering.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-filtering.htm
index 3d56ccd..7a6bd44 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-filtering.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-filtering.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -63,7 +63,7 @@
 	
     <p><img src="../images/ngrelr.png" alt="Related reference" border="0" ></p>
     <p>
-       <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+       <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-presentation.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-presentation.htm
index 08e2bd1..10a1203 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-presentation.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views-presentation.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -64,7 +64,7 @@
 	<br>
     <p><img src="../images/ngrelr.png" alt="Related reference" border="0" ><br>
      <a href="../reference/preferences/java/ref-preferences-appearance.htm">Java appearance preference page</a><br>
-     <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a><br>
+     <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a><br>
     </p>
 
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views.htm
index 6e29ca9..893e71c 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/concepts/concept-java-views.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -23,12 +23,12 @@
 	    <li>source folders and libraries</li>
 	    <li>packages</li>
 	    <li>source and class files</li>
-	    <li>types, methods, fields and initialzers</li>
+	    <li>types, methods, fields and initializers</li>
     </ul>
 
-    <h2>Hierarchy View</h2>
+    <h2>Type Hierarchy View</h2>
 
-    <p>The Hierarchy view allows you to look at the complete hierarchy for a
+    <p>The Type Hierarchy view allows you to look at the complete hierarchy for a
     type, only its subtypes, or only its supertypes. You can also open the hierarchy on a project, source folder or package.</p>
 
     <h2>Projects View</h2>
@@ -81,9 +81,9 @@
      <a href="../reference/views/display/ref-display_view.htm">Display view</a><br>
      <a href="../reference/views/expressions/ref-expressions_view.htm">Expressions view</a><br>
      <a href="../reference/views/ref-view-outline.htm">Java outline</a><br>
-     <a href="../reference/views/ref-view-package-explorer.htm">Package explorer view</a><br>
-     <a href="../reference/views/ref-type-hierarchy.htm">Type hierarchy view</a><br>
-     <a href="../reference/views/ref-call-hierarchy.htm">Call hierarchy view</a><br>
+     <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer view</a><br>
+     <a href="../reference/views/ref-type-hierarchy.htm">Type Hierarchy view</a><br>
+     <a href="../reference/views/ref-call-hierarchy.htm">Call Hierarchy view</a><br>
      <a href="../reference/views/variables/ref-variables_view.htm">Variables view</a><br>
      <a href="../reference/views/ref-viewsandeditors.htm">Views and editors</a><br>
     <br>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/contexts_JDT.xml b/eclipse/plugins/org.eclipse.jdt.doc.user/contexts_JDT.xml
index 4b05d79..720b56b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/contexts_JDT.xml
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/contexts_JDT.xml
@@ -47,8 +47,8 @@
     </context>
 
     <context id="show_in_hierarchyview_action_context">
-        <description>This command opens the Hierarchy view on the selected element.</description>
-        <topic label="Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
+        <description>This command opens the Type Hierarchy view on the selected element.</description>
+        <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
         <topic label="Navigate actions" href="reference/ref-menu-navigate.htm"/>
     </context>
 
@@ -93,13 +93,13 @@
     </context>
 
     <context id="focus_on_selection_action">
-        <description>This command allows you to select a type visible in the Hierarchy view to become the new focus of the Hierarchy view.</description>
+        <description>This command allows you to select a type visible in the Type Hierarchy view to become the new focus of the Type Hierarchy view.</description>
         <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
         <topic label="Java views" href="concepts/concept-java-views.htm"/>
     </context>
 
     <context id="focus_on_type_action">
-        <description>This command allows you to choose any type and opens it in the Hierarchy view.</description>
+        <description>This command allows you to choose any type and opens it in the Type Hierarchy view.</description>
         <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
         <topic label="Java views" href="concepts/concept-java-views.htm"/>
     </context>
@@ -256,7 +256,7 @@
     </context>
 
     <context id="open_type_in_hierarchy_action">
-        <description>Choose a type and open it in the Hierarchy view and in a Java editor.</description>
+        <description>Choose a type and open it in the Type Hierarchy view and in a Java editor.</description>
         <topic label="Open type dialog" href="reference/ref-dialog-open-type.htm"/>
         <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
     </context>
@@ -522,7 +522,7 @@
     </context>
 
     <context id="toggle_orientations_action">
-        <description>Changes the orientation of the panes of the Hierarchy view.</description>
+        <description>Changes the orientation of the panes of the Type Hierarchy view.</description>
         <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
     </context>
 
@@ -547,7 +547,7 @@
     </context>
 
     <context id="open_type_hierarchy_action">
-        <description>Opens the Hierarchy view for the selected element.</description>
+        <description>Opens the Type Hierarchy view for the selected element.</description>
         <topic label="Type Hierarchy view" href="reference/views/ref-type-hierarchy.htm"/>
         <topic label="Navigate actions" href="reference/ref-menu-navigate.htm"/>
     </context>
@@ -814,11 +814,11 @@
         <description>This view displays the workspace&apos;s Java projects and lets you explore their contents.</description>
         <topic label="Browsing Java elements" href="gettingStarted/qs-4.htm"/>
         <topic label="Java views" href="concepts/concept-java-views.htm"/>
-        <topic label="Package explorer view" href="reference/views/ref-view-package-explorer.htm"/>
+        <topic label="Package Explorer view" href="reference/views/ref-view-package-explorer.htm"/>
         <topic label="Java element filters dialog" href="reference/ref-dialog-java-element-filters.htm"/>
     </context>
     
-    <context id="type_hierarchy_view_context" title="About Hierarchy view">
+    <context id="type_hierarchy_view_context" title="About Type Hierarchy view">
         <description>This view displays a type&apos;s hierarchy.</description>
         <topic label="Viewing the Type Hierarchy" href="gettingStarted/qs-6.htm"/>
         <topic label="Java Views" href="concepts/concept-java-views.htm"/>
@@ -1412,6 +1412,7 @@
     </context>
     <context id="source_attachment_context">
         <description>Allows you to attach a source code archive to a JAR file.</description>
+        <topic label="Attaching Source to JAR Files and Variables" href="reference/ref-properties-source-attachment.htm"/>
         <topic label="Build class path" href="concepts/concept-java-builder.htm"/>
     </context>
 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_package_explorer_open_type_hierarchy.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_package_explorer_open_type_hierarchy.png
index ffcc2e3..77aa2db 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_package_explorer_open_type_hierarchy.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_package_explorer_open_type_hierarchy.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase.png
index 8790a32..8019b04 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_focused.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_focused.png
index 748e646..fd048f4 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_focused.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_focused.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_menu.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_menu.png
index dd1103e..f3e583d 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_menu.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_menu.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_runtest_locked.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_runtest_locked.png
index baeb61c..560ca0a 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_runtest_locked.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_runtest_locked.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_small.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_small.png
index 1d5d1cd..e2c998c 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_small.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_small.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_subtype.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_subtype.png
index 444bd09..2b7b6e3 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_subtype.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_subtype.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype.png
index 811d436..3414f40 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype_locked.png b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype_locked.png
index f905ecd..7467508 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype_locked.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/images/view_typehierarchy_testcase_supertype_locked.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-11.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-11.htm
index 8fcfea7..7fe10e9 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-11.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-11.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
@@ -49,7 +49,7 @@ you to find matches inside comments and strings.
 </ol>
 <h2> Searching from a Java view </h2>
 <p> Java searches can also be performed from specific views, including the Outline, 
-  Hierarchy view and the Package Explorer view. </p>
+  Type Hierarchy view and the Package Explorer view. </p>
 <ol>
   <li> In the Package Explorer view, double-click <em>junit.framework.Assert.java</em> 
     to open it in an editor. </li>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-12.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-12.htm
index bdca042..4afcac1 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-12.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-12.htm
@@ -75,7 +75,7 @@
     </p>
   </li>
   <li> By default the currently selected resource or active editor is launched when the run button is hit. If none of these is 
-  launchable the current project will be launched. You can configure this behaviour under
+  launchable the current project will be launched. You can configure this behavior under
   <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.debug.ui.LaunchingPreferencePage)")'>
       <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Goto the Launching preference page">
       <strong>Run/Debug &gt; Launching</strong></a>.
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-3.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-3.htm
index 9bcbf18..676a7be 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-3.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-3.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
@@ -74,7 +74,7 @@
 	page.</LI>
 	<LI>In the Package Explorer view, expand the JUnit project and the src folder to view the
 	JUnit packages.
-	<P><img src="images/view_package_explorer_junit.png"  alt="Package explorer"></P>
+	<P><img src="images/view_package_explorer_junit.png"  alt="Package Explorer"></P>
 	</LI>
 </OL>
 <P class="nav_footer" id="nav_footer">Next Section: <A href="qs-4.htm">Browsing Java elements using the package explorer</A>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-4.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-4.htm
index 9a51128..1bd9f1c 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-4.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-4.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
@@ -29,7 +29,7 @@
         The public type and its members (fields and
         methods) appear in the tree.
         <p>
-            <img src="images/view_package_explorer_junit_exp.png"  alt="Package explorer"> 
+            <img src="images/view_package_explorer_junit_exp.png"  alt="Package Explorer"> 
         </p>
       </li>
     </ol>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-6.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-6.htm
index b29472b..33426eb 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-6.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-6.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <title> Viewing the type hierarchy</title>
@@ -10,7 +10,7 @@
 </head>
 <body>
 <h1>Viewing the type hierarchy</h1>
-<p> In this section, you will learn about using the Hierarchy view by viewing
+<p> In this section, you will learn about using the Type Hierarchy view by viewing
 classes and members in a variety of different ways. </p>
 <ol>
   <li> In the Package Explorer view, find <em>junit.framework/TestCase.java</em>. 
@@ -35,7 +35,7 @@ classes and members in a variety of different ways. </p>
     small arrow on the left side of the type icon of TestCase indicates that the 
     hierarchy was opened on this type.
 	<p>
-    <img src="images/view_typehierarchy_testcase_small.png"  alt="Type hierarchy"> 
+    <img src="images/view_typehierarchy_testcase_small.png"  alt="Type Hierarchy"> 
 	</p>
   </li>
   <li> Click the <strong>Show the Supertype Hierarchy</strong> button to 
@@ -59,15 +59,15 @@ classes and members in a variety of different ways. </p>
     <img src="images/view_typehierarchy_testcase_runtest_locked.png"  alt="Subtype hierarchy showing method implementors"> 
 	</p>
   </li>
-  <li> In the Hierarchy view, click the <strong>Show the Supertype Hierarchy</strong> 
+  <li> In the Type Hierarchy view, click the <strong>Show the Supertype Hierarchy</strong> 
     button. Then on the member pane, select <code>countTestCases()</code> to display 
     the places where this method is declared.
 	<p>
     <img src="images/view_typehierarchy_testcase_supertype_locked.png"  alt="Supertype hierarchy showing method implementors"> 
 	</p>
   </li>
-  <li> In the Hierarchy view select the <em>Test</em> element and select <strong>Focus 
-    On 'Test'</strong> from its context menu. <em>Test</em> is presented in the Hierarchy view. </li>
+  <li> In the Type Hierarchy view select the <em>Test</em> element and select <strong>Focus 
+    On 'Test'</strong> from its context menu. <em>Test</em> is presented in the Type Hierarchy view. </li>
   <li> Activate the Package Explorer view and select the package junit.framework. 
     Use <strong>Open Type Hierarchy</strong> from its context menu. A hierarchy 
     is opened containing all classes of the package. For completion of the tree, 
@@ -112,7 +112,7 @@ To see where a virtual method call can resolve to:
 <em>setUp()</em></li>
 <li>Press <kbd>Ctrl+T</kbd> or invoke <strong>Navigate &gt; Quick Type Hierarchy</strong> and the
 in-place type hierarchy view is shown.</li>
-<li>You can see that <em>setIup()</em> is implemented in 3 more classes. <em>Object</em> and <em>Assert</em> are
+<li>You can see that <em>setUp()</em> is implemented in 3 more classes. <em>Object</em> and <em>Assert</em> are
 only shown with a white filled images as are only required to complete the hierarchy but do not implement <em>setUp()</em></li>
 <li>Select a type to navigate to its implementation of <em>setUp()</em></li>
 </ol>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-Navigate.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-Navigate.htm
index f5fa283..cbd6a43 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-Navigate.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/gettingStarted/qs-Navigate.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
@@ -52,11 +52,11 @@
 		</p>
 	  </li>
 	  <li> 
-	    The Hierarchy view opens with the TestCase class displayed.
+	    The Type Hierarchy view opens with the TestCase class displayed.
 		<p>
-	    <img src="images/view_typehierarchy_testcase.png"  alt="Type hierarchy view">
+	    <img src="images/view_typehierarchy_testcase.png"  alt="Type Hierarchy view">
 		</p>
-	    <em>Note: You can also open editors on types and methods in the Hierarchy view.</em> 
+	    <em>Note: You can also open editors on types and methods in the Type Hierarchy view.</em> 
 	  </li>
 	</ol>
 	<P class="nav_footer" id="nav_footer">Next Section: <A href="qs-6.htm">Viewing the type hierarchy</A>
diff --git a/eclipse/plugins/org.eclipse.debug.ui/icons/full/ovr16/skip_breakpoint_ov.gif b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.debug.ui/ovr16/skip_breakpoint_ov.gif
similarity index 100%
copy from eclipse/plugins/org.eclipse.debug.ui/icons/full/ovr16/skip_breakpoint_ov.gif
copy to eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.debug.ui/ovr16/skip_breakpoint_ov.gif
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/testfile_obj.gif b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.junit/obj16/testfile_obj.gif
similarity index 100%
rename from eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/testfile_obj.gif
rename to eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.junit/obj16/testfile_obj.gif
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_cast.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_cast.png
index 30161b9..1d64b4e 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_cast.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_cast.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_move.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_move.png
index 2467a94..464688e 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_move.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_move.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/obj16/correction_multi_fix.gif b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_multi_fix.gif
similarity index 100%
copy from eclipse/plugins/org.eclipse.jdt.ui/icons/full/obj16/correction_multi_fix.gif
copy to eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/correction_multi_fix.gif
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_obj.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_obj.png
index 7863464..5eaee6f 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_obj.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_obj.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_src_obj.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_src_obj.png
index 9237bb3..e68f261 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_src_obj.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jar_src_obj.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/error_co_buildpath.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/error_co_buildpath.png
new file mode 100644
index 0000000..4a07e97
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/error_co_buildpath.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/transient_co.png b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/transient_co.png
new file mode 100644
index 0000000..4f54e54
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/ovr16/transient_co.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/notices.html b/eclipse/plugins/org.eclipse.jdt.doc.user/notices.html
index b2201a7..33aa981 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/notices.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/notices.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <LINK REL="STYLESHEET" HREF="book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -13,7 +13,7 @@
 <h3>
 <a NAME="Notices"></a>Notices</h3>
 <p>
-The material in this guide is Copyright (c) IBM Corporation and others 2000, 2009.
+The material in this guide is Copyright (c) IBM Corporation and others 2000, 2010.
 </p>
 <p>
 <a href="about.html">Terms and conditions regarding the use of this guide.</a>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_caught.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_caught.PNG
index 1065674..4b80151 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_caught.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_caught.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_condition.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_condition.PNG
index e81b353..4b13fe4 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_condition.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_condition.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_enabled.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_enabled.PNG
index a45108b..5dd3f54 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_enabled.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_enabled.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_entry.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_entry.PNG
index b6c9ec4..7c31d42 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_entry.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_entry.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_exit.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_exit.PNG
index da620b4..8298d10 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_exit.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_exit.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_hitcount.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_hitcount.PNG
index 3c742ba..c16b8c0 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_hitcount.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_hitcount.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendpolicy.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendpolicy.PNG
index 17482ed..24c0a4e 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendpolicy.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendpolicy.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendsubclass.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendsubclass.PNG
index 85e8369..5ce8ce2 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendsubclass.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendsubclass.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_uncaught.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_uncaught.PNG
index 4c704c9..2052ada 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_uncaught.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_uncaught.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_access_option.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_access_option.PNG
index 18ee045..3ed5c24 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_access_option.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_access_option.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_mod.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_mod.PNG
index 3f4b207..0aca902 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_mod.PNG and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-watchpoint_mod.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-access_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-access_option.htm
index dd6abaa..189e0ed 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-access_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-access_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1> Watchpoint Field Access </h1>
-<p> Select the <strong>Field Access </strong>option to suspend execution when the associated field is accessed (read). </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>,  or by <a href="../../reference/views/breakpoints/ref-access_contextaction.htm">right-clicking</a> a watchpoint. </p>
+<p> Select the <strong>Access </strong>option to suspend execution when the associated field is accessed (read). </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>,  or by <a href="../../reference/views/breakpoints/ref-access_contextaction.htm">right-clicking</a> a watchpoint. </p>
 <p><img src="images/ref-watchpoint_access_option.PNG" alt="The 'access' option for a watchpoint"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts" > </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-caught_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-caught_option.htm
index 59667f5..a043908 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-caught_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-caught_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1>Exception Breakpoint Caught Exception </h1>
-<p> Select the <strong>Caught Exception</strong> option to suspend execution when an exception of the same type as the breakpoint is thrown in a caught location. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-caught_contextaction.htm">right-clicking</a> an exception breakpoint.</p>
+<p> Select the <strong>Caught locations</strong> option to suspend execution when an exception of the same type as the breakpoint is thrown in a caught location. </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-caught_contextaction.htm">right-clicking</a> an exception breakpoint.</p>
 <p><img src="images/ref-breakpoint_caught.PNG" alt="Exception breakpoint caught option"></p>
 <p>&nbsp;</p>
 <p> <img src="../../images/ngrelc.png" alt="Related concepts" ></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-condition_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-condition_option.htm
index c5bd12f..8994e45 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-condition_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-condition_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,7 +9,7 @@
 </head>
 <body>
 <h1>Breakpoint Enable Condition</h1>
-<p>Select the <strong>Enable Condition</strong> option to enable the ability to provide a custom condition for the breakpoint. </p>
+<p>Select the <strong>Conditional</strong> option to enable the ability to provide a custom condition for the breakpoint. </p>
 <p>Each breakpoint can have a unique condition that determines when the breakpoint will be hit.</p>
 <p>A condition for a breakpoint can be any logical expression that evaluates to either true or false.
   The expression is evaluated in the scope of the breakpoint location, meaning you cannot make reference to a class, etc., outside the scope of the breakpoint
@@ -29,7 +29,7 @@
 <p>For example a valid condition could be:</p>
 <pre>	age == 56 </pre>
 <p>meaning the breakpoint would only suspend when age was equal to 56.</p>
-<p>Conditions can be added to breakpoints with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoints Properties...</strong></a> shown below. </p>
+<p>Conditions can be added to breakpoints in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane or with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoints Properties...</strong></a> shown below. </p>
 <p><img src="images/ref-breakpoint_condition.PNG" alt="Breakpoint condition option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-enabled_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-enabled_option.htm
index 85b6d20..912d7c1 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-enabled_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-enabled_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -10,7 +10,7 @@
 <body>
 <h1>Breakpoint Enabled</h1>
 <p>Select the <strong>Enabled</strong> option to enable or disable a breakpoint. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>,  by <a href="../../reference/views/breakpoints/ref-enable_contextaction.htm">right-clicking</a> a breakpoint, or by selecting the breakpoint or its grouping in the <strong><a href="../../reference/views/breakpoints/ref-breakpoints_view.htm">Breakpoints View</a></strong>. </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>,  by <a href="../../reference/views/breakpoints/ref-enable_contextaction.htm">right-clicking</a> a breakpoint, or by selecting the breakpoint or its grouping in the <strong><a href="../../reference/views/breakpoints/ref-breakpoints_view.htm">Breakpoints View</a></strong>. </p>
 <p><img src="images/ref-breakpoint_enabled.PNG" alt="Breakpoint enabled option"></p>
 <p>&nbsp;</p>
 <p> <img  src="../../images/ngrelc.png" alt="Related concepts"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-entry_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-entry_option.htm
index 867211d..c4d1e7f 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-entry_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-entry_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1> Breakpoint Method Entry</h1>
-<p> Select the <strong>Method Entry</strong> option to suspend execution when the method associated with the breakboint is entered. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-entry_contextaction.htm">right-clicking</a> a method breakpoint.</p>
+<p> Select the <strong>Entry</strong> option to suspend execution when the method associated with the breakpoint is entered. </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-entry_contextaction.htm">right-clicking</a> a method breakpoint.</p>
 <p><img src="images/ref-breakpoint_entry.PNG" alt="Method breakpoint entry option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-exit_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-exit_option.htm
index 83802d3..4c582a3 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-exit_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-exit_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1> Breakpoint Method Exit</h1>
-<p> Select the <strong>Method Exit</strong> option to suspend execution when the method associated with the breakpoint is exited. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-exit_contextaction.htm">right-clicking</a> a method breakpoint.</p>
+<p> Select the <strong>Exit</strong> option to suspend execution when the method associated with the breakpoint is exited. </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-exit_contextaction.htm">right-clicking</a> a method breakpoint.</p>
 <p><img src="images/ref-breakpoint_exit.PNG" alt="Method breakpoint exit option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-hitcount_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-hitcount_option.htm
index 9a444da..dd175dc 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-hitcount_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-hitcount_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -13,7 +13,7 @@
 <p>The <strong>Hit Count</strong> option is used to determine when your program should suspend on that breakpoint. </p>
 <p>If a breakpoint has a hit count of <em>N</em>, execution will suspend when the breakpoint is encountered for the <em>N</em>th time. After being hit, the breakpoint is disabled until either it is re-enabled or its hit count is changed.<br>
   <br>
-  This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-hitcount_contextaction.htm">right-clicking</a> a breakpoint.</p>
+  This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-hitcount_contextaction.htm">right-clicking</a> a breakpoint.</p>
 <p><img src="images/ref-breakpoint_hitcount.PNG" alt="Breakpoint hit count option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts" ></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-modification_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-modification_option.htm
index ccc8a92..5108d0c 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-modification_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-modification_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1> Watchpoint Field Modification</h1>
-<p> Select this option to suspend execution when the associated field is modified (written). </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-modification_contextaction.htm">right-clicking</a> a watchpoint. </p>
+<p> Select the <strong>Modification</strong> option to suspend execution when the associated field is modified (written). </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-modification_contextaction.htm">right-clicking</a> a watchpoint. </p>
 <p><img src="images/ref-watchpoint_mod.PNG" alt="Watchpoint field modification option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts" > </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendpolicy_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendpolicy_option.htm
index 9e37cfe..46b621f 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendpolicy_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendpolicy_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -10,14 +10,14 @@
 </head>
 <body>
 <h1>Breakpoint Suspend Policy</h1>
-<p>The <strong>Suspend Policy</strong>  option is used to indicate what should be suspended when a  breakpoint is hit. </p>
+<p>A breapoint's suspend policy determines what should be suspended when a breakpoint is hit.</p>
 <p>There are two options for Java breakpoints:</p>
 <ul>
-  <li>Suspend Thread - suspends only the thread that encountered the breakpoint</li>
-  <li>Suspend VM - suspends the entire VM when the breakpoint is encountered<br>
+  <li><strong>Suspend thread</strong> - suspends only the thread that encountered the breakpoint</li>
+  <li><strong>Suspend VM</strong> - suspends the entire VM when the breakpoint is encountered<br>
   </li>
 </ul>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-suspendpolicy_contextaction.htm">right-clicking</a> a breakpoint.</p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-suspendpolicy_contextaction.htm">right-clicking</a> a breakpoint.</p>
 <p><img src="images/ref-breakpoint_suspendpolicy.PNG" alt="Breakpoint suspend policy option"></p>
 <p>You can also change the default setting for the suspend policy for all newly created breakpoints. </p>
 <p>To do this go to the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.debug.ui.JavaDebugPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Java Debug preference page"> <strong>Java &gt;Debug</strong></a> preference page and change it there. </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendsubclass_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendsubclass_option.htm
index d579885..8ad7c82 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendsubclass_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-suspendsubclass_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,9 +9,9 @@
 </head>
 <body>
 <h1> Exception Breakpoint Suspend on Subclass of this Exception </h1>
-<p> Select the <strong>Suspend on Subclass of this Exception</strong> option to suspend execution when subclasses of the exception type are encountered.</p>
+<p> Select the <strong>Subclasses of this exception</strong> option to suspend execution when subclasses of the exception type are encountered.</p>
 <p>For example, if an exception breakpoint for <code>RuntimeException</code> is configured to suspend on subclasses, it will also be triggered by a <code>NullPointerException</code>. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-suspendpolicy_contextaction.htm">right-clicking</a> a breakpoint.</p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-suspendpolicy_contextaction.htm">right-clicking</a> a breakpoint.</p>
 <p><img src="images/ref-breakpoint_suspendsubclass.PNG" alt="Exception breakpoint suspend on subclass option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-uncaught_option.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-uncaught_option.htm
index 89fa30c..6081c83 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-uncaught_option.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/breakpoints/ref-uncaught_option.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,8 +9,8 @@
 </head>
 <body>
 <h1> Exception Breakpoint Uncaught Exception </h1>
-<p> Select the <strong>Uncaught Exception</strong> option to suspend execution when an exception of the same type as the breakpoint is thrown in an uncaught location. </p>
-<p>This option can be changed with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-uncaught_contextaction.htm">right-clicking</a> an exception breakpoint.</p>
+<p> Select the <strong>Uncaught locations</strong> option to suspend execution when an exception of the same type as the breakpoint is thrown in an uncaught location. </p>
+<p>This option can be changed in the <a href="../../reference/views/breakpoints/ref-breakpoints_view.htm#detail_pane"><strong>Breakpoints View</strong></a> detail pane, with the <a href="../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>, or by <a href="../../reference/views/breakpoints/ref-uncaught_contextaction.htm">right-clicking</a> an exception breakpoint.</p>
 <p><img src="images/ref-breakpoint_uncaught.PNG" alt="Exception breakpoint uncaught option"></p>
 <p>&nbsp;</p>
 <p> <img border="0" src="../../images/ngrelc.png" alt="Related concepts" ></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-condense-multi-lines-comments.png b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-condense-multi-lines-comments.png
new file mode 100644
index 0000000..15a140b
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-condense-multi-lines-comments.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-disabling-enabling-tags.png b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-disabling-enabling-tags.png
new file mode 100644
index 0000000..0ea0d37
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-disabling-enabling-tags.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-join-lines-after.png b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-join-lines-after.png
similarity index 100%
rename from eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-join-lines-after.png
rename to eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-join-lines-after.png
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-join-lines-before.png b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-join-lines-before.png
similarity index 100%
rename from eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-join-lines-before.png
rename to eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-join-lines-before.png
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-prefer-wrapping-outer-expressions.png b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-prefer-wrapping-outer-expressions.png
new file mode 100644
index 0000000..e6a1f29
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/images/formatter-prefer-wrapping-outer-expressions.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-dll_debug.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-dll_debug.htm
index eef56e9..7ac5e66 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-dll_debug.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-dll_debug.htm
@@ -11,7 +11,7 @@
 <body>
 <h1> Debug Last Launched / Debug </h1>
 <p> Select the <strong>Debug Last Launched / Debug </strong>command [ <img src="../../../images/org.eclipse.debug.ui/elcl16/debuglast_co.png" alt="Debug Last Launched"> ] to re-launch the last configuration or launch the current selection in <em>debug</em> mode. You can also use the keyboard shortcut <em><strong>F11</strong> </em></p>
-<p>New in 3.3 is the ability to launch the selected resource. This feature shares the <strong>Debug Last Launched</strong> command, so when it is enabled, it in effect replaces the the <strong>Debug Last Launched</strong> with the <strong>Debug</strong> command. </p>
+<p>New in 3.3 is the ability to launch the selected resource. This feature shares the <strong>Debug Last Launched</strong> command, so when it is enabled, it in effect replaces the <strong>Debug Last Launched</strong> with the <strong>Debug</strong> command. </p>
 <p>The preference for launching last or launching the selected resource can be changed on the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.debug.ui.LaunchingPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Heap Walking preference page"> <strong>Run/Debug &gt; Launching</strong></a> preference page. </p>
 <p><img border="0" src="../../../images/ngrelc.png" alt="Related concepts"></p>
 <p><a href="../../../concepts/cdebugger.htm">Debugger</a><br>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-rll_run.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-rll_run.htm
index d122696..6af1fb9 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-rll_run.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/menus/run/ref-rll_run.htm
@@ -11,8 +11,8 @@
 <body>
 <h1> Run Last Launched / Run </h1>
 <p> Select the <strong>Run Last Launched / Run </strong>command [ <img src="../../../images/org.eclipse.debug.ui/elcl16/runlast_co.png" alt="Run Last Launched"> ] to re-launch the last configuration or launch the current selection in  <em>run</em> mode. You can also use the keyboard shortcut <em><strong>Ctrl + F11</strong> </em></p>
-<p>New in 3.3 is the ability to launch the selected resource. This feature shares the <strong>Run Last Launched</strong> command, so when it is enabled, it in effect replaces the the <strong>Run Last Launched</strong> with the <strong>Run</strong> command. </p>
-<p>The preference for launching last or launching the selected resource can be chnaged on the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.debug.ui.LaunchingPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Heap Walking preference page"> <strong>Run/Debug &gt; Launching</strong></a> preference page. </p>
+<p>New in 3.3 is the ability to launch the selected resource. This feature shares the <strong>Run Last Launched</strong> command, so when it is enabled, it in effect replaces the <strong>Run Last Launched</strong> with the <strong>Run</strong> command. </p>
+<p>The preference for launching last or launching the selected resource can be changed on the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.debug.ui.LaunchingPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Heap Walking preference page"> <strong>Run/Debug &gt; Launching</strong></a> preference page. </p>
 <p><img border="0" src="../../../images/ngrelc.png" alt="Related concepts"></p>
 <p><a href="../../../concepts/cdebugger.htm">Debugger</a><br>
   <a href="../../../concepts/clocdbug.htm">Local Debugging</a><br>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-cleanup.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-cleanup.htm
index f3c0796..fd8683f 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-cleanup.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-cleanup.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Clean Up Preferences
@@ -73,6 +73,14 @@ lets you manage your code clean up profiles for the Java code clean up.</p>
 		</tr>
 		<tr>
 			<td valign="top" width="25%">
+			<p>Export All...</p>
+			</td>
+			<td valign="top">
+			<p>Exports all the profiles to the file system.</p>
+			</td>
+		</tr>
+		<tr>
+			<td valign="top" width="25%">
 			<p>Details</p>
 			</td>
 			<td valign="top">
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-formatter.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-formatter.htm
index b109e46..72fe861 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-formatter.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/codestyle/ref-preferences-formatter.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Code Formatter Preferences
@@ -73,6 +73,14 @@ lets you manage your code formatter profiles for the Java code formatter.</p>
 		</tr>
 		<tr>
 			<td valign="top" width="25%">
+			<p>Export All...</p>
+			</td>
+			<td valign="top">
+			<p>Exports all the profiles to the file system.</p>
+			</td>
+		</tr>
+		<tr>
+			<td valign="top" width="25%">
 			<p>Details</p>
 			</td>
 			<td valign="top">
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-building.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-building.htm
index d29a243..a0cbec6 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-building.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-building.htm
@@ -133,7 +133,7 @@
 		<p>Rebuild class files modified by others</p>
 		</td>
 		<td valign="top">
-		<p>Indicate whether class files which have been modified by others should be rebuilded to undo the modification.</p>
+		<p>Indicate whether class files which have been modified by others should be rebuilt to undo the modification.</p>
 		</td>
 		<td valign="top">
 		<p>Off</p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-errors-warnings.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-errors-warnings.htm
index 904780c..dd7168e 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-errors-warnings.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-errors-warnings.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Java Compiler Errors/Warnings Preferences</title>
 <link rel="stylesheet" href="../../../../book.css" charset="ISO-8859-1" type="text/css">
@@ -184,13 +184,13 @@
 	</tr>
 	<tr>
 		<td valign="top">
-		<p>Hidden catch blocks</p>
+		<p>Hidden catch block</p>
 		</td>
 		<td valign="top">
 		<p>Locally to a try statement, some catch blocks may hide others , e.g.</p>
 		<code>try { throw new java.io.CharConversionException();</code><br>
 		<code>} catch (java.io.CharConversionException e) {</code><br>
-		<code>} catch (java.io.IOException e) {}.</code><br>
+		<code>} catch (java.io.IOException e) {}</code><br>
 		<br>
 		<p>When enabled, the compiler will issue an error or a warning for hidden catch blocks corresponding to checked exceptions.</p>
 		</td>
@@ -269,12 +269,59 @@
 		<p>Comparing identical</p>
 		</td>
 		<td valign="top">
-		<p>When enabled, the compiler will issue an error or a warning if a comparisonis involving identical operands (e.g 'x == x')..</p>
+		<p>When enabled, the compiler will issue an error or a warning if a comparison is involving identical operands (e.g 'x == x').</p>
 		</td>
 		<td valign="top">
 		<p>Warning</p>
 		</td>
 	</tr>
+	<tr>
+		<td valign="top">
+		<p>Missing synchronized modifier on inherited method</p>
+		</td>
+		<td valign="top">
+		<p>When enabled, the compiler will issue an error or a warning when it encounters an inherited method which is missing the synchronized modifier.</p>
+		</td>
+		<td valign="top">
+		<p>Ignore</p>
+		</td>
+	</tr>
+	<tr>
+		<td valign="top">
+		<p>Class overrides 'equals()' but not 'hashCode()'</p>
+		</td>
+		<td valign="top">
+		<p>When enabled, the compiler will issue an error or a warning when it encounters a class which overrides 'equals()' but not 'hashCode()'.</p>
+		</td>
+		<td valign="top">
+		<p>Ignore</p>
+		</td>
+	</tr>
+	<tr>
+		<td valign="top">
+		<p>Dead code</p>
+		</td>
+		<td valign="top">
+		<p>When enabled, the compiler will issue an error or a warning when it encounters dead code (e.g 'if (false)' ).</p>
+		</td>
+		<td valign="top">
+		<p>Warning</p>
+		</td>
+	</tr>
+	<tr>
+		<td valign="top">
+		<p>Unused object allocation</p>
+		</td>
+		<td valign="top">
+		<p>When enabled, the compiler will issue an error or a warning when it encounters an allocated object which is not used, e.g.</p>
+		<code>if (name == null)</code><br>
+		<code>&nbsp;&nbsp;&nbsp;new IllegalArgumentException();</code><br>
+		<br>
+		</td>
+		<td valign="top">
+		<p>Ignore</p>
+		</td>
+	</tr>
 </table>
 
 <h3>Name shadowing and conflicts</h3>
@@ -542,7 +589,7 @@
 		<p>Ignore exceptions documented with '@throws' or '@exception' tags</p>
 		</td>
 		<td valign="top">
-		<p>When enabled, the compiler will not issue an error or a warning whenever an an unnecessary declaration of a thrown exception is documented with an '@throws' or '@exception' tag.</p>
+		<p>When enabled, the compiler will not issue an error or a warning whenever an unnecessary declaration of a thrown exception is documented with an '@throws' or '@exception' tag.</p>
 		</td>
 		<td valign="top">
 		<p>On</p>
@@ -643,7 +690,7 @@
 		<td valign="top">
 		<p>When enabled, the compiler will also issue an error or a warning whenever it encounters a method overriding or implementing
 		a method declared in an interface, and the '@Override' annotation is missing.<br>
-		Note that '@Override' is only allowed on such methods if the compiler compilance level is 1.6 or higher, so this error or
+		Note that '@Override' is only allowed on such methods if the compiler compliance level is 1.6 or higher, so this error or
 		warning will never appear in 1.5 code.</p>
 		</td>
 		<td valign="top">
@@ -685,6 +732,17 @@
 	</tr>
 	<tr>
 		<td valign="top">
+		<p>Enable '@SuppressWarnings' annotations</p>
+		</td>
+		<td valign="top">
+		<p>When enabled, the compiler will process '@SuppressWarnings' annotations.</p>
+		</td>
+		<td valign="top">
+		<p>On</p>
+		</td>
+	</tr>
+	<tr>
+		<td valign="top" style="padding-left: 2em;">
 		<p>Unused '@SuppressWarnings' token</p>
 		</td>
 		<td valign="top">
@@ -693,16 +751,16 @@
 		<td valign="top">
 		<p>Warning</p>
 		</td>
-	</tr>	
+	</tr>
 	<tr>
-		<td valign="top">
-		<p>Enable '@SuppressWarnings' annotations</p>
+		<td valign="top" style="padding-left: 2em;">
+		<p>Suppress optional errors with '@SuppressWarnings'</p>
 		</td>
 		<td valign="top">
-		<p>When enabled, the compiler will process '@SuppressWarnings' annotations.</p>
+		<p>When enabled, the '@SuppressWarnings' annotation will also suppress the optional compiler errors.</p>
 		</td>
 		<td valign="top">
-		<p>On</p>
+		<p>Off</p>
 		</td>
 	</tr>
 </table>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-debug.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-debug.htm
index e77035f..09bd662 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-debug.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-debug.htm
@@ -24,7 +24,7 @@
     <tr>
       <td colspan="1" valign="top" align="left">Suspend execution on uncaught exceptions </td>
       <td colspan="1" valign="top" align="left"><p>This option controls if a program will suspend if an uncaught exception is thrown. </p>
-      <p>For example if you try to call a method on a null object and a NullPointerException is thrown, with this option on your prgram will suspend at the location the exception was thrown </p></td>
+      <p>For example if you try to call a method on a null object and a NullPointerException is thrown, with this option on your program will suspend at the location the exception was thrown </p></td>
       <td colspan="1" valign="top" align="left">On</td>
     </tr>
     <tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-detail_formatters.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-detail_formatters.htm
index 7196df1..108d6e3 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-detail_formatters.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/java/debug/ref-detail_formatters.htm
@@ -10,8 +10,8 @@
 </head>
 <body>
 <h1> Detail Formatters Preferences </h1>
-<p> The following preferences can be set using the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Detail Formatters preference page"> <b>Java &gt; Debug &gt; Detail Formaters</b></a> preference page.</p>
-<p>Thess preferences are used to create and manage detail formatters, which are used in the details panes of variables views, or for varibale labels themselves. </p>
+<p> The following preferences can be set using the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage)")'> <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Detail Formatters preference page"> <b>Java &gt; Debug &gt; Detail Formatters</b></a> preference page.</p>
+<p>These preferences are used to create and manage detail formatters, which are used in the details panes of variables views, or for variable labels themselves. </p>
 <table border="1" cellspacing="0" cellpadding= "5" summary="Detail formatters preferences">
   <thead>
     <tr>
@@ -22,8 +22,8 @@
   </thead>
   <tbody>
     <tr>
-      <td colspan="1" valign="top" align="left">Types with detial formatters </td>
-      <td colspan="1" valign="top" align="left">The listing of types that currently have detail formatters (the list itself), and trhe enabled state of the detail formatter, i.e. if it is on use (the checked state of a list item) </td>
+      <td colspan="1" valign="top" align="left">Types with detail formatters </td>
+      <td colspan="1" valign="top" align="left">The listing of types that currently have detail formatters (the list itself), and the enabled state of the detail formatter, i.e. if it is on use (the checked state of a list item) </td>
       <td colspan="1" valign="top" align="left">&nbsp;</td>
     </tr>
     <tr>
@@ -43,16 +43,16 @@
     </tr>
     <tr>
       <td colspan="1" valign="top" align="left">Detail formatter code snippet for selected type </td>
-      <td colspan="1" valign="top" align="left">Displays the current code snippet in use for the detail formatter of the selected type. This field is not editable, the only way to edit a detila formatter is to use the Edit... button </td>
+      <td colspan="1" valign="top" align="left">Displays the current code snippet in use for the detail formatter of the selected type. This field is not editable, the only way to edit a detail formatter is to use the Edit... button </td>
       <td colspan="1" valign="top" align="left">&nbsp;</td>
     </tr>
     <tr>
       <td colspan="1" valign="top" align="left">Show variables details </td>
-      <td colspan="1" valign="top" align="left"><p>This option controls where you want to see the detial formatter appear, you have one of three choices:</p>
+      <td colspan="1" valign="top" align="left"><p>This option controls where you want to see the detail formatter appear, you have one of three choices:</p>
         <ul>
-          <li>As a label for variables with detail formatters - will appear as the primary display label only for associated variables the have detial formatters </li>
+          <li>As a label for variables with detail formatters - will appear as the primary display label only for associated variables the have detail formatters </li>
           <li>As a label for all variables - will appear for all associated variables, regardless of them having detail formatters already </li>
-          <li>In detail pane only - will only appear in variables view detials panes and nowhere else </li>
+          <li>In detail pane only - will only appear in variables view details panes and nowhere else </li>
       </ul></td>
       <td colspan="1" valign="top" align="left">&nbsp;</td>
     </tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/ref-preferences-java.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/ref-preferences-java.htm
index a5f44c4..e5fac55 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/ref-preferences-java.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/ref-preferences-java.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Java Preferences
@@ -196,8 +196,8 @@
       <img src="../../images/ngrelr.png" alt="Related reference" border="0" >
     </p>
     <p>
-      <a href="../../reference/views/ref-view-package-explorer.htm">Package explorer view</a><br>
-      <a href="../../reference/views/ref-type-hierarchy.htm">Type hierarchy view</a>
+      <a href="../../reference/views/ref-view-package-explorer.htm">Package Explorer view</a><br>
+      <a href="../../reference/views/ref-type-hierarchy.htm">Type Hierarchy view</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-console.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-console.htm
index 009c192..5476195 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-console.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-console.htm
@@ -56,25 +56,25 @@
     </tr>
     <tr>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Standard Out Text Color </p></td>
-      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the colour of text written to the standard output 
+      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the color of text written to the standard output 
           stream by an application. </p></td>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Black </p></td>
     </tr>
     <tr>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Standard Error Text Color </p></td>
-      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the colour of text written to the standard error 
+      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the color of text written to the standard error 
           stream by an application. </p></td>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Red </p></td>
     </tr>
     <tr>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Standard In Text Color </p></td>
-      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the colour of text typed into the console to 
+      <td rowspan="1" colspan="1" valign="top" align="left"><p> This preference controls the color of text typed into the console to 
           be read by an application. </p></td>
       <td rowspan="1" colspan="1" valign="top" align="left"><p> Green </p></td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left">Background Colour </td>
-      <td colspan="1" valign="top" align="left">This preference controls the colour of the background of the console </td>
+      <td colspan="1" valign="top" align="left">Background Color </td>
+      <td colspan="1" valign="top" align="left">This preference controls the color of the background of the console </td>
       <td colspan="1" valign="top" align="left">White</td>
     </tr>
   </tbody>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-perspectives.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-perspectives.htm
index 7fdb944..7967e87 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-perspectives.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-perspectives.htm
@@ -33,7 +33,7 @@
     </tr>
     <tr>
       <td colspan="1" valign="top" align="left">Open the associated perspective when an application suspends </td>
-      <td colspan="1" valign="top" align="left"><p>This option controls if the specified perspective will be switched to when the application susupends </p>
+      <td colspan="1" valign="top" align="left"><p>This option controls if the specified perspective will be switched to when the application suspends </p>
         <ul>
           <li>Always - the specified perspective will always be opened</li>
           <li>Never - the specified perspective will never be opened</li>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-run_debug.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-run_debug.htm
index 6eab835..a253fd7 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-run_debug.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-run_debug.htm
@@ -31,7 +31,7 @@
       <td align="left" valign="top"><p> On </p></td>
     </tr>
     <tr>
-      <td align="left" valign="top">Activate the workbench when when a breakpoint 
+      <td align="left" valign="top">Activate the workbench when a breakpoint 
         is hit</td>
       <td align="left" valign="top">This option brings attention to the debugger 
         when a breakpoint is encountered, by activating the associated window. 
@@ -67,23 +67,23 @@
       <td align="left" valign="top">On</td>
     </tr>
     <tr>
-      <td align="left" valign="top">Changed value colour </td>
-      <td align="left" valign="top">This option allows you to change the colour of a changed value in the variables view, expressions view, memory view, anywhere running program variables are rendered </td>
+      <td align="left" valign="top">Changed value color </td>
+      <td align="left" valign="top">This option allows you to change the color of a changed value in the variables view, expressions view, memory view, anywhere running program variables are rendered </td>
       <td align="left" valign="top">Red</td>
     </tr>
     <tr>
-      <td align="left" valign="top">Changed value background colour </td>
-      <td align="left" valign="top">This option allows you to change the selection colour  of a changed variable, e.g. in the variables view showing columns </td>
+      <td align="left" valign="top">Changed value background color </td>
+      <td align="left" valign="top">This option allows you to change the selection color  of a changed variable, e.g. in the variables view showing columns </td>
       <td align="left" valign="top">Yellow</td>
     </tr>
     <tr>
-      <td align="left" valign="top">Memory unbuffered colour </td>
-      <td align="left" valign="top">This option allows you to change the rendering colour of unbuffered memory blocks in the memory view </td>
+      <td align="left" valign="top">Memory unbuffered color </td>
+      <td align="left" valign="top">This option allows you to change the rendering color of unbuffered memory blocks in the memory view </td>
       <td align="left" valign="top">Grey</td>
     </tr>
     <tr>
-      <td align="left" valign="top">Memory buffered colour </td>
-      <td align="left" valign="top">This option allows you to change the rendering colour of buffered memory blocks in the memory view </td>
+      <td align="left" valign="top">Memory buffered color </td>
+      <td align="left" valign="top">This option allows you to change the rendering color of buffered memory blocks in the memory view </td>
       <td align="left" valign="top">Black</td>
     </tr>
   </tbody>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-string_substitution.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-string_substitution.htm
index 406dd7d..495c72c 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-string_substitution.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-string_substitution.htm
@@ -20,7 +20,7 @@
 <p><img src="../../../reference/preferences/run-debug/images/ref-string_dialog.PNG" alt="String Variable Selection Dialog"> </p>
 <p>We can now select the <em>TEST</em> variable and insert in as an argument if we wish, as shown in the following screen shot.</p>
 <p><img src="../../../reference/preferences/run-debug/images/ref-lcd_string_subbed.PNG" alt="Launch Dialog With Substituted String"> </p>
-<p>The other mentioned platform use of string substitution in in the External Tools launch dialog, used with Ant configurations, as shown in the following screen shot.</p>
+<p>The other mentioned platform use of string substitution in the External Tools launch dialog, used with Ant configurations, as shown in the following screen shot.</p>
 <p><img src="../../../reference/preferences/run-debug/images/ref-ext_string_subbed.PNG" alt="Ant Configuration Using String Substitution"> </p>
 <p><img src="../../../images/ngrelc.png" alt="Related concepts" border="0"></p>
 <p> <a href="../../../concepts/cdebugger.htm">Debugger</a><br>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-view_management.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-view_management.htm
index 15322c4..7992c07 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-view_management.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/preferences/run-debug/ref-view_management.htm
@@ -28,7 +28,7 @@
     </tr>
     <tr>
       <td colspan="1" valign="top" align="left">Do not automatically open/close views which have been manually opened/closed </td>
-      <td colspan="1" valign="top" align="left">This option controls if views manually opened/closed will be effected by view managment </td>
+      <td colspan="1" valign="top" align="left">This option controls if views manually opened/closed will be effected by view management </td>
       <td colspan="1" valign="top" align="left">On</td>
     </tr>
     <tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-actions-toolbar.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-actions-toolbar.htm
index c223cdd..597f80d 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-actions-toolbar.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-actions-toolbar.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -149,7 +149,7 @@
           </td>
           <td align="left" valign="top">
             <p>
-              This command helps you create a new JUni test case.
+              This command helps you create a new JUnit test case.
             </p>
           </td>
         </tr>
@@ -165,7 +165,7 @@
           <td align="left" valign="top">
             <p>
               This command allows you to browse the workspace for a type to open in the defined default Java editor. You can optionally choose to display the type simultaneously
-              in the Hierarchy view. See <a href="ref-dialog-open-type.htm">Open Type dialog</a>. 
+              in the Type Hierarchy view. See <a href="ref-dialog-open-type.htm">Open Type dialog</a>. 
             </p>
           </td>
         </tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPath.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPath.htm
index 5602aef..1a717e6 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPath.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPath.htm
@@ -17,18 +17,18 @@
     The Factory Path preference pane specifies which processors are enabled and permits configuration of 
     individual processors. <i>Settings in the Factory Path preference pane will only have an effect if
     annotation processing is enabled in the Annotation Processing preference pane.</i></p>
-    <p>The pane displays a list of all the plugins and jar files that contain annotation processors that
+    <p>The pane displays a list of all the plug-ins and jar files that contain annotation processors that
     may be applied to the project.  To add or remove jar files from the list, use the corresponding buttons.
     Jar files may be specified by absolute path using the Add External Jars... button, or by path relative
-    to a classpath variable using the Add Variable... button.  All installed plugins that extend the
+    to a classpath variable using the Add Variable... button.  All installed plug-ins that extend the
     org.eclipse.jdt.apt.annotationProcessorFactory extension point are also displayed in the list.</p>
-    <p>To enable a particular plugin or jar file, select the corresponding checkbox within the list.
-    Processors within plugins and jars that are not checked will not be executed.  If more than one processor
+    <p>To enable a particular plug-in or jar file, select the corresponding checkbox within the list.
+    Processors within plug-ins and jars that are not checked will not be executed.  If more than one processor
     claims the same annotation, only first one on the list will be served that annotation.  To reorder the
     list, use the Up and Down buttons.</p>
     <p>The Advanced... button leads to the <a href="ref-apt-factoryPathOptions.htm">Advanced Factory Path Options
-    dialog</a>, which is used to view the individual processors within a plugin or jar file
-    and to configure additional options. If a plugin or jar file on the factory path is known to contain
+    dialog</a>, which is used to view the individual processors within a plug-in or jar file
+    and to configure additional options. If a plug-in or jar file on the factory path is known to contain
     processors but it does not show any contents in the Advanced Factory Path Options dialog, it may be missing
     the META-INF/services entry or plugin.xml entry that is required to declare the processors. More
     information about developing annotation processors is available in the 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPathOptions.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPathOptions.htm
index 2c9c549..03024c7 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPathOptions.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-apt-factoryPathOptions.htm
@@ -12,7 +12,7 @@
       Advanced Factory Path Options Dialog
     </h1>
     <p>The Advanced Factory Path Options dialog is reached from the <a href="ref-apt-factoryPath.htm">Factory Path</a>
-    preferences pane.  It is used to view the individual processors within a plugin or jar file
+    preferences pane.  It is used to view the individual processors within a plug-in or jar file
     and to configure additional options.  Options on this dialog do not normally need to be changed from
     the default.</p>
     <dl>
@@ -23,7 +23,7 @@
     processor classes are loaded at the beginning of a build, executed over the full set of Java types,
     and then unloaded, as they would be when running apt at the command line.  Processors run in this
     mode are only run during a full build, not during incremental builds.
-    This option is only configurable for jar files; for plugins it is always set to false.  
+    This option is only configurable for jar files; for plug-ins it is always set to false.  
     This option only applies to processors using the Java 5 Mirror APIs. It does not affect processors
     using the Java 6 annotation processing APIs.
     </dd>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-element-filters.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-element-filters.htm
index d1b14ff..6cd1cd9 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-element-filters.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-element-filters.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Java Element Filters Dialog
@@ -91,7 +91,7 @@
       <img src="../images/ngrelr.png" alt="Related reference" border="0" >
     </p>
     <p>
-      <a href="../reference/views/ref-view-package-explorer.htm">Package explorer view</a>
+      <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer view</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-search.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-search.htm
index c382fe6..18c742b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-search.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-dialog-java-search.htm
@@ -19,48 +19,71 @@
 
     <p>In this field, type the expression for which you wish to search, using the wildcard characters mentioned in the dialog as needed. This field is initialized based on the
     current selection.</p>
-
-    <ul>
-      <li>Depending on what is searched for, the search string should describe the element:
-      <ul>
-        <li>Type: the type name (may be qualified or not).<br>
-        	<i>Examples:</i>
-        	<ul>
-        		<li><i>org.eclipse.jdt.internal.core.JavaElement</i></li>
-        		<li><i>MyClass.Inner</i></li>
-        		<li><i>Foo</i></li>
-        	</ul>
-        </li>
-        <li>Method: the defining type name (may be qualified or not as for Type search, optional), the method selector and its parameters (optional).<br>
-        	<i>Examples:</i>
-        	<ul>
-        		<li><i>org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(MementoTokenizer, WorkingCopyOwner)</i></li>
-        		<li><i>equals(Object)</i></li>
-        		<li><i>foo</i></li>
-        	</ul>
-        </li>
-        <li>Package: the package name for a package (e.g. org.eclipse.jdt.internal.core)</li>
-        <li>Constructor: the defining type name (may be qualified or not as for Type search, optional) and the constructor parameters (optional).<br>
-        	<i>Examples:</i>
-        	<ul>
-        		<li><i>org.eclipse.jdt.internal.core.JavaElement(JavaElement, String)</i></li>
-        		<li><i>Foo</i></li>
-        	</ul>
-             Note that the constructor name should not be entered as it is always the same as the type name.
-        </li>
-        <li>Field: the defining type name (qualified or not as for Type search, optional) and the field name.<br>
-        	<i>Examples:</i>
-        	<ul>
-        		<li><i>org.eclipse.jdt.internal.core.JavaElement.name</i></li>
-        		<li><i>foo</i></li>
-        	</ul>
-        </li>
-      </ul>
-      </li>
-      <li>From the drop-down menu, you can choose to repeat (or modify) a recent search.<br>
-       Select the <span class="control">Case sensitive</span> field to force a case aware search. <span class="control">Case sensitive</span> is enabled when a custom search
-      string is entered.</li>
-    </ul>
+<!-- Description copied from Javadoc of org.eclipse.jdt.core.search.SearchPattern.createPattern(String, int, int, int): -->
+ <ul>
+ 	<li>Type patterns have the following syntax:
+ 		<p><b><code>[qualification '.']typeName ['&lt;' typeArguments '&gt;']</code></b></p>
+			<p>Examples:</p>
+			<ul>
+ 			<li><code>java.lang.Object</code></li>
+				<li><code>Runnable</code></li>
+				<li><code>List&lt;String&gt;</code></li>
+			</ul>
+			<p>
+			Type arguments can be specified to search for references to parameterized types
+ 		using following syntax:</p><p>
+ 		<b><code>'&lt;' { [ '?' {'extends'|'super'} ] type ( ',' [ '?' {'extends'|'super'} ] type )* | '?' } '&gt;'</code></b>
+ 		</p><div style="font-style:italic;">
+ 		Note that:
+ 		<ul>
+ 			<li>'*' is not valid inside type arguments definition &lt;&gt;</li>
+ 			<li>'?' is treated as a wildcard when it is inside &lt;&gt; (i.e. it must be put on first position of the type argument)</li>
+ 		</ul>
+ 		</div>
+ 		<br>
+ 	</li>
+ 	<li>Method patterns have the following syntax:
+ 		<p><b><code>[declaringType '.'] ['&lt;' typeArguments '&gt;'] methodName ['(' parameterTypes ')'] [returnType]</code></b></p>
+			<p>Type arguments have the same syntax as explained in the type patterns section.</p>
+			<p>Examples:</p>
+			<ul>
+				<li><code>java.lang.Runnable.run() void</code></li>
+				<li><code>main(*)</code></li>
+				<li><code>&lt;String&gt;toArray(String[])</code></li>
+			</ul>
+ 		<br>
+		</li>
+ 	<li>Constructor patterns have the following syntax:
+			<p><b><code>['&lt;' typeArguments '&gt;'] [declaringQualification '.'] typeName ['(' parameterTypes ')']</code></b></p>
+			<p>Type arguments have the same syntax as explained in the type patterns section.</p>
+			<p><i>Note that the constructor name should not be entered as it is always the same as the type name.</i></p>
+			<p>Examples:</p>
+			<ul>
+				<li><code>java.lang.Object()</code></li>
+				<li><code>Test(*)</code></li>
+				<li><code>&lt;Exception&gt;Sample(Exception)</code></li>
+			</ul>
+ 		<br>
+ 	</li>
+ 	<li>Field patterns have the following syntax:
+			<p><b><code>[declaringType '.'] fieldName [fieldType]</code></b></p>
+			<p>Examples:</p>
+			<ul>
+				<li><code>java.lang.String.serialVersionUID long</code></li>
+				<li><code>field*</code></li>
+			</ul>
+ 		<br>
+ 	</li>
+ 	<li>Package patterns have the following syntax:
+			<p><b><code>packageNameSegment {'.' packageNameSegment}</code></b></p>
+			<p>Examples:</p>
+			<ul>
+				<li><code>java.lang</code></li>
+				<li><code>org.e*.jdt.c*e</code></li>
+			</ul>
+ 	</li>
+ </ul>
+<!-- End of copy -->
 
     <h2 class="Head">Search For</h2>
 
@@ -95,25 +118,37 @@
 
       <li>Write access (available only when searching for fields)</li>
       
-      <li>Match locations (available only when searching for types).<br>
-        Match locations allow to further narrow the location of matches. Select the location
-        where to search for the type reference.
+      <li>Match locations (available only when searching for types or methods references).
+        <p>Match locations allow to further narrow the location of matches.</p>
+        <p>Select the location where to search for:</p>
         <ul>
-        <li>Super class declarations</li>
-		<li>Annotations</li>
-		<li>Field types</li>
-		<li>Local variable types</li>       
-        <li>Method return types</li>
-		<li>Method parameter types</li>
-		<li>Thrown exception types</li>
-		<li>Type parameter bounds</li>
-        <li>Wildcard bounds</li>
-		<li>Type argument</li>
-		<li>Cast expressions</li>
-		<li>Catch clauses</li>
-		<li>Class instance creations</li>
-		<li>'instanceof' checks</li>		
-		</ul>
+          <li>type reference:
+            <ul>
+              <li>Super class declarations</li>
+              <li>Annotations</li>
+              <li>Field types</li>
+              <li>Local variable types</li>
+              <li>Method return types</li>
+              <li>Method parameter types</li>
+              <li>Thrown exception types</li>
+              <li>Type parameter bounds</li>
+              <li>Wildcard bounds</li>
+              <li>Type argument</li>
+              <li>Cast expressions</li>
+              <li>Catch clauses</li>
+              <li>Class instance creations</li>
+              <li>'instanceof' checks</li>
+            </ul>
+          </li>
+          <li>method reference:
+            <ul>
+              <li>'this' references</li>
+              <li>Implicit 'this' references</li>
+              <li>'super' references</li>
+              <li>Qualified references</li>
+            </ul>
+          </li>
+        </ul>
       </li>
     </ul>
 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-icons.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-icons.htm
index f93b1de..ef222a7 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-icons.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-icons.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -46,10 +46,10 @@
         </tr>
         <tr>
           <td valign="middle" align="center">
-            <img src="../images/org.eclipse.jdt.ui/obj16/file_obj.png"  alt="file without icon assigned to its type"><br>
+            <img src="../images/org.eclipse.jdt.ui/obj16/file_obj.png"  alt="generic file (unknown content type)"><br>
           </td>
           <td valign="top">
-            file without icon assigned to its type<br>
+            generic file (unknown content type)<br>
           </td>
         </tr>
         <tr>
@@ -86,7 +86,7 @@
         </tr>
         <tr>
           <td valign="middle" align="center">
-            <img src="../images/org.eclipse.jdt.ui/obj16/testfile_obj.gif"  alt="JUnit test result file"><br>
+            <img src="../images/org.eclipse.jdt.junit/obj16/testfile_obj.gif"  alt="JUnit test result file"><br>
           </td>
           <td valign="top">
             JUnit test result file<br>
@@ -405,6 +405,14 @@
         </tr>
         <tr>
           <td valign="middle" align="center">
+            <img src="../images/org.eclipse.jdt.ui/ovr16/error_co_buildpath.png"  alt="build path error decorator"><br>
+          </td>
+          <td valign="top">
+            decorates Java projects and working sets that contain build path errors<br>
+          </td>
+        </tr>
+        <tr>
+          <td valign="middle" align="center">
             <img src="../images/org.eclipse.jdt.ui/ovr16/error_co.png" alt="Abstract Overlay" ><br>
           </td>
           <td valign="top">
@@ -472,8 +480,32 @@
             synchronized member<br>
           </td>
         </tr>
+        <tr>
+          <td valign="middle" align="center">
+            <img src="../images/org.eclipse.jdt.ui/ovr16/native_co.png" alt="Native Overlay" ><br>
+          </td>
+          <td valign="top">
+            native method<br>
+          </td>
+        </tr>
+        <tr>
+          <td valign="middle" align="center">
+            <img src="../images/org.eclipse.jdt.ui/ovr16/transient_co.png" alt="Transient Overlay" ><br>
+          </td>
+          <td valign="top">
+            transient field<br>
+          </td>
+        </tr>
+        <tr>
+          <td valign="middle" align="center">
+            <img src="../images/org.eclipse.jdt.ui/ovr16/volatile_co.png" alt="Volatile Overlay" ><br>
+          </td>
+          <td valign="top">
+            volatile field<br>
+          </td>
+        </tr>
         <!--
-          native_co.png and volatile_co.png, and read.png and write.png are currently unused.
+          read.png and write.png are currently unused.
           sync_impl.png and sync_over.png are self-explanatory combinations of the above overlays.
         -->
         <tr>
@@ -481,7 +513,8 @@
             <img src="../images/org.eclipse.jdt.ui/ovr16/run_co.png" alt="Run Overlay" ><br>
           </td>
           <td valign="top">
-            type with public static void main(String[] args)<br>
+            type with<br>
+            public static void main(String[] args)<br>
           </td>
         </tr>
         <tr>
@@ -515,7 +548,7 @@
             <img src="../images/org.eclipse.jdt.ui/ovr16/focus_ovr.png" alt="Focus Overlay" ><br>
           </td>
           <td valign="top">
-            type with focus in Type hierarchy<br>
+            type with focus in Type Hierarchy<br>
           </td>
         </tr>
         <tr>
@@ -952,9 +985,15 @@
     </td>
   </tr>
   <tr> 
-    <td valign="middle" align="center"> <img src="../images/org.eclipse.jdt.debug.ui/ovr16/installed_ovr.png"  alt="adornment that marks a line breakpoints as installed"><br>
+    <td valign="middle" align="center"> <img src="../images/org.eclipse.debug.ui/ovr16/skip_breakpoint_ov.gif"  alt="adornment that marks a breakpoint as skipped"><br>
+    </td>
+    <td valign="top"> adornment that marks a breakpoint as skipped<br>
+    </td>
+  </tr>
+  <tr> 
+    <td valign="middle" align="center"> <img src="../images/org.eclipse.jdt.debug.ui/ovr16/installed_ovr.png"  alt="adornment that marks a line breakpoint as installed"><br>
     </td>
-    <td valign="top"> adornment that marks a line breakpoints as installed<br>
+    <td valign="top"> adornment that marks a line breakpoint as installed<br>
     </td>
   </tr>
   <tr> 
@@ -1311,6 +1350,14 @@
         </tr>
         <tr>
           <td valign="middle" align="center">
+            <img src="../images/org.eclipse.jdt.ui/obj16/correction_multi_fix.gif"  alt="fix multiple problems"><br>
+          </td>
+          <td valign="top">
+            fix multiple problems<br>
+          </td>
+        </tr>
+        <tr>
+          <td valign="middle" align="center">
             <img src="../images/org.eclipse.jdt.ui/obj16/correction_move.png"  alt="move to another package"><br>
           </td>
           <td valign="top">
@@ -1396,7 +1443,7 @@
             <img src="../images/org.eclipse.ltk.ui.refactoring/obj16/file_change.png"  alt="file change"><br>
           </td>
           <td valign="top">
-            file change
+            file change<br>
           </td>
         </tr>
         <tr>
@@ -1504,7 +1551,7 @@
             <img src="../images/org.eclipse.jdt.ui/obj16/occ_write.png"  alt="write access to local or field"><br>
           </td>
           <td valign="top">
-			write access to local or field          
+			write access to local or field
 		  </td>
         </tr>
       </tbody>
@@ -1512,25 +1559,25 @@
     <br>
     
     <h2>
-      Type hierarchy view
+      Type Hierarchy view
     </h2>
     <table cellspacing="0" cellpadding="5" border="1" width="300">
       <colgroup> <col width="25px"> </colgroup>
       <tbody>
         <tr>
           <td valign="middle" align="center">
-            <img src="../images/org.eclipse.jdt.ui/obj16/classfo_obj.png"  alt="type from non selected package"><br>
+            <img src="../images/org.eclipse.jdt.ui/obj16/classfo_obj.png"  alt="type outside of selected package"><br>
           </td>
           <td valign="top">
-            type from non selected package<br>
+            type outside of selected package<br>
           </td>
         </tr>
         <tr>
           <td valign="middle" align="center">
-            <img src="../images/org.eclipse.jdt.ui/obj16/intf_obj.png"  alt="interface from non selected package"><br>
+            <img src="../images/org.eclipse.jdt.ui/obj16/intf_obj.png"  alt="interface outside of selected package"><br>
           </td>
           <td valign="top">
-            interface from non selected package<br>
+            interface outside of selected package<br>
           </td>
         </tr>
       </tbody>
@@ -1550,11 +1597,6 @@ error_gray_obj.png
 warning_gray_obj.png
 -->
 
-<!-- unsure what to do:
-jworkingSet_obj.png
--->
-
-    
   </body>
 </html>
 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-formatter.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-formatter.htm
new file mode 100644
index 0000000..b1ddc31
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-formatter.htm
@@ -0,0 +1,116 @@
+<!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" xml:lang="en">
+  <head>
+    <meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <meta http-equiv="Content-Style-Type" content="text/css"/>
+    <title>
+      Formatter
+    </title>
+    <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css"/>
+  </head>
+  <body>
+
+    <h1>
+      Formatter
+    </h1>
+
+    <p>
+      In the Java editor press <b>Ctrl+Shift+F</b> on code to format it. If no
+      selection is set then the entire source is formatted otherwise only the
+      selection will be. Some tips for using the formatter are listed in the
+      paragraphs of this chapter.
+    </p>
+
+    <p>
+      Note that the Java Formatter preferences are accessible on the 
+      <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.CodeFormatterPreferencePage)")'>
+      <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Java Formatter preference page"/>
+      <b>Java Formatter</b></a> preference page.
+    </p>
+
+    <h2>
+      Disabling formatter inside sections
+    </h2>
+    <p>
+      You can disable/enable the formatter in one or several sections in the
+      code as shown in the sample below:</p>
+    <img src="images/formatter-disabling-enabling-tags.png"
+         alt="Java formatter example. Some code using disabling and enabling tags."/>
+    <p>
+      The snippet above use default tag names, but they can be changed on the
+      <b>Off/On tags</b> tab of the Java Formatter preference page.</p>
+
+    <h2>
+      Wrap outermost method calls
+    </h2>
+    <p>
+      Since version 3.6, the Java formatter now tries to wrap the outermost
+      method calls first to have a better output when wrapping nested method
+      calls.</p>
+    <p>
+      Here is an example of a formatted code where the formatter has
+      wrapped the line between the arguments of the outermost message call
+      to keep each nested method call on a single line:</p>
+    <img src="images/formatter-prefer-wrapping-outer-expressions.png"
+         alt="Java formatter example. The simple snippet with the formatted nested method calls."/>
+    <p>
+      A new preference allows you to disable this strategy, typically if you
+      want to format your code as before, then uncheck the
+      <b>Prefer wrapping outer expressions</b> preference accessible on the
+      <b>Line wrapping</b> tab of the Java Formatter preference page.</p>
+    <p>
+      <b>Note:</b> Currently the new strategy only applies to nested method
+      calls, but that might be extended to other nested expressions in future
+      versions.</p>
+
+    <h2>
+      Condense Javadoc and block comments
+    </h2>
+    <p>
+      Users can reduce the number of lines of formatted multi-lines
+      comments as shown in the example below:</p>
+    <img src="images/formatter-condense-multi-lines-comments.png"
+         alt="Java formatter example. The simple snippet with the block and Javadoc comments formatted with less lines than with the default profile."/>
+    <p>
+      To activate this behavior uncheck the
+      <b>/* and */ on separate lines</b> preference accessible on the
+      <b>Comments</b> tab of the Java Formatter preference page.</p>
+    <p>
+      The same kind of preference is also available for the Javadoc comments.</p>
+
+    <h2>
+      Preserve user line breaks
+    </h2>
+    <p>
+      Users can preserve line breaks by not joining lines in code or comments.</p>
+    <p>
+      For example, the already wrapped lines of the <code>return</code>
+      statement in the following test case:</p>
+    <img src="images/formatter-join-lines-before.png" alt="Example of Code to Format"/>
+    <p>
+      will be preserved by the formatter when the <b>Never join lines</b>
+      preference is used, hence produces the following output when formatted:</p>
+    <img src="images/formatter-join-lines-after.png" alt="Coded Formatted with Never Join Lines"/>
+    <p>
+      To activate this behavior check the <b>Never join lines</b> preference
+      accessible on the <b>Line Wrapping</b> and the <b>Comments</b> tabs of
+      the Java Formatter preference page.</p>
+
+    <img src="../images/ngrelc.png" alt="Related concepts" border="0"/> 
+    <p>
+      <a href="../concepts/concept-java-editor.htm">Java editor</a><br/>
+       <a href="../concepts/concept-jdt.htm">Java development tools (JDT)</a>
+    </p>
+    <p>
+      <img src="../images/ngrelr.png"  alt="Related reference"/>
+    </p>
+    <p>
+      <a href="../reference/ref-menu-edit.htm">Edit menu</a><br/>
+      <a href="../reference/preferences/java/ref-preferences-editor.htm">Java editor preferences</a><br/>
+      <a href="../reference/preferences/java/codestyle/ref-preferences-formatter.htm">Formatter preferences</a><br/>
+    </p>
+    
+  </body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm
index 180de3c..d42b14b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm
@@ -209,14 +209,14 @@ instanceof Vector) {<br>
       <td style="vertical-align: top;" width="15%">select a part of a string literal</td>
     </tr>
     <tr>
-      <td style="vertical-align: top;" width="15%">Convert string concatination to StringBuilder (J2SE 5.0) or StringBuffer</td>
+      <td style="vertical-align: top;" width="15%">Convert string concatenation to StringBuilder (J2SE 5.0) or StringBuffer</td>
       <td style="vertical-align: top; text-align: right;" width="34%"><code>"Hello " + name</code></td>
       <td style="vertical-align: top;">&gt;</td>
       <td style="vertical-align: top;" width="34%"><code>StringBuilder builder= new StringBuilder();<br>builder.append("Hello ");<br>builder.append(name);</code></td>
       <td style="vertical-align: top;" width="15%">select a string literal</td>
     </tr>
     <tr>
-      <td style="vertical-align: top;" width="15%">Convert string concatination to MessageFormat</td>
+      <td style="vertical-align: top;" width="15%">Convert string concatenation to MessageFormat</td>
       <td style="vertical-align: top; text-align: right;" width="34%"><code>"Hello " + name</code></td>
       <td style="vertical-align: top;">&gt;</td>
       <td style="vertical-align: top;" width="34%"><code>MessageFormat.format("Hello {0}", name);</code></td>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm
index 2a19625..71469fa 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickfix.htm
@@ -2,7 +2,7 @@
 
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
 
@@ -159,6 +159,8 @@ contains this information for all applicable proposals. To fix all problems of t
 				<li>Add missing Javadoc comments</li>
 				<li>Add missing Javadoc tags</li>
 				<li>Suppress a warning using @SuppressWarnings</li>
+				<li>Throw the allocated object</li>
+				<li>Return the allocated object</li>
 			</ul>
 			</td>
 		</tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-jdt-faq.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-jdt-faq.htm
index 1f8027a..c3e8dc2 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-jdt-faq.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-jdt-faq.htm
@@ -66,7 +66,7 @@
       How do I prevent having my documentation files from being copied to the project's output folder?
     </h3>
     <p>
-      Use source folders and put any resources that you do not want to be copied to the output folder into a separate folder that is not included on the class path.You can also
+      Use source folders and put any resources that you do not want to be copied to the output folder into a separate folder that is not included on the class path.  You can also
       set a resource filter in the Java compiler preferences:<strong> Window &gt; Preferences &gt; Java &gt; Compiler &gt; Building</strong> to for example *.doc.
     </p>
     <h3>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-navigate.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-navigate.htm
index 049fbbd..e10502b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-navigate.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-navigate.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -123,10 +123,24 @@
 			</p>
           </td>
           <td>
-            Ctrl + Alt + H
+            Ctrl+Alt+H
           </td>
         </tr>
-		  
+		<tr>
+          <td align="left" valign="top">
+            <p>
+              Open Implementation
+            </p>
+          </td>
+          <td align="left" valign="top">
+            <p>
+				Opens the implementation of the currently selected method if there's only one implementor, else opens the Quick Type Hierarchy on that method.
+			</p>
+          </td>
+          <td> &nbsp;
+                     
+          </td>
+        </tr>  
         <tr>
           <td align="left" valign="top">
             <p>
@@ -154,7 +168,7 @@
             export wizard</a>.&nbsp;
           </td>
           <td>
-            Shift + F2
+            Shift+F2
           </td>
         </tr>
         <tr align="left" valign="top">
@@ -165,7 +179,7 @@
             Brings up the <a href="ref-dialog-open-type.htm">Open Type</a> dialog to open a type in the editor. The Open Type selection dialog shows all types existing in the workspace.
           </td>
           <td>
-            Ctrl + Shift + T
+            Ctrl+Shift+T
           </td>
         </tr>
         <tr align="left" valign="top">
@@ -177,7 +191,7 @@
             shows all types that exist in the workspace.
           </td>
           <td>
-            Ctrl + Shift + H
+            Ctrl+Shift+H
           </td>
         </tr>
 		<tr>
@@ -190,7 +204,7 @@
             <p>Opens the Open Resource dialog to open any resource in your workspace.</p>
           </td>
           <td>
-            Ctrl + Shift + R
+            Ctrl+Shift+R
           </td>
         </tr>
 		<tr>
@@ -203,7 +217,7 @@
             Shows the currently selected element in the breadcrub bar of the Java editor.
           </td>
           <td>
-            Ctrl + Shift + B
+            Ctrl+Shift+B
           </td>
         </tr>        
         <tr align="left" valign="top">
@@ -217,7 +231,7 @@
 				  <li>Outline</li>
 			  </ul>
 		  </td>
-          <td>Alt + Shift + W</td>
+          <td>Alt+Shift+W</td>
         </tr>
         <tr align="left" valign="top">
           <td>
@@ -226,7 +240,7 @@
           <td>
             Opens the lightweight outliner for the currently selected type.
           </td>
-          <td>Ctrl + O
+          <td>Ctrl+O
           </td>
         </tr>
 	   <tr align="left" valign="top">
@@ -236,29 +250,7 @@
           <td>
             Opens the lightweight hierarchy viewer for the currently selected type.
           </td>
-          <td>Ctrl + T
-          </td>
-        </tr>
-        <tr>
-          <td>
-            Next / Next Annotation / <a href="views/debug/ref-nextthread.htm">Next Thread</a>
-          </td>
-          <td>
-            Selects the next annotation in the Java editor.  Selects the next suspended thread in the <a href="views/debug/ref-debug_view.htm">Debug View</a>.
-          </td>
-          <td>
-            Ctrl + .
-          </td>
-        </tr>
-        <tr>
-          <td>
-            Previous / Previous Annotation / <a href="views/debug/ref-previousthread.htm">Previous Thread</a>
-          </td>
-          <td>
-            Selects the previous annotation in the java editor. Selects the previous suspended thread in the <a href="views/debug/ref-debug_view.htm">Debug View</a>.
-          </td>
-          <td>
-            Ctrl + ,
+          <td>Ctrl+T
           </td>
         </tr>
         <tr>
@@ -269,7 +261,7 @@
             Reveals the location where the last edit occurred.
           </td>
           <td>
-            Ctrl + Q
+            Ctrl+Q
           </td>
         </tr>
         <tr>
@@ -280,7 +272,7 @@
             Opens an a dialog which allows entering the line number to which the editor should jump to. Editor only.
           </td>
           <td>
-            Ctrl + L
+            Ctrl+L
           </td>
         </tr>
 		<tr>
@@ -289,7 +281,7 @@
           </td>
           <td>Reveals the previous editor location in the location history.</td>
           <td>
-            Alt + Left
+            Alt+Left
           </td>
         </tr>
 		<tr>
@@ -298,7 +290,7 @@
 		  </td>
           <td>Reveals the next editor location in the location history.</td>
           <td>
-            Alt + Right
+            Alt+Right
           </td>
         </tr>
       </tbody>
@@ -324,8 +316,8 @@
       <img border="0"  src="../images/ngrelr.png" alt="Related reference">
       </p>
       <p>
-      <a href="views/ref-view-package-explorer.htm">Package explorer view</a><br>
-	  <a href="views/ref-type-hierarchy.htm">Type hierarchy view</a><br>
+      <a href="views/ref-view-package-explorer.htm">Package Explorer view</a><br>
+	  <a href="views/ref-type-hierarchy.htm">Type Hierarchy view</a><br>
 	  <a href="ref-dialog-javadoc-location.htm">Javadoc location properties</a><br>
 	  <a href="ref-export-javadoc.htm">Javadoc export wizard</a>
     </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm
index 6d00b6f..906308b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <meta name="copyright"
-	content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+	content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <title>Refactor Actions</title>
@@ -232,19 +232,18 @@
 		</tr>
 		<tr>
 
-			<td align="left" valign="top">Convert Member Type to Top Level</td>
+			<td align="left" valign="top">Move Type to New File</td>
 
-			<td>Creates a new Java compilation unit for the selected member
+			<td>Creates a new Java compilation unit for the selected member type or the selected secondary 
 			type, updating all references as needed. For non-static member types,
 			a field is added to allow access to the former enclosing instance, if
 			necessary. <br>
-			<table border="0" cellspacing="1" cellpadding="5" summary="Convert Member Type to Top Level refactoring">
+			<table border="0" cellspacing="1" cellpadding="5" summary="Move Type to New File refactoring">
 				<tbody>
 					<tr>
 						<td align="left" valign="top">Available:</td>
-						<td>Member types or text resolving to a member type.
-						<br>This refactoring is also available as <a href="ref-java-editor-quickassist.htm">quick assist</a> on
-						member classes selected in the editor.
+						<td>Member types, secondary types, or text resolving to a member type or a secondary type.
+						<br>
 						</td>
 					</tr>
 				</tbody>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm
index 57dd325..0bf668d 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm
@@ -23,7 +23,7 @@
     <p>Source folders are top-level folders in the project hierarchy. They are the root of packages containing .java files. 
     The compiler will translate the contained files to .class files that will be written to the output folder.</p>
 <p>Source folders allow to structure the project, for example to separate 
-test from the application in two source folders. Within a source folder, a more detailed structuring can be acived by using packages.</p> 
+test from the application in two source folders. Within a source folder, a more detailed structuring can be achieved by using packages.</p> 
 <p>Each source folder can define an exclusion filter to specify which 
 resources inside the folder should not be visible to the compiler.</p>
 <p>Resources existing in source folders are copied to the output folder unless the setting in the <a href="preferences/java/compiler/ref-preferences-building.htm">Java &gt; Compiler &gt; Building</a> preference
@@ -97,7 +97,7 @@ resources inside the folder should not be visible to the compiler.</p>
 		<tr>
 			<td align="left" valign="top">Native library location</td>
 
-			<td align="left" valign="top">Defines the folder that contains the native libararies
+			<td align="left" valign="top">Defines the folder that contains the native libraries
 			  (for example 'dll' or 'o' files) required at runtime by the sources in the source folder.
 			</td>
 		</tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-listcontent.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-listcontent.htm
index b697f60..7fa7670 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-listcontent.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-listcontent.htm
@@ -50,7 +50,7 @@ A helper method returns a string listing items of a given array, in the form of
 <p>The same solution is used for all JDK versions: <code>aList.subList(0, Math.min(aList.size(), maxLen))</code></p>
 
 <h2>Listing limited contents of <code>Collection</code>s (helper method)</h2>
-<p>A <code>Collection</code> cannot be turned into a <code>List</code> without copying its contents (assuming iy isn't a <code>List</code> already), so a helper method is used to iterate over first <code>maxLen</code> elements and build a string out of them:</p>
+<p>A <code>Collection</code> cannot be turned into a <code>List</code> without copying its contents (assuming it isn't a <code>List</code> already), so a helper method is used to iterate over first <code>maxLen</code> elements and build a string out of them:</p>
 <pre>private String toString(Collection collection, int maxLen) {
 	StringBuffer stringBuffer = new StringBuffer();
 	stringBuffer.append("[");
@@ -116,7 +116,7 @@ A helper method returns a string listing items of a given array, in the form of
 <tr>
 <th>jdk 1.6, limit elements</th>
 <td><code>member.subList()</code></td>
-<td>helper method <code>toSting(Collection)</code></td>
+<td>helper method <code>toString(Collection)</code></td>
 <td>helper method <code>toString(Collection)</code> with <code>map.entrySet()</code></td>
 <td><code>Arrays.toString(Arrays.copyOf(member, ...))</code></td>
 <td><code>Arrays.asList(array).subList()</code></td>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-styles.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-styles.htm
index ab5404c..c576f72 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-styles.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-tostring-styles.htm
@@ -82,7 +82,7 @@ return builder.toString();</pre>
 This style is very pleasant for relatively short list of elements, but with longer ones it becomes hard to see which fields are associated with which variables. Unfortunately, the <b>"Skip null values"</b> option cannot be used with this style.
 <pre>return String.format("FooClass [aFloat=%s, aString=%s, anInt=%s, anObject=%s]",
   aFloat, aString, anInt, anObject);</pre>
-Because there's no <code>String.format()</code> in JDK 1.4 and ealier, <code>MessageFormat.format()</code> is used instead:
+Because there's no <code>String.format()</code> in JDK 1.4 and earlier, <code>MessageFormat.format()</code> is used instead:
 <pre>return MessageFormat.format("FooClass [aFloat={0}, aString={1}, anInt={2}, anObject={3}]", 
   new Object[] { new Float(aFloat), aString, new Integer(anInt), anObject });</pre>
 </li>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-class.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-class.htm
index 36a4578..3454961 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-class.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-class.htm
@@ -18,7 +18,7 @@
     <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.newWizard(newWizardId=org.eclipse.jdt.ui.wizards.NewClassCreationWizard)")'>
     <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the New Java Class wizard">
     <b>New Java Class</b></a> wizard
-    helps you to create a new Java class in in a Java project.</p>
+    helps you to create a new Java class in a Java project.</p>
 
     <table border="1" cellspacing="0" cellpadding="5" summary="New Java class settings">
       <caption>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-enum.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-enum.htm
index c4ebb3a..f171978 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-enum.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-enum.htm
@@ -18,7 +18,7 @@
     <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.newWizard(newWizardId=org.eclipse.jdt.ui.wizards.NewEnumCreationWizard)")'>
     <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the New Java Enum Type wizard">
     <b>New Java Enum Type</b></a> wizard
-    helps you to create a new Java enum in in a Java project.</p>
+    helps you to create a new Java enum in a Java project.</p>
 
     <table border="1" cellspacing="0" cellpadding="5" summary="New Java enum options">
       <caption>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-java-project.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-java-project.htm
index 922b297..a7c455e 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-java-project.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/ref-wizard-java-project.htm
@@ -150,7 +150,7 @@
     <p>Source folders are top-level folders in the project hierarchy. They are the root of packages containing .java files. 
     The compiler will translate the contained files to .class files that will be written to the output folder.</p>
 <p>Source folders allow to structure the project, for example to separate 
-test from the application in two source folders. Within a source folder, a more detailed structuring can be acived by using packages.</p> 
+test from the application in two source folders. Within a source folder, a more detailed structuring can be achieved by using packages.</p> 
 <p>Each source folder can define an exclusion filter to specify which 
 resources inside the folder should not be visible to the compiler.</p>
 <p>Resources existing in source folders are copied to the output folder unless the setting in the <a href="preferences/java/compiler/ref-preferences-building.htm">Java &gt; Compiler &gt; Building</a> preference
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/images/ref-views_breakpoint_details.PNG b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/images/ref-views_breakpoint_details.PNG
new file mode 100644
index 0000000..b8e35d7
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/images/ref-views_breakpoint_details.PNG differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/ref-breakpoints_view.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/ref-breakpoints_view.htm
index 1f13412..b8044a5 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/ref-breakpoints_view.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/breakpoints/ref-breakpoints_view.htm
@@ -1,10 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<link rel="stylesheet" href="../../../book.css" charset="ISO-8859-1" type="text/css">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." />
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<meta http-equiv="Content-Style-Type" content="text/css"/>
+<link rel="stylesheet" href="../../../book.css" charset="ISO-8859-1" type="text/css"/>
 <title>Breakpoints View</title>
 </head>
 <body>
@@ -12,7 +12,12 @@
 <p> The <strong>Breakpoints View</strong> lists all the breakpoints you currently have set in your workspace. </p>
 <p>You can double-click a breakpoint to display its location in the editor (if applicable). You can also enable or disable breakpoints, delete them, add new ones, group them by working set, or set hit counts. </p>
 <p>In the example shown below the <strong><a href="../../../reference/views/breakpoints/ref-groupby_viewaction.htm">Group by &gt; Breakpoint Types</a></strong> option is turned on.</p>
-<p><img src="../../../reference/views/breakpoints/images/ref-views_breakpoints_view.PNG" alt="Breakpoints View"> </p>
+<p><img src="../../../reference/views/breakpoints/images/ref-views_breakpoints_view.PNG" alt="Breakpoints View"/> </p>
+<a name="detail_pane"/>
+<p>The breakpoints view displays details of the selected breakpoint and can be used to configure attributes
+   of the selected breakpoint similar to the <a href="../../../reference/views/breakpoints/ref-properties_contextaction.htm"><strong>Breakpoint Properties...</strong></a>
+   action. The orientation of the detail pane can be configured from the view drop down menu.</p>
+<p><img src="../../../reference/views/breakpoints/images/ref-views_breakpoint_details.PNG" alt="Breakpoints Details"/> </p>
 <p>The commands available in the <strong>Breakpoints View</strong> are listed below.</p>
 <table border="1" cellpadding="5" cellspacing="0" summary="The commands available in the Breakpoints View">
   <caption>
@@ -34,7 +39,7 @@
       <td colspan="1" valign="top" align="left">Context menu</td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/elcl16/exc_catch.png" alt="Add Exception Breakpoint"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/elcl16/exc_catch.png" alt="Add Exception Breakpoint"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-addexception_viewaction.htm"><strong>Add Exception Breakpoint</strong> </a></td>
       <td colspan="1" valign="top" align="left">Opens the create exception breakpoint dialog.</td>
       <td colspan="1" valign="top" align="left">View action </td>
@@ -52,25 +57,25 @@
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/collapseall.png" alt="Collapse All"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/collapseall.png" alt="Collapse All"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/shared/ref-collapseall.htm"><strong>Collapse All</strong> </a></td>
       <td colspan="1" valign="top" align="left">Collapses all of the items in the view.</td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/copy_edit_co.png" alt="Copy"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/copy_edit_co.png" alt="Copy"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/shared/ref-copy.htm"><strong>Copy</strong></a></td>
       <td colspan="1" valign="top" align="left">Copies the selected breakpoints to the system clipboard. </td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/disabled_co.png" alt="Disabled"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/disabled_co.png" alt="Disabled"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-disable_contextaction.htm"><strong>Disable</strong></a></td>
       <td colspan="1" valign="top" align="left">Changes the selected breakpoint(s) to be disabled.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/enabled_co.png" alt="Enable"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/enabled_co.png" alt="Enable"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-enable_contextaction.htm"><strong>Enable</strong></a></td>
       <td colspan="1" valign="top" align="left">Changes the selected breakpoint(s) to be enabled.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
@@ -88,19 +93,19 @@
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/expandall.png" alt="Expand All"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/expandall.png" alt="Expand All"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-expandall_viewaction.htm"><strong>Expand All</strong> </a></td>
       <td colspan="1" valign="top" align="left">Expands all of the items in the view.</td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/export_brkpts.png" alt="Export Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/export_brkpts.png" alt="Export Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-export_contextaction.htm"><strong>Export Breakpoints...</strong> </a></td>
       <td colspan="1" valign="top" align="left">Opens the export breakpoints wizard.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.ui/elcl16/goto_input.png" alt="Go to File"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.ui/elcl16/goto_input.png" alt="Go to File"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-gotofile_viewaction.htm"><strong>Go to File </strong></a></td>
       <td colspan="1" valign="top" align="left">Opens the corresponding location of the breakpoint in the java editor. </td>
       <td colspan="1" valign="top" align="left">Context menu and view action </td>
@@ -112,19 +117,19 @@
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/elcl16/sethitcount_co.png" alt="Hit Count"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/elcl16/sethitcount_co.png" alt="Hit Count"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-hitcount_contextaction.htm"><strong>Hit Count</strong> </a></td>
       <td colspan="1" valign="top" align="left">Allows you to set or change the hit count for the selected breakpoint.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/import_brkpts.png" alt="Import Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/import_brkpts.png" alt="Import Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-import_contextaction.htm"><strong>Import Breakpoints... </strong></a></td>
       <td colspan="1" valign="top" align="left">Opens the import breakpoints wizard. </td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/synced.png" alt="Link with View"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/synced.png" alt="Link with View"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-linkwith_viewaction.htm"><strong>Link with View </strong></a></td>
       <td colspan="1" valign="top" align="left">Changes if the breakpoints should be linked to the Debug View. </td>
       <td colspan="1" valign="top" align="left">View action </td>
@@ -136,19 +141,19 @@
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.ui.console/elcl16/paste_edit.png" alt="Paste Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.ui.console/elcl16/paste_edit.png" alt="Paste Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/shared/ref-paste.htm"><strong>Paste</strong></a></td>
       <td colspan="1" valign="top" align="left">Pastes copied breakpoints into the view.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/rem_all_co.png" alt="Remove All Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/rem_all_co.png" alt="Remove All Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-removeall_viewaction.htm"><strong>Remove All </strong></a></td>
       <td colspan="1" valign="top" align="left">Removes all breakpoints from the view. </td>
       <td colspan="1" valign="top" align="left">Context menu and view action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/rem_co.png" alt="Remove Selected Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/rem_co.png" alt="Remove Selected Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-remove_viewaction.htm"><strong>Remove Selected Breakpoints</strong> </a></td>
       <td colspan="1" valign="top" align="left">Removes only the selected breakpoint(s) from the view.</td>
       <td colspan="1" valign="top" align="left">Context menu and view action </td>
@@ -160,31 +165,31 @@
       <td colspan="1" valign="top" align="left">Context menu </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/obj16/brkp_grp.png" alt="Select Defautl Working Sets"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/obj16/brkp_grp.png" alt="Select Defautl Working Sets"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-selectdefaultws_viewaction.htm"><strong>Select Default Working Set</strong> </a></td>
       <td colspan="1" valign="top" align="left">Allows you to choose which working set will be the default one. </td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/obj16/package_obj.png" alt="Show Qualified Names"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/obj16/package_obj.png" alt="Show Qualified Names"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/shared/ref-showqualified.htm"><strong>Show Qualified Names</strong> </a></td>
       <td colspan="1" valign="top" align="left">Changes if qualified names are shown or not.</td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/obj16/debugt_obj.png" alt="Show Supported Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/obj16/debugt_obj.png" alt="Show Supported Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-showsupported_viewaction.htm"><strong>Show Supported Breakpoints </strong></a></td>
       <td colspan="1" valign="top" align="left">Changes if only supported breakpoints should be shown or not. </td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/skip_brkp.png" alt="Skip All Breakpoints"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/skip_brkp.png" alt="Skip All Breakpoints"/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-skipall_viewaction.htm"><strong>Skip All </strong></a></td>
       <td colspan="1" valign="top" align="left">Sets all breakpoints to be skipped.</td>
       <td colspan="1" valign="top" align="left">View action </td>
     </tr>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/suspend_co.png" alt="Suspend..."></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/suspend_co.png" alt="Suspend..."/></td>
       <td colspan="1" valign="top" align="left"><a href="../../../reference/views/breakpoints/ref-suspendpolicy_contextaction.htm"><strong>Suspend </strong></a></td>
       <td colspan="1" valign="top" align="left">Allows you to choose what to suspend when the selected breakpoint is hit.</td>
       <td colspan="1" valign="top" align="left">Context menu </td>
@@ -203,19 +208,19 @@
     </tr>
   </tbody>
 </table>
-<p> <img border="0" src="../../../images/ngrelc.png" alt="Related concepts" > </p>
-<p> <a href="../../../concepts/cbrkpnts.htm">Breakpoints</a><br>
-  <a href="../../../concepts/concept-java-views.htm">Java views</a> <br>
+<p> <img border="0" src="../../../images/ngrelc.png" alt="Related concepts"/> </p>
+<p> <a href="../../../concepts/cbrkpnts.htm">Breakpoints</a><br/>
+  <a href="../../../concepts/concept-java-views.htm">Java views</a> <br/>
   <a href="../../../concepts/concept-java-perspective.htm">Java perspectives</a></p>
-<p> <img border="0" src="../../../images/ngrelt.png" alt="Related tasks" > </p>
-<p> <a href="../../../tasks/task-add_line_breakpoints.htm">Adding breakpoints</a><br>
-  <a href="../../../tasks/task-apply_hit_count.htm">Applying hit counts</a><br>
-  <a href="../../../tasks/task-catching_exceptions.htm">Catching Java exceptions</a><br>
-  <a href="../../../tasks/task-remove_line_breakpoints.htm">Removing breakpoints</a><br>
-  <a href="../../../tasks/task-enable_disable_breakpoints.htm">Enabling and disabling breakpoints</a><br>
-  <a href="../../../tasks/task-manage_conditional_breakpoint.htm">Managing conditional breakpoints</a><br>
+<p> <img border="0" src="../../../images/ngrelt.png" alt="Related tasks"/> </p>
+<p> <a href="../../../tasks/task-add_line_breakpoints.htm">Adding breakpoints</a><br/>
+  <a href="../../../tasks/task-apply_hit_count.htm">Applying hit counts</a><br/>
+  <a href="../../../tasks/task-catching_exceptions.htm">Catching Java exceptions</a><br/>
+  <a href="../../../tasks/task-remove_line_breakpoints.htm">Removing breakpoints</a><br/>
+  <a href="../../../tasks/task-enable_disable_breakpoints.htm">Enabling and disabling breakpoints</a><br/>
+  <a href="../../../tasks/task-manage_conditional_breakpoint.htm">Managing conditional breakpoints</a><br/>
   <a href="../../../tasks/task-set_method_breakpoints.htm">Setting method breakpoints</a> </p>
-<p> <img border="0" src="../../../images/ngrelr.png" alt="Related reference" > </p>
+<p> <img border="0" src="../../../images/ngrelr.png" alt="Related reference"/> </p>
 <p> <a href="../ref-viewsandeditors.htm">Views and editors</a> </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-addwatch.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-addwatch.htm
index 7b88c08..1634d52 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-addwatch.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-addwatch.htm
@@ -9,7 +9,7 @@
 </head>
 <body>
 <h1> Add Watch Expression</h1>
-<p> Select the <strong>Add Watch Expression </strong>command [ <img src="../../../images/org.eclipse.debug.ui/obj16/expression_obj.png" alt="Add Watch Expression"> ] to open the create new expression dialog, which allows you to create a new watch expression and add it to the <strong><a href="../../../reference/views/expressions/ref-expressions_view.htm">Expressions View</a></strong>.</p>
+<p> Select the <strong>Add Watch Expression </strong>command [ <img src="../../../images/org.eclipse.debug.ui/elcl16/monitorexpression_tsk.png" alt="Add Watch Expression"> ] to open the create new expression dialog, which allows you to create a new watch expression and add it to the <strong><a href="../../../reference/views/expressions/ref-expressions_view.htm">Expressions View</a></strong>.</p>
 <p>The add watch expression dialog.</p>
 <p><img src="../../../reference/views/expressions/images/ref-addwatchexpression_dialog.PNG" alt="Add Watch Expression Dialog"></p>
 <p> <img border="0" src="../../../images/ngrelt.png" alt="Related tasks" > </p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-expressions_view.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-expressions_view.htm
index 01b413e..a523f33 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-expressions_view.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/expressions/ref-expressions_view.htm
@@ -27,7 +27,7 @@
   </caption>
   <thead>
     <tr>
-      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/obj16/expression_obj.png" alt="Add Watch Expression"></td>
+      <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/monitorexpression_tsk.png" alt="Add Watch Expression"></td>
       <td colspan="1" valign="top" align="left" ><a href="../../../reference/views/expressions/ref-addwatch.htm"><strong>Add Watch Expression</strong></a></td>
       <td colspan="1" valign="top" align="left" >Allows you to add a watch expression.</td>
       <td>Context menu </td>
@@ -55,7 +55,7 @@
     <tr>
       <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/collapseall.png" alt="Collapse All"></td>
       <td colspan="1" valign="top" align="left" ><a href="../../../reference/views/shared/ref-collapseall.htm"><strong>Collapse All</strong></a></td>
-      <td colspan="1" valign="top" align="left" >Collapses all the the currently expanded variables.</td>
+      <td colspan="1" valign="top" align="left" >Collapses all the currently expanded variables.</td>
       <td>View action </td>
     </tr>
     <tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-call-hierarchy.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-call-hierarchy.htm
index 58071d5..1187633 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-call-hierarchy.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-call-hierarchy.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Call Hierarchy View</title>
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -9,7 +9,7 @@
 <body>
 <h1>Call Hierarchy View</h1>
 <p>The Call Hierarchy view shows callers and callees for a selected Java member.</p>
-<table border="1" cellspacing="0" cellpadding="5" width="100%" summary="Call hierarchy">
+<table border="1" cellspacing="0" cellpadding="5" width="100%" summary="Call Hierarchy">
 	<caption>Call Hierarchy commands:</caption>
 	<thead>
 		<tr>
@@ -29,8 +29,15 @@
 			<td valign="top">
 			<p>Refresh the whole hierarchy</p>
 			</td>
-		</tr>	
-	
+		</tr>
+		<tr>
+			<td valign="top">
+			<p>Refresh (context menu)</p>
+			</td>
+			<td valign="top">
+			<p>Refresh the selected elements and their direct children</p>
+			</td>
+		</tr>
 		<tr>
 			<td valign="top">
 			<p>Cancel Current Search</p>
@@ -118,6 +125,14 @@
 			in anonymous types</strong> option.</p>
 			</td>
 		</tr>
+		<tr>
+			<td valign="top">
+			<p>Remove from View</p>
+			</td>
+			<td valign="top">
+			<p>Remove the selected nodes from the view</p>
+			</td>
+		</tr>
 	</tbody>
 </table>
 <p><img border="0" src="../../images/ngrelr.png" alt="Related reference"></p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-java-editor.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-java-editor.htm
index 2738a3a..b301058 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-java-editor.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-java-editor.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Java editor
@@ -125,7 +125,7 @@
                 The entire compilation unit is displayed in the editor, with the selected Java element highlighted in the marker bar with a range indicator.</p>
             <p>
                 <strong>On</strong>:
-                Only the selected Java element is displayed in the editor, which is linked to the selection in the Outline or Hierarchy view.</p>
+                Only the selected Java element is displayed in the editor, which is linked to the selection in the Outline or Type Hierarchy view.</p>
           </td>
         </tr>
         
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-type-hierarchy.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-type-hierarchy.htm
index 7610ac6..5432beb 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-type-hierarchy.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-type-hierarchy.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>
       Type Hierarchy View
@@ -66,7 +66,7 @@
           </td>
           <td valign="top">
             <p>
-              This command displays the type in its full context (i.e., superclasses and subclasses) in the Hierarchy view. To see for which type the hierarchy is shown, hover
+              This command displays the type in its full context (i.e., superclasses and subclasses) in the Type Hierarchy view. To see for which type the hierarchy is shown, hover
               over the view title (e.g., &quot;Types&quot;).
             </p>
           </td>
@@ -79,7 +79,7 @@
           </td>
           <td valign="top">
             <p>
-              This command displays the supertypes and the hierarchy of all implemented interfaces of the type in the Hierarchy view. The tree starts at the selected type and
+              This command displays the supertypes and the hierarchy of all implemented interfaces of the type in the Type Hierarchy view. The tree starts at the selected type and
               displays the result of traversing up the hierarchy.
             </p>
              <em>Note: The selected type is always at the top level, in the upper-left corner.</em>
@@ -93,7 +93,7 @@
           </td>
           <td valign="top">
             <p>
-              This command displays the subtypes of the selected class and/or all implementors of the interface in the Hierarchy view. The tree starts at the selected type and
+              This command displays the subtypes of the selected class and/or all implementors of the interface in the Type Hierarchy view. The tree starts at the selected type and
               displays the result of traversing down the hierarchy
             </p>
              <em>Note: The selected type is always at the top level, in the upper-left corner.</em>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-viewsandeditors.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-viewsandeditors.htm
index 32a1553..78611e9 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-viewsandeditors.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/ref-viewsandeditors.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -40,12 +40,12 @@
        <a href="display/ref-display_view.htm">Display view</a><br>
        <a href="expressions/ref-expressions_view.htm">Expressions view</a><br>
        <a href="../views/ref-java-editor.htm">Java editor</a><br>
-       <a href="ref-view-package-explorer.htm">Package explorer view</a><br>
+       <a href="ref-view-package-explorer.htm">Package Explorer view</a><br>
        <a href="variables/ref-variables_view.htm">Variables view</a><br>
        <a href="ref-view-outline.htm">Java outline</a><br>
        <a href="../views/ref-view-scrapbook.htm">Java scrapbook Page</a><br>
-       <a href="ref-type-hierarchy.htm">Type hierarchy view</a><br>
-       <a href="ref-call-hierarchy.htm">Call hierarchy view</a>
+       <a href="ref-type-hierarchy.htm">Type Hierarchy view</a><br>
+       <a href="ref-call-hierarchy.htm">Call Hierarchy view</a>
     </p>
     <p>&nbsp;</p>
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-changevarvalue.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-changevarvalue.htm
index 2d73003..b36ff64 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-changevarvalue.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-changevarvalue.htm
@@ -9,7 +9,7 @@
 </head>
 <body>
 <h1> Change Variable Value </h1>
-<p> Select the <strong>Change Value...</strong> command [ <img src="../../../images/org.eclipse.debug.ui/elcl16/changevariablevalue_co.png" alt="Change Variable Value"> ] to open a dialog in which you can change the value of the the selected variable or register.</p>
+<p> Select the <strong>Change Value...</strong> command [ <img src="../../../images/org.eclipse.debug.ui/elcl16/changevariablevalue_co.png" alt="Change Variable Value"> ] to open a dialog in which you can change the value of the selected variable or register.</p>
 <p>In the <a href="../../../reference/views/variables/ref-variables_view.htm"><strong>Variables View</strong></a>, if variables are displayed in the column form, variable values can also can be changed by directly editing the value in the column.</p>
 <p>When debugging a Java program, there are three different types of dialogs that this command can open.</p>
 <p>The <strong>Change Primitive Value Dialog</strong> is used to change the value of a primitive such as an int, long, or char.</p>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-forcereturn.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-forcereturn.htm
index 671daec..26b7d3f 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-forcereturn.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/shared/ref-forcereturn.htm
@@ -9,7 +9,7 @@
 </head>
 <body>
 <h1> Force Return </h1>
-<p> Select the <strong>Force Return </strong> command  to return from the current method with the speified value.</p>
+<p> Select the <strong>Force Return </strong> command  to return from the current method with the specified value.</p>
 <p>You can force an early return from a method (only 
   available when debugging on a Java SE 6 virtual machine). This returns 
   a value from the current stack frame without executing any more instructions 
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/variables/ref-variables_view.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/variables/ref-variables_view.htm
index 4974895..bcba899 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/variables/ref-variables_view.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/reference/views/variables/ref-variables_view.htm
@@ -39,7 +39,7 @@
     <tr>
       <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.jdt.debug.ui/elcl16/all_references.png" alt="All References"></td>
       <td colspan="1" valign="top" align="left" ><a href="../../../reference/views/shared/ref-allreferences.htm"><strong>All References</strong></a></td>
-      <td colspan="1" valign="top" align="left" >Opens a popup dialog displayinga list of all Java objects that have references to the selected variable. Your Java virtual machine must support reference retrieval. </td>
+      <td colspan="1" valign="top" align="left" >Opens a popup dialog displaying a list of all Java objects that have references to the selected variable. Your Java virtual machine must support reference retrieval. </td>
       <td>Context menu </td>
     </tr>
   </thead>
@@ -53,7 +53,7 @@
     <tr>
       <td colspan="1" valign="top" align="left"><img src="../../../images/org.eclipse.debug.ui/elcl16/collapseall.png" alt="Collapse All"></td>
       <td colspan="1" valign="top" align="left" ><a href="../../../reference/views/shared/ref-collapseall.htm"><strong>Collapse All</strong></a></td>
-      <td colspan="1" valign="top" align="left" >Collapses all the the currently expanded variables.</td>
+      <td colspan="1" valign="top" align="left" >Collapses all the currently expanded variables.</td>
       <td>View action </td>
     </tr>
     <tr>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-202.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-202.htm
index 7e6153c..2d5e238 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-202.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-202.htm
@@ -20,7 +20,7 @@
       <li>from the menu bar, select <span class="control">Source &gt; Find Broken Externalized Strings</span></li>
     </ul>
 
-    <p>After the search is finished, the Search Result view displays a list of unused keys in the propertie files and all incorrect references to non-existing keys.</p>
+    <p>After the search is finished, the Search Result view displays a list of unused keys in the properties files and all incorrect references to non-existing keys.</p>
 
     <p><img src="../images/ngrelc.png" alt="Related concepts" border="0" ><br>
      <a href="../concepts/concept-string-externalization.htm">String externalization</a><br>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-33.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-33.htm
index d74825a..057c275 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-33.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-33.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
   <head>
-	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -80,7 +80,7 @@
 	</p>
 	<p>	  
        <a href="../reference/ref-export-jar.htm">JAR file exporter</a><br>
-       <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+       <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-62.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-62.htm
index 31de9ca..24eeea2 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-62.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-62.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -50,7 +50,7 @@
       <img border="0"  src="../images/ngrelr.png" alt="Related reference">
     </p>
     <p>
-      <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+      <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
      </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-63a.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-63a.htm
index 72c7679..b0d867d 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-63a.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-63a.htm
@@ -40,7 +40,7 @@
         The <strong>History</strong> view opens and shows all editions of the selected element available in the local history.
       </li>
       <li>
-        Select an edition in the hitory view to see the differences between the selected edition and the edition in the workbench in a comparison editor.
+        Select an edition in the history view to see the differences between the selected edition and the edition in the workbench in a comparison editor.
       </li>
       <li>
         If you are done with the comparison, click close the comparison editor.
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-74.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-74.htm
index 7f52089..95d5b70 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-74.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-74.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -60,7 +60,7 @@
     </p>
     <p>
       <a href="../reference/preferences/ref-preferences-java.htm">Java preference page</a><br>
-       <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+       <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-75.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-75.htm
index bd37823..80bf6ae 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-75.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-75.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -57,7 +57,7 @@
     </p>
     <p>
       <a href="../reference/ref-menu-navigate.htm">Navigate actions</a><br>
-       <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+       <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-76.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-76.htm
index 93944d9..7fbfc80 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-76.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-76.htm
@@ -22,7 +22,7 @@
 		</li>
 		<li>
 			In the <strong>Enter type name prefix or pattern</strong> field, begin typing an expression to narrow the list of available types, using wildcards as needed. As you
-			type, the list is filtered to display only types that match the current expression. CamelCase notation is also supported; that means you aonly need to enter the capital letters
+			type, the list is filtered to display only types that match the current expression. CamelCase notation is also supported; that means you only need to enter the capital letters
 			of the type name.
 		</li>
 		<li>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-77.htm b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-77.htm
index 0183bf4..dee4a5b 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-77.htm
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tasks/tasks-77.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en">
   <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta http-equiv="Content-Style-Type" content="text/css">
     <title>
@@ -39,7 +39,7 @@
     </p>
     <p>
       <a href="../reference/ref-menu-navigate.htm">Navigate actions</a><br>
-       <a href="../reference/views/ref-view-package-explorer.htm">Package explorer</a>
+       <a href="../reference/views/ref-view-package-explorer.htm">Package Explorer</a>
     </p>
     
   </body>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/build-path-error-decorator.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/build-path-error-decorator.png
new file mode 100644
index 0000000..e10346c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/build-path-error-decorator.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/hierarchy-lockview.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/hierarchy-lockview.png
index 7b44cce..b5574a2 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/hierarchy-lockview.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/hierarchy-lockview.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/nls-problem-search.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/nls-problem-search.png
index 81ed8a3..7d31980 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/nls-problem-search.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/nls-problem-search.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/all-instances.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/all-instances.png
new file mode 100644
index 0000000..aab8a89
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/all-instances.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/breakpoint_condition.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/breakpoint_condition.png
index a54b399..e882211 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/breakpoint_condition.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/breakpoint_condition.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/class-load-breakpoint.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/class-load-breakpoint.png
new file mode 100644
index 0000000..8344133
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/class-load-breakpoint.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/debug-by-writing-to-console.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/debug-by-writing-to-console.png
new file mode 100644
index 0000000..2cde889
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/debug-by-writing-to-console.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/method-breakpoint.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/method-breakpoint.png
new file mode 100644
index 0000000..a08e631
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/method-breakpoint.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/select-columns.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/select-columns.png
new file mode 100644
index 0000000..a26f37c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/select-columns.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/show-references.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/show-references.png
new file mode 100644
index 0000000..8c99593
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/show-references.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/variable-view-columns.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/variable-view-columns.png
new file mode 100644
index 0000000..9539a37
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/variable-view-columns.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/watchpoint_properties.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/watchpoint_properties.png
index 5b2e865..ec95ab9 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/watchpoint_properties.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/org.eclipse.jdt.debug.ui/watchpoint_properties.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-off.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-off.png
new file mode 100644
index 0000000..baa8663
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-off.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-on.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-on.png
new file mode 100644
index 0000000..0344a96
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/package-abbreviations-on.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/sort-by-def.png b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/sort-by-def.png
index 574424b..948e3b5 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/sort-by-def.png and b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/images/sort-by-def.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/jdt_tips.html b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/jdt_tips.html
index 2ab4fd4..297f837 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/tips/jdt_tips.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/tips/jdt_tips.html
@@ -1,14 +1,14 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <meta http-equiv="Content-Language" content="en-us">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
 <style type="text/css">
-ul {padding-left: 1.2em;}
+ul {padding-left: 1.2em; margin-left: 1.2em;}
 </style>
 <title>Tips and Tricks (JDT)</title>
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
@@ -20,15 +20,15 @@ ul {padding-left: 1.2em;}
 <p>
 The following tips and tricks give some helpful ideas for increasing your productivity.
 See also <a href="../../org.eclipse.platform.doc.user/tips/platform_tips.html">Platform Tips and Tricks</a>
-for general Eclipse tips and <a href="../../org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html">What's New in 3.5 (JDT)</a> for
+for general Eclipse tips and <a href="../../org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html">What's New in 3.6 (JDT)</a> for
 features in this release.
 </p>
 <br>
 <p>
 <a href="#editing_section">Editing</a> &nbsp;&nbsp;|&nbsp;&nbsp;
 <a href="#refactor_section">Refactoring</a> &nbsp;&nbsp;|&nbsp;&nbsp;
-<a href="#navigation_section">Navigation</a> &nbsp;&nbsp;|&nbsp;&nbsp;
 <a href="#searching_section">Searching</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+<a href="#navigation_section">Navigation</a> &nbsp;&nbsp;|&nbsp;&nbsp;
 <a href="#views_section">Views</a> &nbsp;&nbsp;|&nbsp;&nbsp;
 <a href="#misc_section">Miscellaneous</a> &nbsp;&nbsp;|&nbsp;&nbsp;
 <a href="#debugging_section">Debugging</a>
@@ -129,7 +129,7 @@ features in this release.
 		    <td valign="top" align="left" width="80%">Content assist can propose members 
 		      available on types used in instanceof conditions.
 		      <p>
-		      <img title="Content Assist After instancoef Condition" alt="Screenshot showing Content Assist after instanceof condition" src="images/instanceof-compl-proposals.png">
+		      <img title="Content Assist After instanceof Condition" alt="Screenshot showing Content Assist after instanceof condition" src="images/instanceof-compl-proposals.png">
 		      </p>
 		      <p>
 		      Eclipse will add the required cast for you when you select such a proposal.
@@ -736,7 +736,7 @@ features in this release.
 </p>
 			<p>
 			When you enable <b>Automatically insert Semicolons at correct
-			position</b>, typing a semicolon  automatically positions the cursor at the end of the statement before inserting the semicolon. This safes you some additional cursor navigation.<br>
+			position</b>, typing a semicolon  automatically positions the cursor at the end of the statement before inserting the semicolon. This saves you some additional cursor navigation.<br>
 			You can
 			undo this automatic positioning by pressing backspace right afterwards.
 			</p>
@@ -1309,12 +1309,12 @@ much easier to manage workspaces containing lots of projects.
 			Hierarchy' feature:
 			<ol>
 				<li>Select the method to look at and press <b>F4 (Navigate &gt; Open
-				Type Hierarchy)</b>. This opens the type Hierarchy view on the
+				Type Hierarchy)</b>. This opens the Type Hierarchy view on the
 				method's declaring type.</li>
-				<li>With the method selected in the Hierarchy view, press the 'Lock
+				<li>With the method selected in the Type Hierarchy view, press the 'Lock
 				View and Show Members in Hierarchy' tool bar button.</li>
 			</ol>
-				The Hierarchy view now shows only types that implement or define
+				The Type Hierarchy view now shows only types that implement or define
 				the 'locked' method. You can for example see that <code>isEmpty()</code> is
 				defined in <code>List</code> and implemented in <code>ArrayList</code> and <code>Vector</code> but
 				not in <code>AbstractList</code>.
@@ -1341,12 +1341,12 @@ much easier to manage workspaces containing lots of projects.
 				<li>Focus the type hierarchy on a new type by pressing <b>F4
 				(Navigate &gt; Open Type Hierarchy)</b> on an element or a selected
 				name.</li>
-				<li>You can open the Hierarchy view not only on types but also on
+				<li>You can open the Type Hierarchy view not only on types but also on
 				packages, source folders, JAR archives and Java projects.</li>
-				<li>You can Drag &amp; Drop an element onto the Hierarchy view to
+				<li>You can Drag &amp; Drop an element onto the Type Hierarchy view to
 				focus on that element.</li>
 				<li>You can change the orientation (from the default vertical to
-				horizontal) of the Hierarchy view from the view's toolbar menu.</li>
+				horizontal) of the Type Hierarchy view from the view's toolbar menu.</li>
 			</ul>
 			</td>
 		</tr>
@@ -1444,6 +1444,32 @@ much easier to manage workspaces containing lots of projects.
 			</td>
 		</tr>
 		<tr>
+			<td width="20%" valign="top" align="left"><b>Package name abbreviations</b></td>
+			<td valign="top" align="left" width="80%">Package names in Java views can be abbreviated with custom rules. For example,
+        the following rules produce the rendering shown below:
+        <pre>org.eclipse.ui={UI}
+org.eclipse.ui.texteditor={T}
+org.eclipse.ui.internal.texteditor=[iT]</pre>
+			<table cellpadding="0" cellspacing="0" summary="Screenshots">
+        <tr>
+	        <td>Without abbreviations:</td>
+	        <td>With abbreviations:</td>
+        </tr>
+        <tr>
+	        <td style="padding-top:2px; padding-right:4px;"><img src="images/package-abbreviations-off.png" alt="Package Explorer with abbreviations disabled"></td>
+	        <td style="padding-top:2px;"><img src="images/package-abbreviations-on.png" alt="Package Explorer with abbreviations enabled"></td>
+        </tr>
+        </table>
+       
+        <p>The abbreviation rules can be configured on the
+			<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.AppearancePreferencePage)")'>
+			<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Appearance preference page">
+			<b>Java &gt; Appearance</b></a> preference page.
+		</p>
+
+			</td>
+		</tr>
+		<tr>
 			<td width="20%" valign="top" align="left"><b>Manipulating the Java
 			build path directly in the Package Explorer</b>		
 			</td>
@@ -1771,6 +1797,21 @@ public class HelloWorld {
 			</ol>
 			</td>
 		</tr>
+		
+		<tr>
+			<td width="20%" valign="top" align="left"><b>Build path error decorator</b></td>
+			<td width="80%" valign="top" align="left">
+			The <b>Package Explorer</b> and the <b>Project Explorer</b> show this error decorator 
+			<img src="../images/org.eclipse.jdt.ui/ovr16/error_co_buildpath.png"  alt="Build path error decorator"> 
+			on Java projects and working sets if they contain build path errors:
+			 <p><img src="images/build-path-error-decorator.png" alt="Build path error decorator"></p>
+			
+			In case of build path errors in the <b>Problems</b> view, first look in the <b>Package
+  Explorer</b> for this icon since it better indicates where the problem is.
+			
+			</td>
+		</tr>
+		
 	</tbody>
 </table>
 
@@ -1868,6 +1909,49 @@ public class HelloWorld {
 		</tr>
 		<tr>
 			<td width="20%" valign="top" align="left">
+      <p><b>Variable columns</b></p>
+    </td>
+			<td width="80%" valign="top" align="left">
+			
+      <p>Columns in the <b>Variables view</b> can be configured by selecting
+        <b>Layout &gt; Select Columns...</b> in the view menu. A dialog allows
+        you to select the columns to display. For example, a column
+        can be added to display instance counts of classes (when debugging with
+        JavaSE-1.6). Columns can be toggled on/off using the <b>Layout &gt; Show Columns</b>
+        action.</p>
+			<p><img src="images/org.eclipse.jdt.debug.ui/select-columns.png"  alt="Dialog used to select configure columns in the variables view"></p>
+			<p><img src="images/org.eclipse.jdt.debug.ui/variable-view-columns.png"  alt="Column display in the variables view"></p>
+			</td>
+			
+		</tr>
+	  <tr>
+	  <td width="20%" valign="top" align="left">		
+      <p><b>Show references</b></p>
+    </td>
+			<td width="80%" valign="top" align="left">
+			
+      <p>When debugging with JavaSE-1.6, references to objects can be displayed in
+      the <b>Variables view</b> by selecting <b>Java &gt; Show References</b> in the
+      view menu. A &quot;<b>referenced from</b>&quot; entry will appear under each object
+      that can be expanded to show all references to that object. </p>
+			<p><img src="images/org.eclipse.jdt.debug.ui/show-references.png"  alt="Display references in the variables view"></p>
+			</td>
+		</tr>
+	  <tr>
+	  <td width="20%" valign="top" align="left">		
+      <p><b>All instances</b></p>
+    </td>
+			<td width="80%" valign="top" align="left">
+			
+      <p>When debugging with JavaSE-1.6, all instances of a class can be inspected by selecting a class
+      in an editor outline, variables view, compilation unit or class file editor and invoking
+      <b>All Instances...</b> from the context menu. A pop-up dialog will display all instances of the
+      seleted class.</p>
+			<p><img src="images/org.eclipse.jdt.debug.ui/all-instances.png"  alt="Display references in the variables view"></p>
+			</td>
+		</tr>		
+		<tr>
+			<td width="20%" valign="top" align="left">
       <p><b>Default VM arguments</b></p>
     </td>
 			<td width="80%" valign="top" align="left">
@@ -1893,15 +1977,28 @@ public class HelloWorld {
 		</tr>
 		<tr>
 			<td valign="top" align="left"><b>Conditional breakpoints</b></td>
-			<td valign="top" align="left">You can use conditional breakpoints in
-			<b> Breakpoint Properties... </b>to control when a breakpoint
+			<td valign="top" align="left">You can use expressions to define conditional
+			breakpoints using the <b> Breakpoint Properties... </b> dialog or detail
+			pane in the breakpoints view. A condition controls when a breakpoint
 			actually halts execution. You can specify whether you want the
 			breakpoint to suspend execution only when the condition is true, or
-			when the condition value changes.
-			<p><img src="images/org.eclipse.jdt.debug.ui/breakpoint_condition.png"  alt="Breakpoint condition editor in breakpoint properties dialog"></p>
+			when the condition value changes. The breakpoint condition editor
+			supports content assist.
+			<p><img src="images/org.eclipse.jdt.debug.ui/breakpoint_condition.png"  alt="Breakpoint condition editor in breakpoint properties dialog or breakpoint detail pane"></p>
 			</td>
 		</tr>
 		<tr>
+			<td valign="top" align="left"><b>Debugging by writing to console</b></td>
+			<td valign="top" align="left">
+			
+      You can avoid inserting <code>System.out.println()</code> statements in your code for debugging by using conditional breakpoints to print to the Console view. 
+      To do so, set a conditional breakpoint with <b>Suspend when 'true'</b> option and a condition which is always false, e.g.
+      <p><img src="images/org.eclipse.jdt.debug.ui/debug-by-writing-to-console.png" alt='System.out.println("Debug statement!"); return false;'>
+</p>
+			</td>
+		</tr>
+		
+		<tr>
 			<td valign="top" align="left"><b>Disabling breakpoints</b></td>
 			<td valign="top" align="left">
 			If you find yourself frequently adding and removing a breakpoint
@@ -1975,7 +2072,7 @@ public class HelloWorld {
         debugging </b></td>
 			<td valign="top" align="left">
 			The Java debugger allows you to step into a single method within a
-			series of chained or nested method calls. Simply highlight the method
+			series of chained or nested method calls. Simply select the method
 			you wish to step into and select <b>Step into Selection</b> from the
 			Java editor context menu.
 			<p>This feature works in places other than the currently executing
@@ -1985,6 +2082,10 @@ public class HelloWorld {
 			
         <p><img src="images/org.eclipse.jdt.debug.ui/step_into_selection.png"
 				alt="Stepping into selection"></p>
+			<p>When the caret is not in a method name, the feature steps into the next method on the selected line.
+			When you e.g. have line with nested method calls and the caret is a the beginning of the line, the feature
+			steps into the outermost method (unlike Step Into).</p>
+				
         <p>You can also step into a method by using hyperlink navigation. Simply 
           place the cursor over the method you wish to step into and use <strong>Ctrl+Alt+Click</strong> 
           to step into the method (rather than <strong>Ctrl+Click</strong> which 
@@ -2025,6 +2126,37 @@ public class HelloWorld {
 			</td>
 		</tr>
 		<tr>
+			<td valign="top" align="left"><b>Class load breakpoints</b></td>
+			<td valign="top" align="left">
+			
+      A class load breakpoint suspends execution when a specified 
+          class is loaded in the virtual machine. To set a class load breakpoint, select a class in 
+          the Outline view and choose <b>Toggle Class Load Breakpoint</b> from its context 
+          menu. You can also use the <b>Run > Add Class Load Breakpoint...</b> menu action to create
+          a class load breakpoint.
+			<p><img src="images/org.eclipse.jdt.debug.ui/class-load-breakpoint.png"  alt="Class load breakpoints suspend execution when a specified class is loaded">
+</p>
+			</td>
+		</tr>
+		<tr>
+			<td valign="top" align="left"><b>Method breakpoints</b></td>
+			<td valign="top" align="left">
+			
+      A method breakpoint suspends execution when a specific method is entered or exited. 
+          To set a method breakpoint, select a method in 
+          the Outline view and choose <b>Toggle Method Breakpoint</b> from its context 
+          menu. Alternatively, double click on a method declaration line in the editor ruler
+          or use the <b>Run > Toggle Method Breakpoint</b> menu action to create
+          a method breakpoint in the currently selected method.
+          <p>By default a method breakpoint
+          only suspends execution when a method is entered. You can use the breakpoint detail
+          pane or the breakpoint properties dialog to configure the breakpoint to suspend
+          on exit. Method breakpoints also support conditions.</p> 
+			<p><img src="images/org.eclipse.jdt.debug.ui/method-breakpoint.png"  alt="Method breakpoints suspend execution when a specific method is entered or exited">
+</p>
+			</td>
+		</tr>				
+		<tr>
 
 			<td valign="top" align="left"><b>Threads and monitors</b></td>
 			<td valign="top" align="left">
@@ -2203,7 +2335,7 @@ public class HelloWorld {
         <p><img src="images/org.eclipse.jdt.debug.ui/activate-debug-view.png" alt="Run/Debug preference page" > </p>
         <p>You can disable the perspective switching prompt on the <strong>Run/Debug &gt; Perspectives</strong> preference page. With these settings the Debug view will automatically open in the Java perspective when a breakpoint is hit. </p>
         <p><img src="images/org.eclipse.jdt.debug.ui/perspective-prompt.png" alt="Perspectives preference page" > </p>
-        <p>By placing the Debug view at the top of the perspective and resizing it's height to the size of one element, the view will switch to a bread crumb presentation. This minimizes the amount of screen space the view consumes.</p>
+        <p>By placing the Debug view at the top of the perspective and resizing its height to the size of one element, the view will switch to a bread crumb presentation. This minimizes the amount of screen space the view consumes.</p>
         <p><img src="images/org.eclipse.jdt.debug.ui/dbg-bread-crumb.png" alt="Debug view in bread crumb mode" ></p></td>
 		</tr>
 	</tbody>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/topics_Reference.xml b/eclipse/plugins/org.eclipse.jdt.doc.user/topics_Reference.xml
index e805761..c460fa0 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/topics_Reference.xml
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/topics_Reference.xml
@@ -411,6 +411,7 @@
 -->
 	<topic label="Java Editor" href="reference/views/ref-java-editor.htm">
 		<topic label="Java Content Assist" href="reference/ref-java-editor-code-assist.htm" />
+		<topic label="Java Formatter" href="reference/ref-java-editor-formatter.htm" />
 		<topic label="Quick fix" href="reference/ref-java-editor-quickfix.htm" />
 		<topic label="Quick assist" href="reference/ref-java-editor-quickassist.htm" />
 	</topic>
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/annotations-in-javadoc.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/annotations-in-javadoc.png
new file mode 100644
index 0000000..1f492c3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/annotations-in-javadoc.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/background-computation-of-type-hierarchy.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/background-computation-of-type-hierarchy.png
new file mode 100644
index 0000000..1ea9489
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/background-computation-of-type-hierarchy.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/bp-details.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/bp-details.png
new file mode 100644
index 0000000..b918791
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/bp-details.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/browser-preferences.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/browser-preferences.png
new file mode 100644
index 0000000..22e787f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/browser-preferences.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-dot-dot-path.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-dot-dot-path.png
deleted file mode 100644
index b85c94a..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-dot-dot-path.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-duplicate-entries.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-duplicate-entries.png
deleted file mode 100644
index 89ea67b..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-duplicate-entries.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-error-decorator.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-error-decorator.png
new file mode 100644
index 0000000..e10346c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-error-decorator.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-invalid-dups.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-invalid-dups.png
deleted file mode 100644
index 61a686f..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-invalid-dups.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-problems.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-problems.png
new file mode 100644
index 0000000..5fb1a9a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/build-path-problems.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/class-path-header.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/class-path-header.png
deleted file mode 100644
index 8cfa0c8..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/class-path-header.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/comparing-identical-values-example.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/comparing-identical-values-example.png
deleted file mode 100644
index 92ba73f..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/comparing-identical-values-example.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-deadcode-diagnosis.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-deadcode-diagnosis.png
deleted file mode 100644
index e473d0b..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-deadcode-diagnosis.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-hashcode-diagnosis.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-hashcode-diagnosis.png
deleted file mode 100644
index 0099e68..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compiler-hashcode-diagnosis.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compliance-follows-ee.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compliance-follows-ee.png
deleted file mode 100644
index ba1d280..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/compliance-follows-ee.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/constructor-completion.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/constructor-completion.png
deleted file mode 100644
index a88a365..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/constructor-completion.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/delete-working-set.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/delete-working-set.png
deleted file mode 100644
index 1ed0b03..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/delete-working-set.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/dynamic-structure-compare.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/dynamic-structure-compare.png
deleted file mode 100644
index 0526010..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/dynamic-structure-compare.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/edit-test-method.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/edit-test-method.png
new file mode 100644
index 0000000..0e91118
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/edit-test-method.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/expand-with-constructors.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/expand-with-constructors.png
deleted file mode 100644
index 992c46a..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/expand-with-constructors.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/export-all-profiles.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/export-all-profiles.png
new file mode 100644
index 0000000..005802d
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/export-all-profiles.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-continue.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-continue.png
new file mode 100644
index 0000000..83927c6
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-continue.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-multiple-return-values.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-multiple-return-values.png
new file mode 100644
index 0000000..060ed95
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/extract-method-multiple-return-values.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/find-externalized-strings-constants.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/find-externalized-strings-constants.png
new file mode 100644
index 0000000..e4e6423
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/find-externalized-strings-constants.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-formatted.png
new file mode 100644
index 0000000..a663b54
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-preference.png
new file mode 100644
index 0000000..405f9a0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-annotation-arguments-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-formatted.png
new file mode 100644
index 0000000..ece3dfc
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-preference.png
new file mode 100644
index 0000000..c716a32
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-align-method-declaration-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-formatted.png
new file mode 100644
index 0000000..15a140b
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-preference.png
new file mode 100644
index 0000000..9d673c9
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-condense-multi-lines-comments-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-formatted.png
new file mode 100644
index 0000000..0ea0d37
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-preference.png
new file mode 100644
index 0000000..39907b1
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-disabling-enabling-tags-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-formatted.png
new file mode 100644
index 0000000..d6185a1
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-preference.png
new file mode 100644
index 0000000..be9f89f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-new-line-after-label-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-formatted.png
new file mode 100644
index 0000000..e6a1f29
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-preference.png
new file mode 100644
index 0000000..443b403
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-prefer-wrapping-outer-expressions-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-formatted.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-formatted.png
new file mode 100644
index 0000000..eb20901
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-formatted.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-preference.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-preference.png
new file mode 100644
index 0000000..096bcca
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/formatter-skip-first-column-comments-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/generate-tostring-dialog.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/generate-tostring-dialog.png
deleted file mode 100644
index b5ed978..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/generate-tostring-dialog.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/hashcode-and-equals-wizard.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/hashcode-and-equals-wizard.png
deleted file mode 100644
index 6339dc6..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/hashcode-and-equals-wizard.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/instance-counts.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/instance-counts.png
new file mode 100644
index 0000000..e4dc07b
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/instance-counts.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/jar-export.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/jar-export.png
deleted file mode 100644
index 7c33331..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/jar-export.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-assist.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-assist.png
deleted file mode 100644
index 9ad7b7b..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-assist.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hover.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hover.png
deleted file mode 100644
index d54890c..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hover.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hyperlinking.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hyperlinking.png
deleted file mode 100644
index f1127b1..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-hyperlinking.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-outline.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-outline.png
deleted file mode 100644
index 6220cfe..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/java-compare-outline.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-header-links.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-header-links.png
deleted file mode 100644
index ecf11e0..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-header-links.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-hover.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-hover.png
deleted file mode 100644
index baf4782..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/javadoc-hover.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-import-url.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-import-url.png
new file mode 100644
index 0000000..947ea42
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-import-url.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-view-import.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-view-import.png
deleted file mode 100644
index e46ed64..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/junit-view-import.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/missing-synchronized.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/missing-synchronized.png
deleted file mode 100644
index b411ab4..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/missing-synchronized.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/move-type-to-new-file-refactoring.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/move-type-to-new-file-refactoring.png
new file mode 100644
index 0000000..7d071b6
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/move-type-to-new-file-refactoring.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/multifix-problem-hover.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/multifix-problem-hover.png
new file mode 100644
index 0000000..82eba07
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/multifix-problem-hover.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation-command.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation-command.png
new file mode 100644
index 0000000..1c7acc3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation-command.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation.png
deleted file mode 100644
index d9c8031..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-implementation.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-junit-view.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-junit-view.png
deleted file mode 100644
index 79c92d7..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-junit-view.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-properties-file.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-properties-file.png
deleted file mode 100644
index 59e3db1..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-in-properties-file.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-type.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-type.png
deleted file mode 100644
index 81dac90..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/open-type.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/override.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/override.png
new file mode 100644
index 0000000..172bea2
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/override.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-off.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-off.png
new file mode 100644
index 0000000..4e3835b
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-off.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-on.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-on.png
new file mode 100644
index 0000000..606172c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/package-abbreviations-on.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-appearance.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-appearance.png
new file mode 100644
index 0000000..ac26c94
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-appearance.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-code.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-code.png
new file mode 100644
index 0000000..7d538ea
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-code.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-compiler.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-compiler.png
new file mode 100644
index 0000000..0221293
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/preference-transfer-compiler.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/refresh-element-action.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/refresh-element-action.png
new file mode 100644
index 0000000..f4663e2
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/refresh-element-action.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/remove-from-view-action.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/remove-from-view-action.png
new file mode 100644
index 0000000..7cb23cc
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/remove-from-view-action.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/rename-in-workspace.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/rename-in-workspace.png
deleted file mode 100644
index 3786c86..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/rename-in-workspace.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/runnable-jar-in-jar-export.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/runnable-jar-in-jar-export.png
deleted file mode 100644
index 636205b..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/runnable-jar-in-jar-export.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/sort-working-sets.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/sort-working-sets.png
deleted file mode 100644
index 4ec0ca5..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/sort-working-sets.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/source-attachments-in-referenced-JARs.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/source-attachments-in-referenced-JARs.png
new file mode 100644
index 0000000..578a051
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/source-attachments-in-referenced-JARs.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/suppress-optional-errors.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/suppress-optional-errors.png
new file mode 100644
index 0000000..f180a21
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/suppress-optional-errors.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/switch-case-fall-through.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/switch-case-fall-through.png
deleted file mode 100644
index 08646ea..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/switch-case-fall-through.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/unused-object-allocation.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/unused-object-allocation.png
new file mode 100644
index 0000000..bb389e9
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/unused-object-allocation.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/value-in-javadoc.png b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/value-in-javadoc.png
new file mode 100644
index 0000000..efd2e7e
Binary files /dev/null and b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/images/value-in-javadoc.png differ
diff --git a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html
index 8f19f46..c80c9de 100644
--- a/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html
+++ b/eclipse/plugins/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html
@@ -1,11 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html lang="en">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1"
-	type="text/css">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css"/>
 <style type="text/css">
 td {border-top: solid thin black;}
 td table tbody tr td {border-top: none;} /* no border for nested tables */
@@ -13,33 +12,34 @@ img[alt] {background-color:#ffdddd;}
 tr {vertical-align: top;}
 ul {padding-left: 1.2em;}
 </style>
-<title>What's New in 3.5 (JDT)</title>
+<title>What's New in 3.6 (JDT)</title>
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
 </head>
 
 <body>
-<h2>What's New in 3.5 (JDT)</h2>
+<h2>What's New in 3.6 (JDT)</h2>
 <p>Here are descriptions of some of the more interesting or significant changes made to the Java development tools
-for the 3.5 release of Eclipse. They are grouped into:</p>
+for the 3.6 release of Eclipse. They are grouped into:</p>
 <ul>
 	<li><a href="#JavaEditor">Java Editor</a></li>
-	<li><a href="#JavaCompareEditor">Java Compare Editor</a></li>
-	<li><a href="#JavaRefactoring">Java Refactoring and Source Actions</a></li>
+	<li><a href="#JavaFormatter">Java Formatter</a></li>
+	<li><a href="#JavaRefactoring">Java Refactorings</a></li>
 	<li><a href="#JavaCompiler">Java Compiler</a></li>
 	<li><a href="#JavaViews">Java Views and Dialogs</a></li>
+	<li><a href="#JUnit">JUnit</a></li>
 </ul>
 <p>
-See also the <a href="../../org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">Eclipse Platform What's New in 3.5</a>
+See also the <a href="../../org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">Eclipse Platform What's New in 3.6</a>
 document for changes in the Platform.
 </p>
-<br>
+<br/>
 <!-- *************************************************** -->
 
 
 <table cellpadding="10" cellspacing="0" width="600" summary="New and noteworthy items">
   <colgroup>
-  <col width="30%">
-  <col width="70%">
+  <col width="30%"/>
+  <col width="70%"/>
   </colgroup>
 
   <tbody>  
@@ -49,470 +49,560 @@ document for changes in the Platform.
           Java Editor </div></td>
     </tr>
 
-  <tr id="constructor-completion"> 
+  <tr id="multifix-problem-hover">
     <td width="30%" valign="top" align="left">
-		<b>Constructor completion</b>
-	</td>
+      <b>Fix multiple problems via problem hover</b>
+    </td>
     <td width="70%" valign="top">
-      Content Assist can now propose the available constructors of a class when
-         the completion happens in an allocation expression:
-      <p><img src="images/constructor-completion.png" alt="Constructor completion"></p>
-      <p>If the class is not already imported (as shown in the example above),
-      then the corresponding import will also be added.</p>
+      The problem hover now shows quick fix links that fix multiple instances of a problem in a file:
+      <p><img src="images/multifix-problem-hover.png" alt="Support for multi-fix quick fixes in problem hover"/></p>       
+      The new links behave the same as pressing <b>Ctrl+Enter</b> in the Quick Fix proposal list (<b>Ctrl+1</b>). 
     </td>
   </tr>
 
-  <tr id="open-implementation">
+  <tr id="annotations-in-javadoc">
     <td width="30%" valign="top" align="left">
-        <b>Open Implementation hyperlink</b>
+        <b>Javadoc hovers include annotations</b>
     </td>
     <td width="70%" valign="top">
-        An <b>Open Implementation</b> hyperlink has been added for overridable methods, which directly opens the implementation 
-        in case there's only one, or shows all the concrete implementations for that method in the hierarchy of its declaring type, using 
-        the quick type hierarchy. By default, the hyperlink appears when you hold down the <b>Ctrl</b> key
-        while hovering over an overridable method.
-       <p><img src="images/open-implementation.png" alt="Open Implementation hyperlink for methods" ></p>
-       <p>You can configure the modifier for this hyperlink on the
-       <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.editors.preferencePages.HyperlinkDetectorsPreferencePage)")'>
-       <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the hyperlinking preference page">
-       <b>General &gt; Editors &gt; Text Editors &gt; Hyperlinking</b></a> preference page.</p>
+        Javadoc hovers now include annotations:
+        <p><img src="images/annotations-in-javadoc.png" alt="Javadoc hover"/></p>
     </td>
   </tr>
-  
-  <tr id="select-comment">
+
+  <tr id="value-in-javadoc">
     <td width="30%" valign="top" align="left">
-        <b>Select comment with double click</b>
+        <b>Javadoc hovers render {@value}</b>
     </td>
     <td width="70%" valign="top">
-		Double clicking on the beginning or end marker of a comment now selects the whole comment.
+        Javadoc hovers now render {@value} inlined:
+        <p><img src="images/value-in-javadoc.png" alt="Javadoc hover"/></p>
     </td>
   </tr>
   
-    <tr id="rename-in-workspace">
+   <tr id="open-implementation-command">
     <td width="30%" valign="top" align="left">
-        <b>Quick Fix to start Rename refactoring</b>
+        <b>Command to open an implementation</b>
     </td>
     <td width="70%" valign="top">
-    	The <b>Rename</b> refactoring can now also be started via Quick Fix (<b>Ctrl+1</b>):
-       <p> <img src="images/rename-in-workspace.png" alt="Quick Fix 'Rename in workspace' in Java editor"></p>
+    	The <b>Open Implementation</b> command is available from the <b>Navigate</b> menu. A key binding can be
+    	assigned on the
+		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Keys)")'>
+		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens keys preference page"/>
+		<b>General &gt; Keys</b></a> preference page.
+        <p><img src="images/open-implementation-command.png" alt="Open Implementation action in Navigate menu" /></p>
+    	<p>
+    	This action is enabled on text selections in the Java editor for overridable methods and directly opens the implementation in case there's only one, 
+    	or shows all the concrete implementations for that method in the hierarchy of its declaring type, using the Quick Type Hierarchy.</p> 
     </td>
+  </tr> 
+
+  <tr id="getter-setter-content-assist">
+    <td width="30%" valign="top" align="left"><b>Improved content assist for getter and setter proposals</b></td>
+    <td width="70%" valign="top">Content assist now proposes all possible getter and setter proposals
+    in case of field name clashes and no longer proposes setter proposals for final fields.
+	</td>
   </tr>
 
-  <tr id="javadoc-header-links">
+  <tr id="new-preference-transfer-code">
     <td width="30%" valign="top" align="left">
-        <b>Links in Javadoc headers</b>
+        <b>New 'Java Code Style Preferences' category when importing or exporting preferences</b>
     </td>
     <td width="70%" valign="top">
-        In the headers of Javadoc hovers and the Javadoc view, references to other types and members are now links.
-        You can click on a method return type or parameter type to quickly read the type's Javadoc.
-    	<p><img src="images/javadoc-header-links.png" alt="Javadoc hover with mouse over method return type"></p>
-    	And when you're done with reading, just click <b>Back</b> in the toolbar to see the original Javadoc again.
+        When importing or exporting preferences, a new category is available that
+        allows you to control whether Java code style preferences are imported or exported:
+       <p><img src="images/preference-transfer-code.png" alt="Java code style preference transfers"/></p> 
     </td>
   </tr>
-  
-  <tr id="open-in-properties-file">
+
+  <!-- ******************* Java Formatter ************************************* -->
+  <tr> 
+    <td colspan="2"><a name="JavaFormatter"></a> <div style="font-size: 20px; font-weight: bold;"> 
+      Java Formatter </div></td>
+  </tr>
+
+  <tr id="formatter-disabling-enabling-tags-preference"> 
     <td width="30%" valign="top" align="left">
-        <b>Open in Properties File action in NLS Hover</b>
+      <b>Control the formatting in code sections</b>
     </td>
     <td width="70%" valign="top">
-        The <b>NLS string hover</b> now has an <b>Open in Properties File </b> action in the toolbar which  
-        locates the selected NLS string in the corresponding properties file where it is defined. The action 
-        is activated in the toolbar with focus on the hover. 
-       <p><img src="images/open-in-properties-file.png" alt="Open in Properties File action in NLS hover"></p>        
+      This preference allows you to define one tag to disable and one tag
+      to enable the formatter (see the <b>Off/On Tags</b> tab in your formatter
+      profile):
+      <p><img src="images/formatter-disabling-enabling-tags-preference.png"
+          alt="Java formatter preference page. Set the disabling and enabling tags on the 'Off/On Tags' tab of the formatter profile."/></p>
+      <p>Here is an example of formatted code which is using code sections
+      with the tags defined as shown above:</p>
+      <p><img src="images/formatter-disabling-enabling-tags-formatted.png"
+          alt="Java formatter example. The simple snippet with the formatted annotation and its element-value pairs aligned."/></p>
     </td>
   </tr>
-  
-  <tr id="joinLine-formatter-option"> 
+
+  <tr id="formatter-prefer-wrapping-outer-expressions-preference"> 
     <td width="30%" valign="top" align="left">
-		<b>Formatter option to preserve user line breaks</b>
+      <b>New strategy to wrap nested method calls</b>
     </td>
     <td width="70%" valign="top">
-      The Java code formatter can now optionally preserve user line breaks by not joining lines in code or comments.
-      <p>For example, the wrapped lines of the <code>return</code> statement in following test case:</p>
-      <p><img src="images/formatter-join-lines-before.png" alt="Example of Code to Format"></p>  
-      <p>will be preserved by the formatter when the <b>Never join lines</b> preference is used and now produces the following result:</p>
-      <p><img src="images/formatter-join-lines-after.png" alt="Coded Formatted with Never Join Lines"></p>  
-      <p>This preference can be configured on the
-      <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.CodeFormatterPreferencePage)")'>
-      <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the formatter preference page">
-      <b>Java &gt; Code Style &gt; Formatter</b></a> preference page.
-      		 See the <b>Never join lines</b> option on the <b>Line Wrapping</b> and <b>Comments</b> tab.</p>
+      The Java formatter now tries to wrap the outermost method calls
+      first to have a better output when wrapping nested method calls.
+      <p>
+      Here is an example of a formatted code where the formatter has
+      wrapped the line earlier, e.g. between the arguments of the outermost
+      message call. Doing this, each nested method call is kept on a single
+      line:</p>
+      <p><img src="images/formatter-prefer-wrapping-outer-expressions-formatted.png"
+          alt="Java formatter example. The simple snippet with the formatted nested method calls."/></p>
+      <p>
+      A new preference allows you to disable this new strategy, e.g. if you want to format your code as before:</p>
+      <p><img src="images/formatter-prefer-wrapping-outer-expressions-preference.png"
+          alt="Java formatter preference page. Activate the new strategy when wrapping nested method calls."/></p>
+          
+      <p><b>Note:</b> Currently the new strategy only applies to nested method
+      calls, but that might be extended to other nested expressions in future
+      versions.</p>
     </td>
   </tr>
 
-   <!-- ******************* Java Compare Editor ************************************* -->
-
-     <tr> 
-      <td colspan="2"><a name="JavaCompareEditor"></a> <div style="font-size: 20px; font-weight: bold;"> 
-          Java Compare Editor</div></td>
-    </tr>
-   
-  <tr id="workspace_java-compare">
+  <tr id="formatter-new-line-after-label-preference"> 
     <td width="30%" valign="top" align="left">
-		<b>General editing enhancements</b></td>
+      <b>Insert a new line after a label</b>
+    </td>
+
     <td width="70%" valign="top">
-		The Java Compare editor now supports new text editing features like move/copy/delete line and formatting.
+      <img src="images/formatter-new-line-after-label-preference.png"
+          alt="Java formatter preference page. Check the preference on the 'New Lines' tab of the formatter profile."/>
+      <p>For example, with this preference activated as shown above, the loop
+      will be placed on a new line after its label:</p>
+      <p><img src="images/formatter-new-line-after-label-formatted.png"
+          alt="Java formatter example. The simple snippet with a label formatted."/>
+      </p>
     </td>
   </tr>
 
-    <tr id="java-compare-hyperlinking">
+  <tr id="formatter-align-annotation-arguments-preference"> 
     <td width="30%" valign="top" align="left">
-        <b>Hyperlinking (Ctrl+Click)</b>
+      <b>Align element-value pairs in annotations</b>
     </td>
     <td width="70%" valign="top">
-    	<img src="images/java-compare-hyperlinking.png" alt="Hyperlinking">
-	</td>
-  </tr>
-  
-    <tr id="java-compare-content-assist">
-    <td width="30%" valign="top" align="left">
-        <b>Content Assist (Ctrl+Space)</b>
+      <img src="images/formatter-align-annotation-arguments-preference.png"
+          alt="Java formatter preference page. Check the preference on the 'Line Wrapping' tab of the formatter profile."/>
+      <p>For example, the two annotation arguments are each put on a new line
+      if the chosen alignment policy for this preference is <b>Wrap all elements,
+      every element on a new line</b> and if the <b>Force split</b> check-box
+      is selected:</p>
+      <p><img src="images/formatter-align-annotation-arguments-formatted.png"
+          alt="Java formatter example. The simple snippet with the formatted annotation and its element-value pairs aligned."/></p>
     </td>
-    <td width="70%" valign="top">
-		<img src="images/java-compare-assist.png" alt="Content Assist">
-	</td>
   </tr>
-  
-    <tr id="javadoc-on-hover">
+
+  <tr id="formatter-wrap-method-declaration-preference"> 
     <td width="30%" valign="top" align="left">
-        <b>Javadoc on hover</b>
+      <b>Wrap method declaration</b>
     </td>
     <td width="70%" valign="top">
-		<img src="images/java-compare-hover.png" alt="Javadoc hovers">
-	</td>
+      <img src="images/formatter-align-method-declaration-preference.png"
+          alt="Java formatter preference page. Check the preference on the 'Line Wrapping' tab of the formatter profile."/>
+      <p>For example, the modifier, the return type and the name of the method
+      can each be placed on a new line if the chosen alignment policy for
+      this preference is <b>Wrap all elements, every element on a new line</b>
+      and if the <b>Force split</b> check-box is selected:</p>
+      <p><img src="images/formatter-align-method-declaration-formatted.png"
+         alt="Java formatter example. The simple snippet with the formatted method declaration aligned."/></p>
+    </td>
   </tr>
-  
-    <tr id="java-compare-quick-outline">
+
+  <tr id="formatter-condense-multi-lines-comments-preference"> 
     <td width="30%" valign="top" align="left">
-        <b>Quick Outline (Ctrl+O)</b>
+      <b>Put start and end of comments on separate lines</b>
     </td>
+
     <td width="70%" valign="top">
-		<img src="images/java-compare-outline.png" alt="Quick outline">
+      This preference lets you to decide whether the beginning and the
+      ending characters of a multi-line comment will be placed on separate
+      lines or not:
+      <p><img src="images/formatter-condense-multi-lines-comments-preference.png"
+          alt="Java formatter preference page. Check the preferences on the 'Comments' tab of the formatter profile."/></p>
+      <p>For example with the above preferences disabled,
+      a block comment can be formatted to take less lines in the code:</p>
+      <p><img src="images/formatter-condense-multi-lines-comments-formatted.png"
+          alt="Java formatter example. The simple snippet with the block and javadoc comments formatted with less lines than with the default profile."/></p>
     </td>
   </tr>
-  
-    <tr id="java-compare-reconcile">
+
+  <tr id="formatter-skip-first-column-comments-preference"> 
     <td width="30%" valign="top" align="left">
-        <b>Reconcile Java compare structure while typing</b>
+      <b>Skip formatting of line comments starting at first column</b>
     </td>
+
     <td width="70%" valign="top">
-        The Java compare editor now updates its structure while you are typing inside the editor.
-        <p><img src="images/dynamic-structure-compare.png" alt="Dynamic structure comparison"></p>
+      This preference lets you decide whether line comments which start
+      at the first column of the file will be formatted or not:
+      <p><img src="images/formatter-skip-first-column-comments-preference.png"
+          alt="Java formatter preference page. Check the preference on the 'Comments' tab of the formatter profile."/></p>
+      <p>For example, with this preference not activated as shown above,
+      the first comment is untouched after the formatting:</p>
+      <p><img src="images/formatter-skip-first-column-comments-formatted.png"
+          alt="Java formatter example. A simple snippet with line comment starting at first column."/></p>
     </td>
   </tr>
-  
-    
+
   <!-- *************** Java Refactoring ************************************ -->
     <tr> 
       <td colspan="2"><a name="JavaRefactoring"></a> <div style="font-size: 20px; font-weight: bold;"> 
-          Java Refactoring and Source Actions</div></td>
+          Java Refactorings</div></td>
     </tr>
 
-  <tr id="generate-tostring">
-    <td width="30%" valign="top" align="left">
-        <b>Generate toString()</b>
-    </td>
+ <tr id="extract-method-continue">
+    <td width="30%" valign="top" align="left"><b>Extract Method improvements</b></td>
     <td width="70%" valign="top">
-        The new toString() generator allows you to quickly generate a toString() method for your class.
-        <b>Source</b> &gt; <b>Generate toString()...</b> offers several options to configure the
-        format of the resulting String and the style of the generated code in the toString() method body.
-       <p><img src="images/generate-tostring-dialog.png" alt="Generate toString() dialog"></p>
+      The <b>Extract Method</b> refactoring now handles selections that contain <code>continue</code> statements.
+      To preserve the semantics of the existing code, the selection needs to include the last statement of the loop.
+      In the extracted method, <code>continue</code> statements are changed to <code>return</code>:
+      <p>
+
+        <img src="images/extract-method-continue.png" alt="Extract method refactoring with continue" />
+      </p>
+      For a selection that would need multiple return values in the extracted method,
+      Eclipse now lists the conflicting variables in the error message:
+      <p>
+        <img src="images/extract-method-multiple-return-values.png" alt="Extract method refactoring with an ambiguous return value error" />
+      </p>
     </td>
   </tr>
 
-  <tr id="use-blocks">
+  <tr id="move-type-to-new-file-refactoring">
     <td width="30%" valign="top" align="left">
-        <b>Optionally use blocks when generating hashCode() and equals()</b>
+        <b>Move type to new file refactoring</b>
     </td>
     <td width="70%" valign="top">
-    	The <b>Generate hashCode() and equals()</b> wizard now allows you to choose
-    	whether blocks are used for <code>if</code> statements:
-		<p><img src="images/hashcode-and-equals-wizard.png" alt="Generate hashCode() and equals() wizard"></p>
+        The <b>Convert Member Type to Top Level</b> refactoring has been renamed to <b>Move Type to New File</b> and now allows any
+        secondary type in a file to be moved into its own file. The action continues to work for member types.
+        <p><img src="images/move-type-to-new-file-refactoring.png" alt="Move Type to New File refactoring"/></p>
     </td>
   </tr>
-     
+
     <!-- ******************* Java Compiler ************************************* -->
     <tr> 
       <td colspan="2"><a name="JavaCompiler"></a> <div style="font-size: 20px; font-weight: bold;"> 
           Java Compiler </div></td>
     </tr>
 
-    <TR id=compiler-diagnostic>
-      <TD vAlign=top align=left width="30%"><B>Comparing identical values</B> </TD>
-      <TD vAlign=top width="70%">Comparing identical values is now detected
-          by the compiler and reported as a warning by default:
-        <P><IMG alt="Comparing Identical Values Warning Example" 
-      src="images/comparing-identical-values-example.png"></p>
-        <P>You can configure this setting in the <B>Potential programming problems</B> section
-          on the
-          <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
-          <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page">
-          <b>Java &gt; Compiler &gt; Errors/Warnings</b></a> preference page,
-          or by clicking the <B>Configure Problem Severity</B> button in the
-          problem hover toolbar.</P></TD>
-    </TR>
-
-  <tr id="missing-synchronized">
-    <td width="30%" valign="top" align="left">
-        <b>Missing synchronized modifier</b>
-    </td>
-    <td width="70%" valign="top">
-    	The compiler now issues a warning when a method overrides a synchronized method
-    	but the method itself is not synchronized.
-    	<p><img src="images/missing-synchronized.png" alt="Problem hover with quick fix for missing synchronized modifier"></p>
-    	You can use the quick fix to add the <code>synchronized</code> modifier, and you can
-    	configure the problem severity on
-        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
-        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page">
-        <b>Preferences &gt; Java &gt; Compiler &gt; Errors/Warnings</b></a> 
-    	in the <b>Potential programming problems</b> section.
-    </td>
+  <tr id="override-annotation-interfaces">
+    <td width="30%" valign="top" align="left"><b>Report missing <code>@Override</code> for method implementations in 1.6 mode </b></td>
+    <td width="70%" valign="top">The compiler now reports about missing <code>@Override</code> annotation in the case where a method implements
+	a method from an interface:
+	<p><img src="images/override.png" alt="Missing @Override annotation"/></p>
+	<p>
+	This new behavior can be controlled via
+	<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
+	<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page"/>
+	<b>Java &gt; Compiler &gt; Errors/Warnings</b></a>
+	in the <b>Annotations</b> section and configured for Clean Up and Save Actions.
+	</p>
+	<p><strong>Note:</strong> This is reported only in 1.6 mode as <code>@Override</code> annotations are not expected on a method implementation in 1.5.</p>  
+	</td>
   </tr>
 
-  <tr id="switch-case-fall-through">
-    <td width="30%" valign="top" align="left">
-        <b>Suppress compiler problem for 'switch' case fall-through</b>
-    </td>
-    <td width="70%" valign="top">
-        The compiler problem for expected fall-throughs in switch case statements can now be suppressed by preceding
-        the following <code>case</code> statement with a comment that starts with $FALL-THROUGH$. This is especially
-		interesting for code that can't use the J2SE-5.0-style <code>@SuppressWarnings("fallthrough")</code> annotation.
-    	<p><img src="images/switch-case-fall-through.png" alt="Problem hover with quick fixes for switch case fall-through"></p>
-    	This problem is not reported by default. You can enable the <b>'switch' case fall-through</b> warning on
-        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
-        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page">
-        <b>Preferences &gt; Java &gt; Compiler &gt; Errors/Warnings</b></a> 
-    	in the <b>Potential programming problems</b> section.
-    </td>
+  <tr id="rawtypes-token">
+    <td width="30%" valign="top" align="left"><b>New &quot;rawtypes&quot; token for <code>@SuppressWarnings</code> annotation</b></td>
+    <td width="70%" valign="top">The compiler now makes the distinction between warnings reported for raw type usage versus warnings reported for unchecked 
+	generic operations.
+	<p>In case it is not possible to update the code with the new token, the <code>suppressRawWhenUnchecked=true</code> system property can be set when starting Eclipse.</p>
+	</td>
   </tr>
 
-  <tr id="hash-code-compiler-diagnostic"> 
-    <td width="30%" valign="top" align="left">
-        <b>Missing hashCode() method</b>
-    </td>
-    <td width="70%" valign="top">
-    	The compiler can now detect whether a class overrides the <code>equals()</code> method
-    	without overriding the <code>hashCode()</code> method:
-    	<p><img src="images/compiler-hashcode-diagnosis.png" alt="Problem hover with quick fix for missing hashCode method"></p>
-    	<p>You can either use the quick fix to override the <code>hashCode()</code> method or the quick fix to regenerate both methods.</p>
-    	<p>This problem is not reported by default. You can enable it on
-        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
-        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page">
-        <b>Preferences &gt; Java &gt; Compiler &gt; Errors/Warnings</b></a> 
-    	in the <b>Potential programming problems</b> section.</p>
+  <tr id="suppress-optional-errors">
+    <td width="30%" valign="top" align="left"><b><code>@SuppressWarnings</code> for optional errors</b></td>
+    <td width="70%" valign="top">The <code>@SuppressWarnings</code> annotation can now also suppress optional compile errors:
+        <p><img src="images/suppress-optional-errors.png" alt="A suppressed and an unsuppressed optional error"/></p>
+        <p>In this example, <b>Local variable is never read</b> has been set to Error.</p>
+        <p>This behavior can be enabled on the
+		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
+		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page"/>
+		<b>Java &gt; Compiler &gt; Errors/Warnings</b></a>
+        preference page
+        in the <b>Annotations</b> section with the check box <b>Suppress optional errors with '@SuppressWarnings'</b>.</p>
     </td>
   </tr>
 
-  <tr id="deadCode-diagnostic"> 
+  <tr id="unused-object-allocation-detection">
     <td width="30%" valign="top" align="left">
-		<b>Dead code</b>
+        <b>Compiler detects unused object allocation</b>
     </td>
-
     <td width="70%" valign="top">
-      The compiler can now issue a warning if dead code is detected.
-      <p> For instance, <code>if (false) foo();</code> is not reported as truly unreachable code by the Java Language Specification. 
-             When this diagnostic is enabled, the invocation of foo() is signaled as dead code:</p>
-      <p><img src="images/compiler-deadcode-diagnosis.png" alt="Problem hover with quick fix for dead code"></p>
-      <p>This problem is reported as a warning by default.  You can configure the problem severity on
-        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
-        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page">
-        <b>Preferences &gt; Java &gt; Compiler &gt; Errors/Warnings</b></a> 
-	    	in the <b>Potential programming problems</b> section</p>
-      <p>Note that dead code following an <code>if (constant variable)</code> statement, e.g. <code>if (DEBUG)</code>, is not reported.</p>
+        The Java compiler can now detect unused object allocations:
+        <p><img src="images/unused-object-allocation.png" alt="if (name == null) new IllegalArgumentException();"/></p> 
+        This detection is disabled by default and can be enabled on the
+		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.ProblemSeveritiesPreferencePage)")'> 
+		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Errors/Warnings preference page"/>
+		<b>Java &gt; Compiler &gt; Errors/Warnings</b></a>
+        preference page
+        at the end of the <b>Potential programming problems</b> section.
     </td>
   </tr>
-
-  <tr id="class-path-header"> 
+  
+  <tr id="compiler-preference-transfer-compiler">
     <td width="30%" valign="top" align="left">
-		<b>Classpath resolution honors the 'Class-Path' header of JAR manifest file</b>
+        <b>Import and export compiler preferences</b>
     </td>
     <td width="70%" valign="top">
-      The 'Class-Path' header of a JAR manifest is now honored in the Java model. JARs defined by 'Class-Path' are now automatically
-      added to the build path.
-      <p>For example, 'nested.jar' is a referenced library although it was not explicitly specified in the project build path
-      but through the manifest of 'lib.jar':</p>
-      <p><img src="images/class-path-header.png" alt="Class-Path Clause Example"></p>  
+        The new 'Java Compiler Preferences' category allows to just import or export the compiler preferences:
+       <p><img src="images/preference-transfer-compiler.png" alt="New Java Compiler Preference transfer"/></p> 
     </td>
   </tr>
 
-  <tr id="relative-build-path"> 
+   <!-- ******************* Java Views and Dialogs ************************************* -->
+     
+     <tr> 
+      <td colspan="2"><a name="JavaViews"></a> <div style="font-size: 20px; font-weight: bold;"> 
+          Java Views and Dialogs</div></td>
+    </tr>
+
+   <tr id="new-build-path-error-decorator">
     <td width="30%" valign="top" align="left">
-		<b>Build path supports ".."</b>
+        <b>New build path error decorator</b>
     </td>
     <td width="70%" valign="top">
-      The path of a library, variable or container entry can now be anywhere relative to the project,
-      e.g. if the library is on a sibling directory, its path can be specified using the ".." as follows:
-      <p><img src="images/build-path-dot-dot-path.png" alt="Parent Relative Path Example"></p>  
+        Build path problems are sometimes easy to miss among other problems in a project.
+        The <b>Package Explorer</b> and <b>Project Explorer</b> views now show a new 
+        decorator on Java projects and working sets that contain build path errors:
+       <p><img src="images/build-path-error-decorator.png" alt="Build path error decorator"/></p> 
+       
+        <p>The concrete errors can be seen in the <b>Problems</b> view, and if you open the view menu and select
+        <b>Group By &gt; Java Problem Type</b>, they all show up in the Build Path category:</p>
+       <p><img src="images/build-path-problems.png" alt="Build path error decorator"/></p> 
     </td>
   </tr>
 
-  <tr id="duplicate-build-path-diagnostic"> 
+   <tr id="package-name-abbreviations">
     <td width="30%" valign="top" align="left">
-		<b>Build path resolution tolerates duplicate entries</b>
+        <b>Package name abbreviations</b>
     </td>
     <td width="70%" valign="top">
-      Duplicate entries in the build path are now tolerated if the redundant entry is found while resolving the build path
-      and not at the raw level.
-      <p>For example, two user libraries used in the project build path referring to the same JAR file are tolerated:</p>
-      <p><img src="images/build-path-duplicate-entries.png" alt="Classpath Duplicate Entries Example"></p>
-      However, an error is reported if the same JAR file is directly specified twice:
-      <p><img src="images/build-path-invalid-dups.png" alt="Classpath Invalid Duplicate Entries Example"></p>
+        Package names in Java views can now be abbreviated with custom rules. For example,
+        the following rules produce the rendering shown below:
+        <pre>org.eclipse.ui={UI}
+org.eclipse.ui.texteditor={T}
+org.eclipse.ui.internal.texteditor=[iT]</pre>
+        <table cellpadding="0" cellspacing="0" summary="Screenshots">
+        <tr>
+	        <td>Without abbreviations:</td>
+	        <td>With abbreviations:</td>
+        </tr>
+        <tr>
+	        <td style="padding-top:2px; padding-right:7px;"><img src="images/package-abbreviations-off.png" alt="Package Explorer with abbreviations disabled"/></td>
+	        <td style="padding-top:2px;"><img src="images/package-abbreviations-on.png" alt="Package Explorer with abbreviations enabled"/></td>
+        </tr>
+        </table>
+       
+        <p>The abbreviation rules can be configured on the
+		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.AppearancePreferencePage)")'>
+		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Appearance preference page"/>
+		<b>Java &gt; Appearance</b></a>
+		preference page.</p>
     </td>
   </tr>
 
-  <tr id="compliance-follows-execution-environment">
+  <tr id="remove-from-view-action">
     <td width="30%" valign="top" align="left">
-        <b>Compiler compliance follows execution environment</b>
+        <b>Remove nodes from Call Hierarchy</b>
     </td>
     <td width="70%" valign="top">
-        When you change the JRE on the build path of a Java project to an execution 
-        environment, Eclipse now automatically updates the compiler compliance settings 
-        on the <b>Java Compiler</b> properties page to use the settings defined by the execution environment.
-       <p><img src="images/compliance-follows-ee.png" alt="Java Compiler properties page"></p>
-       <p>Note that as of 3.5, an execution environment is the first choice when 
-       creating a new Java project or a launch configuration.</p>
+        The <b>Call Hierarchy</b> now allows to remove a single or multiple nodes from the view via context menu:
+       <p><img src="images/remove-from-view-action.png" alt="Remove from View action in Call Hierarchy"/></p>        
     </td>
   </tr>
-
-   <!-- ******************* Java Views and Dialogs ************************************* -->
-     
-     <tr> 
-      <td colspan="2"><a name="JavaViews"></a> <div style="font-size: 20px; font-weight: bold;"> 
-          Java Views and Dialogs</div></td>
-    </tr>
-
-  <tr id="open-type">
+  
+  <tr id="refresh-element-action">
     <td width="30%" valign="top" align="left">
-        <b>Emphasized matching characters in Open Type dialog</b>
+        <b>Improved refresh in the Call Hierarchy</b>
     </td>
     <td width="70%" valign="top">
-        The <b>Open Type</b> dialog now emphasizes the characters that match the pattern:
-       <p><img src="images/open-type.png" alt="Emphasized matching characters in Open Type dialog"></p>
+        The Call Hierarchy now allows to refresh single or multiple elements at once via the <b>Refresh (F5)</b> action from the context menu:
+       <p>
+         <img src="images/refresh-element-action.png" alt="Refresh element action in Call Hierarchy"/></p> 
+       <p>
+       This will refresh the selected elements and their direct children. The action in the toolbar has been renamed to <b>Refresh View</b> and still refreshes the entire view.
+    	</p>
     </td>
   </tr>
-
-  <tr id="sort-working-sets">
+  
+  <tr id="background-computation-of-type-hierarchy">
     <td width="30%" valign="top" align="left">
-        <b>Sort working sets in Package Explorer</b>
+      <b>Type Hierarchy computed in background</b>
     </td>
     <td width="70%" valign="top">
-        The <b>Configure Working Sets...</b> dialog now has a <b>Sort working sets</b> option to sort working sets alphabetically.
-	    The setting is preserved, so the working sets stay sorted, even as new working sets are added.
-       <p><img src="images/sort-working-sets.png" alt="Sort working sets in Package Explorer"></p>
-        You can enable working sets in the Package Explorer via the <b>Top Level Elements</b> &gt; <b>Working Sets</b> view menu.
+      The <b>Type Hierarchy</b> is now computed in an operation that can be sent to the background
+      (or always runs in the background, depending on your settings):
+      <p><img src="images/background-computation-of-type-hierarchy.png" alt="Background computation of Type Hierarchy"/></p> 
+      <p>Your workbench is no longer blocked while a big hierarchy is computed.</p>       
     </td>
   </tr>
 
-  <tr id="delete-workingSets">
+  <tr id="export-all-formatter">
     <td width="30%" valign="top" align="left">
-        <b>Delete working sets from the Package Explorer</b>
+        <b>Export all profiles</b>
     </td>
     <td width="70%" valign="top">
-    	The <b>Delete</b> functionality is now enabled for working sets when the top level 
-    	elements are Working Sets in the Package Explorer. When deleting working sets, you can now either remove or
-    	just hide them from the Package Explorer: 
-       <p> <img src="images/delete-working-set.png" alt="Delete working sets from a Package Explorer"></p> 
+        The <b>Formatter</b> preference page and the <b>Clean Up</b> preference page now have an <b>Export All... </b> button that allows exporting all user-defined profiles 
+		into an XML file. The exported profiles can be imported from the XML file at once using the <b>Import...</b> button. 
+       <p><img src="images/export-all-profiles.png" alt="Export All... from Formatter preference page"/></p>        
     </td>
   </tr>
 
-  <tr id="paste-patch">
+  <tr id="open-attached-javadoc">
+    <td width="30%" valign="top" align="left"><b>Opening attached Javadoc now uses preferred web browser</b></td>
+    <td width="70%" valign="top"><b>Open External Javadoc</b> has been renamed to <b>Open Attached Javadoc</b> and now uses the configured web browser: 
+	<p><img src="images/browser-preferences.png" alt="Web Browser preferences"/></p> 
+	</td>
+  </tr>
+  
+	<tr id="instancecounts">
+	<td align="left" valign="top" width="30%"><b>Instance counts
+	</b></td>
+	<td valign="top" width="70%">The <b>Variables</b> view provides a new column
+	displaying the number of instances corresponding to the concrete type of
+	each variable. To display the column, 
+	select <b>Layout &gt; Select Columns...</b> from the view's menu, and then
+	select <b>Instance Count</b> from the <b>Select Columns</b> dialog.
+	Note that instance counts are only available debugging on JavaSE-1.6 (or newer) and
+	are not applicable to primitive types.
+	<p><img alt="Instance Counts" title="Instance Counts" src="images/instance-counts.png"/><br/><br/></p>
+	<p>You can also display the instance count of a selected type in an editor or editor outline
+	and selecting <b>Instance Count...</b> from the context menu. The result is displayed
+	in a dialog. 
+	</p>
+	</td>
+	</tr>
+
+	<tr id="breakpoint-details">
+		<td align="left" valign="top" width="30%"><b>Java breakpoint detail</b></td>
+		<td valign="top" width="70%">The Java breakpoint detail panes now
+		display all properties in a single pane. Detail pane orientation can be configured
+		via the <b>Layout</b> view menu.
+		<p><img alt="Breakpoint Detail Panes" src="images/bp-details.png"/><br/><br/></p>
+		<p>For example, a Java line breakpoint allows its condition to be edited in place with content
+		assist. Use the <b>File > Save (Ctrl+S)</b> action to save a condition that has been edited.
+		Radio button properties are saved immediately.
+		</p>
+		</td>
+	</tr>
+
+  <tr id="source-attachments-in-referenced-JARs">
+    <td width="30%" valign="top" align="left"><b>Source attachments for referenced JARs</b></td>
+    <td width="70%" valign="top">Source attachments can now be configured separately for JARs
+        that are not directly on the classpath of a Java project, but referenced from another
+        JAR via the <code>Class-Path:</code> attribute in the <code>MANIFEST.MF</code>:
+        <p><img src="images/source-attachments-in-referenced-JARs.png" alt="Screenshot showing source attachment dialog"/></p>
+    </td>
+  </tr>
+
+  <tr id="find-externalized-strings">
+    <td width="30%" valign="top" align="left"><b>Find broken externalized strings improvements</b></td>
+    <td width="70%" valign="top"><b>Source &gt; Find Broken Externalized Strings</b> now reports less false positives:
+    <p>&bull; It ignores
+    all methods that don't take a single parameter of type <code>String</code>. For example, method calls like
+    <code>Messages.getResourceBundle()</code> are no longer listed as undefined keys.</p>
+  
+    <p>&bull; Constants used for message keys are now correctly recognized.
+      In the example below, <code>MAIN_INDIRECT</code> is no longer listed as an undefined key:</p>
+     <p><img src="images/find-externalized-strings-constants.png" alt="'Find Broken Externalized Strings' handles constants example"/></p>
+    </td>
+  </tr>
+  
+    <tr id="new-preference-transfer-appearance">
     <td width="30%" valign="top" align="left">
-        <b>Paste patch into Package Explorer</b>
+        <b>New Java appearance category when importing or exporting preferences</b>
     </td>
     <td width="70%" valign="top">
-    	What's the quickest way to apply a patch from Bugzilla? Just open the attachment,
-    	copy the patch to the clipboard and paste it into the <b>Package Explorer</b>.
+        There is a new category available when importing or exporting preferences that
+        allows you to control whether
+		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.jdt.ui.preferences.AppearancePreferencePage)")'>
+		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the Appearance preference page"/>
+		<b>Java &gt; Appearance</b></a>
+        preferences are imported or exported:
+       <p><img src="images/preference-transfer-appearance.png" alt="Java appearance preference transfers"/></p> 
     </td>
   </tr>
-  
-  <tr id="expand-with-constructors">
+
+   <!-- ******************* JUnit ************************************* -->
+     
+     <tr> 
+      <td colspan="2"><a name="JUnit"></a> <div style="font-size: 20px; font-weight: bold;"> 
+          JUnit</div></td>
+    </tr>
+
+
+  <tr id="junit4.8.1">
     <td width="30%" valign="top" align="left">
-        <b>Call Hierarchy can expand with constructors</b>
+        <b>JUnit 4.8.1</b>
     </td>
     <td width="70%" valign="top">
-        In Callers mode, the Call Hierarchy now has an <b>Expand With Constructors</b> action in the context menu for instance methods.
-        <p>
-        This action replaces the normal children of the method with
-        </p>
-        <ul>
-        <li> the constructors of the method's declaring class</li>
-        <li> a node that contains the direct callers of the method.</li>
-        </ul>
-        This is useful for methods in anonymous classes, for example to follow the callers that create a <code>Runnable</code>,
-        instead of those which actually call its <code>run()</code> method.
-        <p><img src="images/expand-with-constructors.png" alt="Expand With Constructors"></p>
-        <p>Some methods (e.g. <code>java.lang.Runnable#run()</code>) are expanded with constructors by default.
-        The defaults can be configured in the view menu.</p>
+    	The JUnit 4 version shipped with Eclipse has been updated to 4.8.1.
     </td>
   </tr>
   
-    <TR id=javadoc-hover>
-      <TD vAlign=top align=left width="30%"><B>Improved Javadoc view and hover</B> </TD>
-      <TD vAlign=top width="70%">The Javadoc view and hovers now support the <STRONG>{@inheritDoc}</STRONG> tag
-        and add links to overridden methods (like the Javadoc tool):
-        <P><img alt="Improved Javadoc hover" 
-      src="images/javadoc-hover.png"></p>
-        <P>Moreover, the message for deprecated elements now shows up on top,
-          and relative links are supported (for example, to embed images from
-          the 
-      "doc-files" directory or to link to <STRONG>{@docRoot}</STRONG>). </P></TD>
-    </TR>
-
-  <tr id="open-jar-export-wizard">
+  <tr id="org.junit-plugins">
     <td width="30%" valign="top" align="left">
-        <b>Open *.jardesc files with JAR Export Wizard</b>
+      <b>2 versions of org.junit plug-in</b>
     </td>
     <td width="70%" valign="top">
-        Opening *.jardesc files now launches the JAR Export Wizard by default.
-    	<p><img src="images/jar-export.png" alt="Open With &gt; JAR Export Wizard"></p>
-    	<p>The <b>Open JAR Packager...</b> action in the context menu is gone.</p>
+      The SDK now ships 2 org.junit plug-ins (versions 3.8.2 and 4.8.1). Clients that want to run JUnit Plug-in Tests with a Java 5 or later VM
+      and that require org.junit with a version bound that does not include 4.x need to update their version bound to include 4.x
+      (e.g. by specifying <code>Require-Bundle: org.junit;bundle-version="3.8.2"</code>.
+      If they don't update their bounds, both versions of org.junit are resolved at run time, which leads to errors when test classes are loaded.
+      <p>For complete details on the steps required to transition to using JUnit4 or to continue using JUnit3, please see:<br/>
+      <a href="http://wiki.eclipse.org/Eclipse/Testing/JUnit4_Changes">http://wiki.eclipse.org/Eclipse/Testing/JUnit4_Changes</a>.</p>
     </td>
   </tr>
 
-  <tr id="open-in-junit-view">
-    <td width="30%" valign="top" align="left">
-        <b>Open test result files in JUnit view</b>
-    </td>
+  <tr id="junit-open-url">
+    <td width="30%" valign="top" align="left"><b>JUnit view opens test result URL</b></td>
     <td width="70%" valign="top">
-        JUnit test result files from Eclipse or the Ant JUnit tasks can now be opened in the JUnit view via
-        double click or via <b>Open With &gt; JUnit View</b>.
-    	<p><img src="images/open-in-junit-view.png" alt="Open With &gt; JUnit View"></p>
-    	<p>If the files are not inside your workspace, you can still open them
-    	from the JUnit view via the <b>Test Run History...</b> drop-down menu.
-    	And the <b>Import...</b> and <b>Export...</b> actions now always start at the most recently used location.</p>
-    	<p><img src="images/junit-view-import.png" alt="Test Run History... &gt; Import"></p>
+      The <b>JUnit</b> view can now directly load test result files from an URL. You can either just drag and drop an URL to the view or open the
+      <b>Test Run History...</b> tool bar button's drop-down and choose <b>Import from URL...</b> to enter an URL from which
+      the test results should be loaded.
+      <p>
+        <img src="images/junit-import-url.png" alt="'Import from URL...' menu item"/></p>
+      <p>
+      Supported test run formats are XML files exported from the JUnit view or
+      generated by the Ant JUnit task.</p>
     </td>
   </tr>
   
-    <tr id="junit4.5">
-    <td width="30%" valign="top" align="left">
-        <b>JUnit 4.5</b>
+  <tr id="junit-skipped-node">
+    <td width="30%" valign="top" align="left"><b>JUnit imports test results with </b><code>&lt;skipped&gt;</code><b> nodes</b>
     </td>
     <td width="70%" valign="top">
-    	The JUnit4 version shipped with Eclipse has been updated to 4.5.
-    	See their <a href="http://sourceforge.net/project/shownotes.php?release_id=618683&amp;group_id=15278">Release Notes</a>
-    	for the changes in version 4.5.
+        The JUnit view can now import test run files that contain <code>&lt;skipped&gt;</code> nodes.
+        Eclipse and the Ant JUnit task do not generate such nodes, but e.g. test result files from Apache Maven
+        do generate them for ignored JUnit4 tests.
     </td>
   </tr>
   
-  <tr id="jar-in-jar-exporter">
+    <tr id="edit-test-method">
     <td width="30%" valign="top" align="left">
-        <b>Runnable Jar-in-Jar exporter can package libraries</b>
+      <b>Edit test method in JUnit launch configuration</b>
+    </td>
+    <td width="70%" valign="top">
+      In JUnit launch configurations, you can now edit the test method:
+      <p><img src="images/edit-test-method.png" alt="JUnit launch configuration on 'Test' tab"/></p>       
+      When the test method is empty, all tests in the class will be run. 
     </td>
+  </tr>
+
+ <tr id="junit-split">
+    <td width="30%" valign="top" align="left"><b>org.eclipse.jdt.junit split</b></td>
     <td width="70%" valign="top">
-    	The Runnable JAR File Export wizard can now also package the required libraries into the exported runnable JAR file
-    	or into a folder next to the JAR:
-       <p> <img src="images/runnable-jar-in-jar-export.png" alt="Runnable JAR File Export wizard"></p>
-       <p> The advantage of the second and third options is that the required libraries
-         will just be copied and don't need be repackaged. </p>
+      The non-UI parts of the <code>org.eclipse.jdt.junit</code> plug-in have been split off into the new plug-in
+      called <code>org.eclipse.jdt.junit.core</code>. This change does not affect existing clients of the
+      <code>org.eclipse.jdt.junit</code> plug-in, but allows new clients to use only the launcher without
+      requiring all the UI dependencies.
     </td>
   </tr>
 
     <!-- ****************** END OF N&N TABLE ****************** -->
   </tbody>
 </table>
-
-
 </body>
 </html>
-
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/build.properties b/eclipse/plugins/org.eclipse.jdt.junit.core/build.properties
index a510170..5f06917 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/build.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/BasicElementLabels.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/BasicElementLabels.java
index c76e8f9..1916b90 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/BasicElementLabels.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/BasicElementLabels.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java
index 8120d92..2901976 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnitLaunchConfigurationConstants.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnitLaunchConfigurationConstants.java
index 92dc258..af5f10d 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnitLaunchConfigurationConstants.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnitLaunchConfigurationConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/TestKind.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/TestKind.java
index 8a3edc8..aef95f5 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/TestKind.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/TestKind.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/ModelMessages.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/ModelMessages.java
index b5657ba..301a5ff 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/ModelMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/ModelMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/RemoteTestRunnerClient.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/RemoteTestRunnerClient.java
index 9268b62..59e9004 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/RemoteTestRunnerClient.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/RemoteTestRunnerClient.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/TestRunListenerAdapter.java b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/TestRunListenerAdapter.java
index c6cb022..34f9ed8 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/TestRunListenerAdapter.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/model/TestRunListenerAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.runtime/build.properties b/eclipse/plugins/org.eclipse.jdt.junit.runtime/build.properties
index f067131..efaa780 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.runtime/build.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit.runtime/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit.runtime/plugin.properties b/eclipse/plugins/org.eclipse.jdt.junit.runtime/plugin.properties
index 29e231f..fa3b933 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit.runtime/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit.runtime/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -8,5 +8,5 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-pluginName=Java Development Tools JUnit runtime support
+pluginName=Java Development Tools JUnit Runtime Support
 providerName=Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/plugin.properties b/eclipse/plugins/org.eclipse.jdt.junit/plugin.properties
index 7c7cfb4..de44686 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -25,6 +25,7 @@ RunJUnitLaunchShortcut.description=Runs a set of JUnit tests
 DebugJUnitLaunchShortcut.description=Debugs a set of JUnit tests
 
 preferenceKeywords.general=Java JUnit filter stack trace stacktrace
+preferenceKeywords.wizards.java=Java
 
 View.label= JUnit
 Launch.label= JUnit
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/plugin.xml b/eclipse/plugins/org.eclipse.jdt.junit/plugin.xml
index 54ae354..2bdf15a 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.junit/plugin.xml
@@ -60,6 +60,9 @@
       <keyword
             id="org.eclipse.jdt.junit.JUnit"
             label="%preferenceKeywords.general"/>
+     <keyword
+            id="org.eclipse.jdt.junit.wizards.java"
+            label="%preferenceKeywords.wizards.java"/>
    </extension>
    <extension
          point="org.eclipse.debug.ui.launchConfigurationTypeImages">
@@ -110,6 +113,7 @@
          <description>
             %TestWizard.description
          </description>
+         <keywordReference id="org.eclipse.jdt.junit.wizards.java"/>
       </wizard>
       <wizard
             name="%TestSuiteWizard.name"
@@ -120,6 +124,7 @@
          <description>
             %SuiteWizard.description
          </description>
+         <keywordReference id="org.eclipse.jdt.junit.wizards.java"/>
       </wizard>
    </extension>
    <extension
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/ClasspathVariableMarkerResolutionGenerator.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/ClasspathVariableMarkerResolutionGenerator.java
index fa141ea..17a2a2b 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/ClasspathVariableMarkerResolutionGenerator.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/ClasspathVariableMarkerResolutionGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/JUnitContainerWizardPage.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/JUnitContainerWizardPage.java
index b50a577..161325d 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/JUnitContainerWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/buildpath/JUnitContainerWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/launcher/AssertionVMArg.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/launcher/AssertionVMArg.java
index 90ed2d5..74b4e94 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/launcher/AssertionVMArg.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/launcher/AssertionVMArg.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/EnableStackFilterAction.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/EnableStackFilterAction.java
index 95f3c98..90ece2e 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/EnableStackFilterAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/EnableStackFilterAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/FailureTrace.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/FailureTrace.java
index 4df7033..5e57509 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/FailureTrace.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/FailureTrace.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitAddLibraryProposal.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitAddLibraryProposal.java
index 4bf1ad2..b9ac79d 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitAddLibraryProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitAddLibraryProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitClasspathFixProcessor.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitClasspathFixProcessor.java
index 36c6d06..c31dc78 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitClasspathFixProcessor.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitClasspathFixProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.properties b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.properties
index 2e566ab..82dca4a 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestMethodSelectionDialog.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestMethodSelectionDialog.java
index 30b6a17..9215e74 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestMethodSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestMethodSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/NewTestCaseCreationWizard.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/NewTestCaseCreationWizard.java
index f900948..67e3b36 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/NewTestCaseCreationWizard.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/NewTestCaseCreationWizard.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.java
index 68874ce..36cd4a3 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -85,6 +85,7 @@ public final class WizardMessages extends NLS {
 	public static String NewTestSuiteWizPage_typeName_error_name_not_valid;
 	public static String NewTestSuiteWizPage_typeName_error_name_name_discouraged;
 	public static String NewTestSuiteWizPage_typeName_warning_already_exists;
+	public static String NewTestSuiteWizPage_typeName_error_filtered;
 	public static String NewTestSuiteWizPage_cannotUpdateDialog_title;
 	public static String NewTestSuiteWizPage_cannotUpdateDialog_message;
 	public static String NewTestClassWizPage_treeCaption_classSelected;
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.properties b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.properties
index b82962f..0f983f7 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/WizardMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -44,7 +44,7 @@ NewTestCaseWizardPageOne_error_java5required=JUnit 4 requires a project with 1.5
 NewTestCaseWizardPageOne_error_class_to_test_not_valid=Class under test is not valid.
 NewTestCaseWizardPageOne_error_class_to_test_not_exist=Class under test does not exist in current project.
 NewTestCaseWizardPageOne_warning_class_to_test_is_interface=Warning: Class under test ''{0}'' is an interface.
-NewTestCaseWizardPageOne_warning_class_to_test_not_visible=''{1}'' is not visible.
+NewTestCaseWizardPageOne_warning_class_to_test_not_visible=''{0}'' is not visible.
 NewTestCaseWizardPageOne_comment_class_to_test=Test method for {0}.
 NewTestCaseCreationWizard_fix_selection_invoke_fix=&Perform the following action:
 NewTestCaseCreationWizard_fix_selection_junit3_description=JUnit 3 is not on the build path. Do you want to add it?
@@ -89,6 +89,7 @@ NewTestSuiteWizPage_typeName_error_name_qualified=Test suite name must not be qu
 NewTestSuiteWizPage_typeName_error_name_not_valid=Test suite name is not valid.
 NewTestSuiteWizPage_typeName_error_name_name_discouraged=Warning: Test suite name is discouraged.
 NewTestSuiteWizPage_typeName_warning_already_exists=Warning: Test suite already exists. suite() method will be replaced.
+NewTestSuiteWizPage_typeName_error_filtered= This type is hidden in the workspace due to resource filters.
 NewTestSuiteWizPage_cannotUpdateDialog_title=Cannot update suite() method
 NewTestSuiteWizPage_cannotUpdateDialog_message=The code in suite() that the wizard replaces must start with {0} and end with {1}
 
diff --git a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/wizards/NewTestSuiteWizardPage.java b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/wizards/NewTestSuiteWizardPage.java
index a710376..cb6a179 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/wizards/NewTestSuiteWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/wizards/NewTestSuiteWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,6 +25,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.SubProgressMonitor;
 
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
@@ -470,6 +473,11 @@ public class NewTestSuiteWizardPage extends NewTypeWizardPage {
 				status.setWarning(WizardMessages.NewTestSuiteWizPage_typeName_warning_already_exists);
 				return status;
 			}
+			IResource resource= cu.getResource();
+			if (resource != null && !ResourcesPlugin.getWorkspace().validateFiltered(resource).isOK()) {
+				status.setError(WizardMessages.NewTestSuiteWizPage_typeName_error_filtered);
+				return status;
+			}
 		}
 		return status;
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.junit4.runtime/plugin.properties b/eclipse/plugins/org.eclipse.jdt.junit4.runtime/plugin.properties
index 5d9a852..8508537 100644
--- a/eclipse/plugins/org.eclipse.jdt.junit4.runtime/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt.junit4.runtime/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
+# Copyright (c) 2006, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -8,5 +8,5 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-pluginName=Java Development Tools JUnit4 runtime support
+pluginName=Java Development Tools JUnit4 Runtime Support
 providerName=Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.jdt.launching.ui.macosx/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.jdt.launching.ui.macosx/META-INF/MANIFEST.MF
index a9c21cf..45c7325 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching.ui.macosx/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.jdt.launching.ui.macosx/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jdt.launching.ui.macosx;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-Vendor: %providerName
diff --git a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JREContainerInitializer.java b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JREContainerInitializer.java
index 77cdad0..8c74989 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JREContainerInitializer.java
+++ b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JREContainerInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -80,6 +80,45 @@ public class JREContainerInitializer extends ClasspathContainerInitializer {
 	}
 	
 	/**
+	 * Sets the specified class path container for all of the given projects.
+	 *  
+	 * @param containerPath JRE container path
+	 * @param projects projects set the container on
+	 * @throws CoreException on failure
+	 */
+	public void initialize(IPath containerPath, IJavaProject[] projects) throws CoreException {
+		int size = containerPath.segmentCount();
+		if (size > 0) {
+			if (containerPath.segment(0).equals(JavaRuntime.JRE_CONTAINER)) {
+				int length = projects.length;
+				IVMInstall vm = resolveVM(containerPath);
+				IClasspathContainer[] containers = new JREContainer[length];
+				if (vm != null) {
+					if (JREContainer.DEBUG_JRE_CONTAINER) {
+						System.out.println("\tResolved VM: " + vm.getName()); //$NON-NLS-1$
+					}
+					for (int i=0; i<length; i++) {
+						containers[i] = new JREContainer(vm, containerPath, projects[i]);
+					}
+				} else {
+					if (JREContainer.DEBUG_JRE_CONTAINER) {
+						System.out.println("\t*** FAILED RESOLVE VM ***"); //$NON-NLS-1$
+					}
+				}
+				JavaCore.setClasspathContainer(containerPath, projects, containers, null);
+			} else {
+				if (JREContainer.DEBUG_JRE_CONTAINER) {
+					System.out.println("\t*** INVALID JRE CONTAINER PATH ***"); //$NON-NLS-1$
+				}	
+			}
+		} else {
+			if (JREContainer.DEBUG_JRE_CONTAINER) {
+				System.out.println("\t*** NO SEGMENTS IN CONTAINER PATH ***"); //$NON-NLS-1$
+			}
+		}
+	}
+	
+	/**
 	 * Returns the VM install associated with the container path, or <code>null</code>
 	 * if it does not exist.
 	 */
diff --git a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/LaunchingPlugin.java b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/LaunchingPlugin.java
index c26abac..5dd9665 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/LaunchingPlugin.java
+++ b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/LaunchingPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -272,7 +272,9 @@ public class LaunchingPlugin extends Plugin implements Preferences.IPropertyChan
 			monitor.worked(1);
 														
 			// re-bind all container entries
-			for (int i = 0; i < projects.length; i++) {
+			int length = projects.length;
+			Map projectsMap = new HashMap();
+			for (int i = 0; i < length; i++) {
 				IJavaProject project = projects[i];
 				IClasspathEntry[] entries = project.getRawClasspath();
 				boolean replace = false;
@@ -292,10 +294,14 @@ public class LaunchingPlugin extends Plugin implements Preferences.IPropertyChan
 										newBinding = renamed;
 									}
 								}
-								JREContainerInitializer initializer = new JREContainerInitializer();
 								if (newBinding == null){
 									// re-bind old path
-									initializer.initialize(reference, project);
+									// @see bug 310789 - batch updates by common container paths
+									List projectsList = (List) projectsMap.get(reference);
+									if (projectsList == null) {
+										projectsMap.put(reference, projectsList = new ArrayList(length));
+									}
+									projectsList.add(project);
 								} else {
 									// replace old class path entry with a new one
 									IClasspathEntry newEntry = JavaCore.newContainerEntry(newBinding, entry.isExported());
@@ -313,7 +319,16 @@ public class LaunchingPlugin extends Plugin implements Preferences.IPropertyChan
 				}
 				monitor.worked(1);
 			}
-
+			Iterator references = projectsMap.keySet().iterator();
+			while (references.hasNext()) {
+				IPath reference = (IPath) references.next();
+				List projectsList = (List) projectsMap.get(reference);
+				IJavaProject[] referenceProjects = new IJavaProject[projectsList.size()];
+				projectsList.toArray(referenceProjects);
+				// re-bind old path
+				JREContainerInitializer initializer = new JREContainerInitializer();
+				initializer.initialize(reference, referenceProjects);
+			}
 		}
 
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironmentAnalyzer.java b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironmentAnalyzer.java
index a638c5b..5c5ed8e 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironmentAnalyzer.java
+++ b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironmentAnalyzer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
index 14772c7..7aaaef5 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
+++ b/eclipse/plugins/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -2716,7 +2716,8 @@ public final class JavaRuntime {
             	} else if (javaVersion.startsWith(JavaCore.VERSION_1_6)) {
             		compliance = JavaCore.VERSION_1_6;
             	} else if (javaVersion.startsWith(JavaCore.VERSION_1_7)) {
-            		compliance = JavaCore.VERSION_1_7;
+            		// since 1.7 compliance options are not yet supported, default to 1.6 compliance when running on 1.7
+            		compliance = JavaCore.VERSION_1_6;
             	}
             	if (compliance != null) {
 	                Hashtable options= JavaCore.getOptions();
diff --git a/eclipse/plugins/org.eclipse.jdt.launching/plugin.properties b/eclipse/plugins/org.eclipse.jdt.launching/plugin.properties
index 951d875..5836465 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt.launching/plugin.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2000, 2008 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2000, 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.jdt.launching/plugin.xml b/eclipse/plugins/org.eclipse.jdt.launching/plugin.xml
index 1af9184..dc0b959 100644
--- a/eclipse/plugins/org.eclipse.jdt.launching/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.launching/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/JavadocHoverStyleSheet.css b/eclipse/plugins/org.eclipse.jdt.ui/JavadocHoverStyleSheet.css
index 549f9a1..9cea29c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/JavadocHoverStyleSheet.css
+++ b/eclipse/plugins/org.eclipse.jdt.ui/JavadocHoverStyleSheet.css
@@ -12,10 +12,10 @@ h4           { margin-top: 2em; margin-bottom: 0.3em; }
 h5           { margin-top: 0px; margin-bottom: 0px; }
 p            { margin-top: 1em; margin-bottom: 1em; }
 pre          { margin-left: 0.6em; }
-ul	         { margin-top: 0px; margin-bottom: 1em; }
+ul	         { margin-top: 0px; margin-bottom: 1em; margin-left: 1em; padding-left: 1em;}
 li	         { margin-top: 0px; margin-bottom: 0px; } 
 li p	     { margin-top: 0px; margin-bottom: 0px; } 
-ol	         { margin-top: 0px; margin-bottom: 1em; }
+ol	         { margin-top: 0px; margin-bottom: 1em; margin-left: 1em; padding-left: 1em; }
 dl	         { margin-top: 0px; margin-bottom: 1em; }
 dt	         { margin-top: 0px; margin-bottom: 0px; font-weight: bold; }
 dd	         { margin-top: 0px; margin-bottom: 0px; }
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/JavadocViewStyleSheet.css b/eclipse/plugins/org.eclipse.jdt.ui/JavadocViewStyleSheet.css
index 00a9aff..fdee9a8 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/JavadocViewStyleSheet.css
+++ b/eclipse/plugins/org.eclipse.jdt.ui/JavadocViewStyleSheet.css
@@ -15,10 +15,10 @@ h4           { margin-top: 2em; margin-bottom: 0.3em; }
 h5           { margin-top: 0px; margin-bottom: 0px; }
 p            { margin-top: 1em; margin-bottom: 1em; }
 pre          { margin-left: 0.6em; }
-ul	         { margin-top: 0px; margin-bottom: 1em; }
+ul	         { margin-top: 0px; margin-bottom: 1em; margin-left: 1em; padding-left: 1em; }
 li	         { margin-top: 0px; margin-bottom: 0px; } 
 li p	     { margin-top: 0px; margin-bottom: 0px; } 
-ol	         { margin-top: 0px; margin-bottom: 1em; }
+ol	         { margin-top: 0px; margin-bottom: 1em; margin-left: 1em; padding-left: 1em; }
 dl	         { margin-top: 0px; margin-bottom: 1em; }
 dt	         { margin-top: 0px; margin-bottom: 0px; font-weight: bold; }
 dd	         { margin-top: 0px; margin-bottom: 0px; }
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/AddUnimplementedConstructorsOperation.java b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/AddUnimplementedConstructorsOperation.java
index e71159e..441f17d 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/AddUnimplementedConstructorsOperation.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/AddUnimplementedConstructorsOperation.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/CodeGenerationMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/CodeGenerationMessages.properties
index abd25dc..889df53 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/CodeGenerationMessages.properties	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/CodeGenerationMessages.properties	
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2.java b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2.java
index ecd98e5..47419d3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/ScopeAnalyzer.java b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/ScopeAnalyzer.java
index f73accb..f6f6385 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/ScopeAnalyzer.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/dom/ScopeAnalyzer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties
index a5b662e..d7ce3a7 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties	
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2005, 2009 IBM Corporation and others.
+# Copyright (c) 2005, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -17,7 +17,7 @@ CleanUpRefactoring_could_not_retrive_profile=Could not retrieve profile for proj
 CleanUpRefactoring_ProcessingCompilationUnit_message=Processing compilation unit {0} of {1} ({2})
 CleanUpRefactoring_checkingPostConditions_message=Checking post conditions
 
-CleanUpRegistry_ErrorTabPage_description=An error occured while creating this page:\n{0}\n\nSee the error log for details.
+CleanUpRegistry_ErrorTabPage_description=An error occurred while creating this page:\n{0}\n\nSee the error log for details.
 CleanUpRegistry_ErrorTabPage_preview=No preview available
 CleanUpRegistry_UnknownInitializerKind_errorMessage=The cleanUpOptionsInitializer contributed by ''{0}'' specified a wrong clean up kind: ''{1}''.
 CleanUpRegistry_WrongKindForConfigurationUI_error=The cleanUpConfigurationUI ''{0}'' contributed by ''{1}'' specified a wrong clean up kind: ''{2}''.
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/template/java/JavaTemplateMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/template/java/JavaTemplateMessages.properties
index aca01b8..db5a5e1 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/template/java/JavaTemplateMessages.properties	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/template/java/JavaTemplateMessages.properties	
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -9,7 +9,6 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 
-
 ContextType_error_multiple_cursor_variables=Template has multiple cursor variables.
 
 # Java Only stuff
@@ -35,7 +34,7 @@ JavaContextType_variable_description_todo=Todo task tag
 
 JavaContext_error_title=Template Error
 JavaContext_error_message=Template file incomplete or has errors.  You can load the default templates from the template preferences page (Java>Templates).
-JavaContext_unexpected_error_message=An unexpected error occured while evaluating a template. See the error log for details.
+JavaContext_unexpected_error_message=An unexpected error occurred while evaluating a template. See the error log for details.
 
 CodeTemplateContextType_variable_description_todo=Todo task tag
 CodeTemplateContextType_variable_description_packdeclaration=Package declaration of the new type
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java
index 75ede7b..e0f57f5 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java	
@@ -63,6 +63,12 @@ import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
  * Utility methods for the Java Model.
  */
 public final class JavaModelUtil {
+	
+	/**
+	 * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=309163
+	 * @since 3.6
+	 */
+	public static final boolean HIDE_VERSION_1_7= true;
 
 	/**
 	 * Only use this suffix for creating new .java files.
@@ -749,7 +755,7 @@ public final class JavaModelUtil {
 		if (version == null) {
 			return defaultCompliance;
 		} else if (version.startsWith(JavaCore.VERSION_1_7)) {
-			return JavaCore.VERSION_1_7;
+			return HIDE_VERSION_1_7 ? JavaCore.VERSION_1_6 : JavaCore.VERSION_1_7;
 		} else if (version.startsWith(JavaCore.VERSION_1_6)) {
 			return JavaCore.VERSION_1_6;
 		} else if (version.startsWith(JavaCore.VERSION_1_5)) {
@@ -777,7 +783,7 @@ public final class JavaModelUtil {
 		// fallback:
 		String desc= executionEnvironment.getId();
 		if (desc.indexOf(JavaCore.VERSION_1_7) != -1) {
-			return JavaCore.VERSION_1_7;
+			return HIDE_VERSION_1_7 ? JavaCore.VERSION_1_6 : JavaCore.VERSION_1_7;
 		} else if (desc.indexOf(JavaCore.VERSION_1_6) != -1) {
 			return JavaCore.VERSION_1_6;
 		} else if (desc.indexOf(JavaCore.VERSION_1_5) != -1) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/Checks.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/Checks.java
index 814f1ee..5812453 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/Checks.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/Checks.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -70,6 +70,7 @@ import org.eclipse.jdt.internal.corext.util.Resources;
 
 import org.eclipse.jdt.ui.JavaElementLabels;
 
+import org.eclipse.jdt.internal.ui.text.correction.ASTResolving;
 import org.eclipse.jdt.internal.ui.viewsupport.BasicElementLabels;
 
 /**
@@ -89,6 +90,11 @@ public class Checks {
 	public static final int NOT_RVALUE_VOID= 2;
 
 	/**
+	 * @since 3.6
+	 */
+	public static final int IS_RVALUE_GUESSED= 3;
+
+	/**
 	 * Checks if method will have a constructor name after renaming.
 	 * @param method
 	 * @param newMethodName
@@ -838,9 +844,10 @@ public class Checks {
 	/**
 	 * @param e
 	 * @return int
-	 *          Checks.IS_RVALUE		if e is an rvalue
-	 *          Checks.NOT_RVALUE_VOID  if e is not an rvalue because its type is void
-	 *          Checks.NOT_RVALUE_MISC  if e is not an rvalue for some other reason
+	 *          Checks.IS_RVALUE			if e is an rvalue
+	 *          Checks.IS_RVALUE_GUESSED	if e is guessed as an rvalue 
+	 *          Checks.NOT_RVALUE_VOID  	if e is not an rvalue because its type is void
+	 *          Checks.NOT_RVALUE_MISC  	if e is not an rvalue for some other reason
 	 */
 	public static int checkExpressionIsRValue(Expression e) {
 		if(e instanceof Name) {
@@ -850,12 +857,17 @@ public class Checks {
 		}
 
 		ITypeBinding tb= e.resolveTypeBinding();
+		boolean guessingRequired= false;
+		if (tb == null) {
+			guessingRequired= true;
+			tb= ASTResolving.guessBindingForReference(e);
+		}
 		if (tb == null)
 			return NOT_RVALUE_MISC;
 		else if (tb.getName().equals("void")) //$NON-NLS-1$
 			return NOT_RVALUE_VOID;
 
-		return IS_RVALUE;
+		return guessingRequired ? IS_RVALUE_GUESSED : IS_RVALUE;
 	}
 
 	public static boolean isDeclaredIn(VariableDeclaration tempDeclaration, Class astNodeClass) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/TypeContextChecker.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/TypeContextChecker.java
index fe745db..e3ac639 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/TypeContextChecker.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/TypeContextChecker.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ConvertAnonymousToNestedRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ConvertAnonymousToNestedRefactoring.java
index f8ff8a4..f954143 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ConvertAnonymousToNestedRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ConvertAnonymousToNestedRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractConstantRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractConstantRefactoring.java
index a9debd7..b2ffc89 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractConstantRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractConstantRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,8 +65,8 @@ import org.eclipse.jdt.core.dom.Type;
 import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
 import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
 import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
-import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
 import org.eclipse.jdt.core.dom.rewrite.ImportRewrite.ImportRewriteContext;
+import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
 import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
 import org.eclipse.jdt.core.refactoring.IJavaRefactorings;
 import org.eclipse.jdt.core.refactoring.descriptors.ExtractConstantDescriptor;
@@ -242,7 +242,7 @@ public class ExtractConstantRefactoring extends Refactoring {
 			try {
 				Expression expression= getSelectedExpression().getAssociatedExpression();
 				if (expression != null) {
-					ITypeBinding binding= expression.resolveTypeBinding();
+					ITypeBinding binding= guessBindingForReference(expression);
 					fGuessedConstNames= StubUtility.getVariableNameSuggestions(NamingConventions.VK_STATIC_FINAL_FIELD, fCu.getJavaProject(), binding, expression, Arrays.asList(getExcludedVariableNames()));
 				}
 			} catch (JavaModelException e) {
@@ -348,6 +348,7 @@ public class ExtractConstantRefactoring extends Refactoring {
 				return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.ExtractConstantRefactoring_select_expression, null, Corext.getPluginId(), RefactoringStatusCodes.EXPRESSION_NOT_RVALUE, null);
 			case Checks.NOT_RVALUE_VOID:
 				return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.ExtractConstantRefactoring_no_void, null, Corext.getPluginId(), RefactoringStatusCodes.EXPRESSION_NOT_RVALUE_VOID, null);
+			case Checks.IS_RVALUE_GUESSED:
 			case Checks.IS_RVALUE:
 				return new RefactoringStatus();
 			default:
@@ -355,6 +356,14 @@ public class ExtractConstantRefactoring extends Refactoring {
 		}
 	}
 
+	private ITypeBinding guessBindingForReference(Expression expression) {
+		ITypeBinding binding= expression.resolveTypeBinding();
+		if (binding == null) {
+			binding= ASTResolving.guessBindingForReference(expression);
+		}
+		return binding;
+	}
+
 	//	 !!! -- same as in ExtractTempRefactoring
 	private boolean isLiteralNodeSelected() throws JavaModelException {
 		IExpressionFragment fragment= getSelectedExpression();
@@ -526,7 +535,7 @@ public class ExtractConstantRefactoring extends Refactoring {
 			LinkedProposalPositionGroup typeGroup= fLinkedProposalModel.getPositionGroup(KEY_TYPE, true);
 			typeGroup.addPosition(rewrite.track(type), true);
 
-			ITypeBinding typeBinding= fragment.getAssociatedExpression().resolveTypeBinding();
+			ITypeBinding typeBinding= guessBindingForReference(fragment.getAssociatedExpression());
 			if (typeBinding != null) {
 				ITypeBinding[] relaxingTypes= ASTResolving.getNarrowingTypes(ast, typeBinding);
 				for (int i= 0; i < relaxingTypes.length; i++) {
@@ -541,7 +550,7 @@ public class ExtractConstantRefactoring extends Refactoring {
 	private Type getConstantType() throws JavaModelException {
 		if (fConstantTypeCache == null) {
 			IExpressionFragment fragment= getSelectedExpression();
-			ITypeBinding typeBinding= fragment.getAssociatedExpression().resolveTypeBinding();
+			ITypeBinding typeBinding= guessBindingForReference(fragment.getAssociatedExpression());
 			AST ast= fCuRewrite.getAST();
 			typeBinding= Bindings.normalizeForDeclarationUse(typeBinding, ast);
 			ImportRewrite importRewrite= fCuRewrite.getImportRewrite();
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractTempRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractTempRefactoring.java
index d205dd0..c152795 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractTempRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractTempRefactoring.java	
@@ -458,6 +458,7 @@ public class ExtractTempRefactoring extends Refactoring {
 				return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.ExtractTempRefactoring_select_expression, null, Corext.getPluginId(), RefactoringStatusCodes.EXPRESSION_NOT_RVALUE, null);
 			case Checks.NOT_RVALUE_VOID:
 				return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.ExtractTempRefactoring_no_void, null, Corext.getPluginId(), RefactoringStatusCodes.EXPRESSION_NOT_RVALUE_VOID, null);
+			case Checks.IS_RVALUE_GUESSED:
 			case Checks.IS_RVALUE:
 				return new RefactoringStatus();
 			default:
@@ -466,6 +467,14 @@ public class ExtractTempRefactoring extends Refactoring {
 		}
 	}
 
+	private ITypeBinding guessBindingForReference(Expression expression) {
+		ITypeBinding binding= expression.resolveTypeBinding();
+		if (binding == null) {
+			binding= ASTResolving.guessBindingForReference(expression);
+		}
+		return binding;
+	}
+
 	public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException {
 		try {
 			pm.beginTask(RefactoringCoreMessages.ExtractTempRefactoring_checking_preconditions, 4);
@@ -906,7 +915,7 @@ public class ExtractTempRefactoring extends Refactoring {
 			try {
 				Expression expression= getSelectedExpression().getAssociatedExpression();
 				if (expression != null) {
-					ITypeBinding binding= expression.resolveTypeBinding();
+					ITypeBinding binding= guessBindingForReference(expression);
 					fGuessedTempNames= StubUtility.getVariableNameSuggestions(NamingConventions.VK_LOCAL, fCu.getJavaProject(), binding, expression, Arrays.asList(getExcludedVariableNames()));
 				}
 			} catch (JavaModelException e) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/IntroduceParameterRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/IntroduceParameterRefactoring.java
index 9e46c67..2894575 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/IntroduceParameterRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/IntroduceParameterRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -374,6 +374,7 @@ public class IntroduceParameterRefactoring extends Refactoring implements IDeleg
 	// !! +/- same as in ExtractConstantRefactoring & ExtractTempRefactoring
 	private RefactoringStatus checkExpressionFragmentIsRValue() {
 		switch(Checks.checkExpressionIsRValue(fSelectedExpression)) {
+			case Checks.IS_RVALUE_GUESSED:
 			case Checks.NOT_RVALUE_MISC:
 				return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.IntroduceParameterRefactoring_select, null, Corext.getPluginId(), RefactoringStatusCodes.EXPRESSION_NOT_RVALUE, null);
 			case Checks.NOT_RVALUE_VOID:
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ReplaceInvocationsRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ReplaceInvocationsRefactoring.java
index 3e5e6d7..a7d3f8d 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ReplaceInvocationsRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ReplaceInvocationsRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/nls/NLSHintHelper.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/nls/NLSHintHelper.java
index ba4ce91..57a808e 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/nls/NLSHintHelper.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/nls/NLSHintHelper.java	
@@ -94,15 +94,32 @@ public class NLSHintHelper {
 	 * @return the accessor class reference or <code>null</code> if this element is not a nls'ed entry
 	 */
 	public static AccessorClassReference getAccessorClassReference(CompilationUnit astRoot, IRegion region) {
+		return getAccessorClassReference(astRoot, region, false);
+	}
+
+	/**
+	 * Returns the accessor binding info or <code>null</code> if this element is not a nls'ed entry
+	 * 
+	 * @param astRoot the ast root
+	 * @param region the text region
+	 * @param usedFullyQualifiedName boolean flag to indicate that fully qualified name is used to
+	 *            refer a NLS key string constant
+	 * @return the accessor class reference or <code>null</code> if this element is not a nls'ed
+	 *         entry
+	 */
+	public static AccessorClassReference getAccessorClassReference(CompilationUnit astRoot, IRegion region, boolean usedFullyQualifiedName) {
 		ASTNode nlsStringLiteral= NodeFinder.perform(astRoot, region.getOffset(), region.getLength());
 		if (nlsStringLiteral == null)
 			return null; // not found
 
 		ASTNode parent= nlsStringLiteral.getParent();
+		if (usedFullyQualifiedName) {
+			parent= parent.getParent();
+		}
 
 		ITypeBinding accessorBinding= null;
 
-		if (nlsStringLiteral instanceof SimpleName && nlsStringLiteral.getParent() instanceof QualifiedName) {
+		if (!usedFullyQualifiedName && nlsStringLiteral instanceof SimpleName && nlsStringLiteral.getLocationInParent() == QualifiedName.NAME_PROPERTY) {
 			SimpleName name= (SimpleName)nlsStringLiteral;
 
 			IBinding binding= name.resolveBinding();
@@ -118,7 +135,7 @@ public class NLSHintHelper {
 			if (parent instanceof MethodInvocation) {
 				MethodInvocation methodInvocation= (MethodInvocation) parent;
 				List args= methodInvocation.arguments();
-				if (args.indexOf(nlsStringLiteral) != 0 && args.size() != 1) {
+				if (args.size() != 1 && args.indexOf(nlsStringLiteral) != 0) {
 					return null; // must be the only argument in lookup method
 				}
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/refactoring.properties b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/refactoring.properties
index b1f1769..be3b8c5 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/refactoring.properties	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/refactoring.properties	
@@ -1189,7 +1189,7 @@ JavaDeleteProcessor_description_singular=Delete element
 JavaDeleteProcessor_description_plural=Delete elements
 JavaDeleteProcessor_project_pattern=project ''{0}''
 JavaDeleteProcessor_workspace=workspace
-JavaDeleteProcessor_header_singular=Delete element from {1}
+JavaDeleteProcessor_header_singular=Delete element from {0}
 JavaDeleteProcessor_header_plural=Delete {0} elements from {1}
 JavaDeleteProcessor_delete_subpackages=Delete subpackages
 JavaDeleteProcessor_delete_accessors=Delete getters and setters
@@ -1320,7 +1320,7 @@ IntroduceIndirectionRefactoring_call_warning_static_expression_access=The target
 IntroduceIndirectionRefactoring_group_description_replace_call=Replace method invocation
 IntroduceIndirectionRefactoring_call_warning_declaring_type_not_found=The declaring type of a method invocation in ''{0}'' in type ''{1}'' could not be found. This occurrence will not be updated.
 IntroduceIndirectionRefactoring_call_warning_anonymous_cannot_qualify=The declaring type of a method invocation in ''{0}'' in type ''{1}'' is anonymous and therefore cannot be qualified. This occurrence will not be updated.
-IntroduceIndirectionRefactoring_cannot_update_binary_target_visibility=A visibility update is needed for the member ''{0}'' or an enclosing type, but the member is not writeable. Refactoring will introduce compile errors.
+IntroduceIndirectionRefactoring_cannot_update_binary_target_visibility=A visibility update is needed for the member ''{0}'' or an enclosing type, but the member is not writable. Refactoring will introduce compile errors.
 IntroduceIndirectionRefactoring_cannot_run_without_intermediary_type=Cannot run Introduce Indirection without a target class.
 
 #--- Infer Type Arguments
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/RefactoringAnalyzeUtil.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/RefactoringAnalyzeUtil.java
index 1186b29..38e2f46 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/RefactoringAnalyzeUtil.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/RefactoringAnalyzeUtil.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/reorg/JavaDeleteProcessor.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/reorg/JavaDeleteProcessor.java
index f342844..5c99dc5 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/reorg/JavaDeleteProcessor.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/reorg/JavaDeleteProcessor.java	
@@ -618,8 +618,8 @@ public final class JavaDeleteProcessor extends DeleteProcessor {
 			final IProject resource= getSingleProject();
 			final String project= resource != null ? resource.getName() : null;
 			final String source= project != null ? Messages.format(RefactoringCoreMessages.JavaDeleteProcessor_project_pattern, BasicElementLabels.getJavaElementName(project)) : RefactoringCoreMessages.JavaDeleteProcessor_workspace;
-			final String header= fElements.length == 1 ? RefactoringCoreMessages.JavaDeleteProcessor_header_singular : Messages.format(RefactoringCoreMessages.JavaDeleteProcessor_header_plural,
-					new String[] { String.valueOf(fElements.length), source });
+			final String header= fElements.length == 1 ? Messages.format(RefactoringCoreMessages.JavaDeleteProcessor_header_singular, source) : Messages.format(
+					RefactoringCoreMessages.JavaDeleteProcessor_header_plural, new String[] { String.valueOf(fElements.length), source });
 			int flags= JavaRefactoringDescriptor.JAR_MIGRATION | JavaRefactoringDescriptor.JAR_REFACTORING | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE;
 			final JDTRefactoringDescriptorComment comment= new JDTRefactoringDescriptorComment(project, this, header);
 			if (fDeleteSubPackages)
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/sef/AccessAnalyzer.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/sef/AccessAnalyzer.java
index 985d984..ea5f3b7 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/sef/AccessAnalyzer.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/sef/AccessAnalyzer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ASTNodeSearchUtil.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ASTNodeSearchUtil.java
index 1fb3b1d..1992dd3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ASTNodeSearchUtil.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ASTNodeSearchUtil.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ChangeTypeRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ChangeTypeRefactoring.java
index 20af587..7b901fb 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ChangeTypeRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ChangeTypeRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractClassRefactoring.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractClassRefactoring.java
index 204b627..fb80b42 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractClassRefactoring.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractClassRefactoring.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/IntroduceParameterObjectProcessor.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/IntroduceParameterObjectProcessor.java
index 6beaaa2..f95c492 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/IntroduceParameterObjectProcessor.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/IntroduceParameterObjectProcessor.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/constraints/SuperTypeRefactoringProcessor.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/constraints/SuperTypeRefactoringProcessor.java
index 4a426e1..c01c9ae 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/constraints/SuperTypeRefactoringProcessor.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/constraints/SuperTypeRefactoringProcessor.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/CompilationUnitRange.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/CompilationUnitRange.java
index f32db6f..10fb6d0 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/CompilationUnitRange.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/CompilationUnitRange.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/ConstraintCollector.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/ConstraintCollector.java
index 93d04b4..378c831 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/ConstraintCollector.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/ConstraintCollector.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,8 +48,10 @@ import org.eclipse.jdt.core.dom.Initializer;
 import org.eclipse.jdt.core.dom.InstanceofExpression;
 import org.eclipse.jdt.core.dom.Javadoc;
 import org.eclipse.jdt.core.dom.LabeledStatement;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
 import org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.eclipse.jdt.core.dom.MethodInvocation;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
 import org.eclipse.jdt.core.dom.NullLiteral;
 import org.eclipse.jdt.core.dom.NumberLiteral;
 import org.eclipse.jdt.core.dom.PackageDeclaration;
@@ -61,6 +63,7 @@ import org.eclipse.jdt.core.dom.QualifiedName;
 import org.eclipse.jdt.core.dom.ReturnStatement;
 import org.eclipse.jdt.core.dom.SimpleName;
 import org.eclipse.jdt.core.dom.SimpleType;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
 import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
 import org.eclipse.jdt.core.dom.StringLiteral;
 import org.eclipse.jdt.core.dom.SuperConstructorInvocation;
@@ -359,6 +362,12 @@ public final class ConstraintCollector extends ASTVisitor {
 	}
 
 	/* (non-Javadoc)
+	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.MarkerAnnotation)
+	 */
+	public boolean visit(MarkerAnnotation node) {
+		return false;
+	}
+	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.MethodDeclaration)
 	 */
 	public boolean visit(MethodDeclaration node) {
@@ -373,7 +382,12 @@ public final class ConstraintCollector extends ASTVisitor {
 		add(fCreator.create(node));
 		return true;
 	}
-
+	/* (non-Javadoc)
+	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.NormalAnnotation)
+	 */
+	public boolean visit(NormalAnnotation node) {
+		return false;
+	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.NullLiteral)
 	 */
@@ -463,6 +477,13 @@ public final class ConstraintCollector extends ASTVisitor {
 	}
 
 	/* (non-Javadoc)
+	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.SingleMemberAnnotation)
+	 */
+	public boolean visit(SingleMemberAnnotation node) {
+		return false;
+	}
+
+	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.SingleVariableDeclaration)
 	 */
 	public boolean visit(SingleVariableDeclaration node) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/SelectionAwareSourceRangeComputer.java b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/SelectionAwareSourceRangeComputer.java
index d987a88..969ed82 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/SelectionAwareSourceRangeComputer.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/SelectionAwareSourceRangeComputer.java	
@@ -66,7 +66,8 @@ public class SelectionAwareSourceRangeComputer extends TargetSourceRangeComputer
 		fRanges.put(fSelectedNodes[last], super.computeSourceRange(fSelectedNodes[last]));
 
 		IScanner scanner= ToolFactory.createScanner(true, false, false, false);
-		scanner.setSource(fDocumentPortionToScan.toCharArray());
+		char[] source= fDocumentPortionToScan.toCharArray();
+		scanner.setSource(source);
 		fDocumentPortionToScan= null; // initializeRanges() is only called once
 
 		TokenScanner tokenizer= new TokenScanner(scanner);
@@ -91,7 +92,7 @@ public class SelectionAwareSourceRangeComputer extends TargetSourceRangeComputer
 		}
 		if (token == ITerminalSymbols.TokenNameCOMMENT_LINE) {
 			int index= pos - 1;
-			while (index >= 0 && IndentManipulation.isLineDelimiterChar(fDocumentPortionToScan.charAt(index))) {
+			while (index >= 0 && IndentManipulation.isLineDelimiterChar(source[index])) {
 				pos--;
 				index--;
 			}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_GB.dictionary b/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_GB.dictionary
index da97a1e..f9f6206 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_GB.dictionary
+++ b/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_GB.dictionary
@@ -49819,3 +49819,5 @@ Sat
 Sun
 initially
 I
+formatter:off
+formatter:on
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_US.dictionary b/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_US.dictionary
index 111164d..510edb0 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_US.dictionary
+++ b/eclipse/plugins/org.eclipse.jdt.ui/dictionaries/en_US.dictionary
@@ -49753,3 +49753,5 @@ Sat
 Sun
 initially
 I
+formatter:off
+formatter:on
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/dtool16/newjworkingSet_wiz.gif b/eclipse/plugins/org.eclipse.jdt.ui/icons/full/dtool16/newjworkingSet_wiz.gif
deleted file mode 100644
index c00d7c1..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/dtool16/newjworkingSet_wiz.gif and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/etool16/newjworkingSet_wiz.gif b/eclipse/plugins/org.eclipse.jdt.ui/icons/full/etool16/newjworkingSet_wiz.gif
index eb1f1c7..e49d4a8 100644
Binary files a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/etool16/newjworkingSet_wiz.gif and b/eclipse/plugins/org.eclipse.jdt.ui/icons/full/etool16/newjworkingSet_wiz.gif differ
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/icons/full/ovr16/error_co_project.gif b/eclipse/plugins/org.eclipse.jdt.ui/icons/full/ovr16/error_co_buildpath.gif
similarity index 100%
rename from eclipse/plugins/org.eclipse.jdt.ui/icons/full/ovr16/error_co_project.gif
rename to eclipse/plugins/org.eclipse.jdt.ui/icons/full/ovr16/error_co_buildpath.gif
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/plugin.properties b/eclipse/plugins/org.eclipse.jdt.ui/plugin.properties
index 1769af1..b056a7d 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/plugin.properties
@@ -122,6 +122,8 @@ preferenceKeywords.propertieseditor=Java editor colors properties nls externaliz
 preferenceKeywords.saveparticipant=Java editor save cleanup participants organize imports format
 preferenceKeywords.classpathcontainer=Java classpath container buildpath jre
 
+preferenceKeywords.wizards.java=Java
+preferenceKeywords.jarpackager=Java archive application
 
 preferenceTransfer.java.compiler.name= Java Compiler Preferences
 preferenceTransfer.java.compiler.description= Java > Compiler preferences.
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/plugin.xml b/eclipse/plugins/org.eclipse.jdt.ui/plugin.xml
index 398f861..bd8f3e3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.jdt.ui/plugin.xml
@@ -617,6 +617,7 @@
          <description>
             %NewJavaProject.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewJavaPackage.label"
@@ -627,6 +628,7 @@
          <description>
             %NewJavaPackage.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewJavaClass.label"
@@ -639,6 +641,7 @@
          <description>
             %NewJavaClass.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewJavaInterface.label"
@@ -651,6 +654,7 @@
          <description>
             %NewJavaInterface.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewSourceFolderCreationWizard.label"
@@ -661,6 +665,7 @@
          <description>
             %NewSourceFolderCreationWizard.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewEnumType.label"
@@ -673,6 +678,7 @@
          <description>
             %NewEnumType.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewAnnotationType.label"
@@ -685,10 +691,11 @@
          <description>
             %NewAnnotationType.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>
       <wizard
             name="%NewJavaWorkingSetWizard.label"
-            icon="$nl$/icons/full/obj16/jworkingSet_obj.gif"
+            icon="$nl$/icons/full/etool16/newjworkingSet_wiz.gif"
             category="org.eclipse.jdt.ui.java"
             class="org.eclipse.jdt.internal.ui.wizards.NewJavaWorkingSetWizard"
             preferredPerspectives="org.eclipse.jdt.ui.JavaPerspective,org.eclipse.jdt.ui.JavaBrowsingPerspective,org.eclipse.jdt.ui.JavaHierarchyPerspective"
@@ -696,6 +703,7 @@
          <description>
             %NewJavaWorkingSetWizard.description
          </description>
+         <keywordReference id="org.eclipse.jdt.ui.wizards.java"/>
       </wizard>      
       
    </extension>
@@ -1687,6 +1695,13 @@
      <keyword
             label="%preferenceKeywords.classpathcontainer"
             id="org.eclipse.jdt.ui.classpathcontainer"/>
+            
+     <keyword
+            label="%preferenceKeywords.wizards.java"
+            id="org.eclipse.jdt.ui.wizards.java"/>
+     <keyword
+            label="%preferenceKeywords.jarpackager"
+            id="org.eclipse.jdt.ui.jarpackager"/>
    </extension>  
 <!-- =========================================================================== -->
 <!-- Work in Progress                                                            -->
@@ -2039,6 +2054,7 @@
          <selection
                class="org.eclipse.core.resources.IResource">
          </selection>
+         <keywordReference id="org.eclipse.jdt.ui.jarpackager"/>
       </wizard>
       <wizard
             name="%fatJarExportWizard.label"
@@ -2052,6 +2068,7 @@
          <selection
                class="org.eclipse.core.resources.IResource">
          </selection>
+         <keywordReference id="org.eclipse.jdt.ui.jarpackager"/>
       </wizard>
    </extension>
    <extension
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/templates/default-codetemplates.xml b/eclipse/plugins/org.eclipse.jdt.ui/templates/default-codetemplates.xml
index 5121ec6..22faa1f 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/templates/default-codetemplates.xml
+++ b/eclipse/plugins/org.eclipse.jdt.ui/templates/default-codetemplates.xml
@@ -2,7 +2,7 @@
 
 <!--
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultRequestor.java b/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultRequestor.java
index 81dd93e..e1d72ea 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultRequestor.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultRequestor.java	
@@ -267,7 +267,15 @@ class NLSSearchResultRequestor extends SearchRequestor {
 
 				tokenStart= scanner.getCurrentTokenStartPosition();
 				tokenEnd= scanner.getCurrentTokenEndPosition();
-				if (scanner.getNextToken() != ITerminalSymbols.TokenNameRPAREN)
+				int token;
+				while ((token= scanner.getNextToken()) == ITerminalSymbols.TokenNameDOT) {
+					if ((nextToken= scanner.getNextToken()) != ITerminalSymbols.TokenNameIdentifier) {
+							return null;
+					}
+					tokenStart= scanner.getCurrentTokenStartPosition();
+					tokenEnd= scanner.getCurrentTokenEndPosition();
+				}
+				if (token != ITerminalSymbols.TokenNameRPAREN)
 					return null;
 				
 				if (nextToken == ITerminalSymbols.TokenNameStringLiteral) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java
index 496ad97..84bd310 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java	
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java	
@@ -113,11 +113,11 @@ import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.Javadoc;
 import org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.eclipse.jdt.core.dom.Modifier;
+import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
 import org.eclipse.jdt.core.dom.PackageDeclaration;
 import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
 import org.eclipse.jdt.core.dom.Statement;
 import org.eclipse.jdt.core.dom.TypeDeclaration;
-import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
 import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
 import org.eclipse.jdt.core.dom.rewrite.ITrackedNodePosition;
 import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
@@ -659,7 +659,8 @@ public class PasteAction extends SelectionDispatchAction{
 				} else if (javaElements.length > 0) {
 					resource= javaElements[0].getResource();
 				}
-				new ApplyPatchOperation(null, fPatchStorage, resource, new CompareConfiguration()).openWizard();
+				// XXX: This will be fixed in 3.7, see https://bugs.eclipse.org/309803
+				new org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchOperation(null, fPatchStorage, resource, new CompareConfiguration()).openWizard();
 				return;
 			}
 			
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
index adaf78d..07a15f3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,7 +41,7 @@ public class EditorInputAdapterFactory implements IAdapterFactory {
 
 	public Object getAdapter(Object element, Class key) {
 		updateLazyLoadedAdapters();
-		if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key))
+		if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key) && element instanceof IEditorInput && JavaUI.getEditorInputJavaElement((IEditorInput)element) != null)
 			return fSearchPageScoreComputer;
 
 		if (IJavaElement.class.equals(key) && element instanceof IEditorInput) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaPluginImages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaPluginImages.java
index 73b58d6..a4f0eb9 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaPluginImages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaPluginImages.java
@@ -377,7 +377,7 @@ public class JavaPluginImages {
 	public static final ImageDescriptor DESC_OVR_RUN= createUnManagedCached(T_OVR, "run_co.gif"); 							//$NON-NLS-1$
 	public static final ImageDescriptor DESC_OVR_WARNING= createUnManagedCached(T_OVR, "warning_co.gif"); 					//$NON-NLS-1$
 	public static final ImageDescriptor DESC_OVR_ERROR= createUnManagedCached(T_OVR, "error_co.gif"); 						//$NON-NLS-1$
-	public static final ImageDescriptor DESC_OVR_PROJECT_ERROR= createUnManagedCached(T_OVR, "error_co_project.gif"); //$NON-NLS-1$
+	public static final ImageDescriptor DESC_OVR_BUILDPATH_ERROR= createUnManagedCached(T_OVR, "error_co_buildpath.gif"); //$NON-NLS-1$
 	public static final ImageDescriptor DESC_OVR_OVERRIDES= createUnManagedCached(T_OVR, "over_co.gif");  					//$NON-NLS-1$
 	public static final ImageDescriptor DESC_OVR_IMPLEMENTS= createUnManagedCached(T_OVR, "implm_co.gif");  				//$NON-NLS-1$
 	public static final ImageDescriptor DESC_OVR_SYNCH_AND_OVERRIDES= createUnManagedCached(T_OVR, "sync_over.gif");  	//$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/CompareMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/CompareMessages.properties
index d5ee3cc..218f111 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/CompareMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/CompareMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
 ###############################################################################
 
 #
-# Title of Jar file structure ceator (shown in diff structure viewer)
+# Title of Jar file structure creator (shown in diff structure viewer)
 #
 JarStructureCreator_name= Jar Archive Compare
 
@@ -25,7 +25,7 @@ JavaMergeViewer_title= Java Source Compare
 PropertiesFileMergeViewer_title= Java Properties Compare
 
 #
-# Title of Java structure ceator (shown in diff structure viewer)
+# Title of Java structure creator (shown in diff structure viewer)
 #
 JavaStructureViewer_title= Java Structure Compare
 JavaNode_compilationUnit= Compilation Unit
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/JavaHistoryActionImpl.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/JavaHistoryActionImpl.java
index abcb9e6..746f2ae 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/JavaHistoryActionImpl.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/JavaHistoryActionImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/InnerClassFilesFilter.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/InnerClassFilesFilter.java
index 937757b..618beb3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/InnerClassFilesFilter.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/InnerClassFilesFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@ import org.eclipse.jface.viewers.ViewerFilter;
 
 import org.eclipse.jdt.core.IClassFile;
 
+
 public class InnerClassFilesFilter extends ViewerFilter {
 
 	public InnerClassFilesFilter() {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/JavadocView.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/JavadocView.java
index fedc1fe..615e5eb 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/JavadocView.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/JavadocView.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -76,6 +76,7 @@ import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IDocumentExtension3;
 import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.text.ITypedRegion;
+import org.eclipse.jface.text.Region;
 import org.eclipse.jface.text.TextPresentation;
 import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.text.TextUtilities;
@@ -103,12 +104,15 @@ import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.ILocalVariable;
 import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IOpenable;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.ITypeRoot;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.SourceRange;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ASTParser;
@@ -893,6 +897,7 @@ public class JavadocView extends AbstractInfoView {
 	 * @see AbstractInfoView#computeInput(Object)
 	 */
 	protected Object computeInput(Object input) {
+		//TODO: never used?
 		if (getControl() == null || ! (input instanceof IJavaElement))
 			return null;
 
@@ -1062,6 +1067,19 @@ public class JavadocView extends AbstractInfoView {
 				}
 
 				HTMLPrinter.addSmallHeader(buffer, getInfoText(member, constantValue, true));
+
+				try {
+					ISourceRange nameRange= ((IMember)curr).getNameRange();
+					if (SourceRange.isAvailable(nameRange)) {
+						ITypeRoot typeRoot= ((IMember)curr).getTypeRoot();
+						Region hoverRegion= new Region(nameRange.getOffset(), nameRange.getLength());
+						buffer.append("<br>"); //$NON-NLS-1$
+						JavadocHover.addAnnotations(buffer, curr, typeRoot, hoverRegion);
+					}
+				} catch (JavaModelException e) {
+					// no annotations this time...
+				}
+				
 				Reader reader;
 				try {
 					String content= JavadocContentAccess2.getHTMLContent(member, true);
@@ -1095,8 +1113,16 @@ public class JavadocView extends AbstractInfoView {
 				if (reader != null) {
 					HTMLPrinter.addParagraph(buffer, reader);
 				}
+
 			} else if (curr.getElementType() == IJavaElement.LOCAL_VARIABLE || curr.getElementType() == IJavaElement.TYPE_PARAMETER) {
 				HTMLPrinter.addSmallHeader(buffer, getInfoText(curr, null, true));
+				if (curr instanceof ILocalVariable) {
+					ISourceRange nameRange= ((ILocalVariable) curr).getNameRange();
+					ITypeRoot typeRoot= ((IMember) curr.getParent()).getTypeRoot();
+					Region hoverRegion= new Region(nameRange.getOffset(), nameRange.getLength());
+					buffer.append("<br>"); //$NON-NLS-1$
+					JavadocHover.addAnnotations(buffer, curr, typeRoot, hoverRegion);
+				}
 			}
 		}
 
@@ -1137,7 +1163,7 @@ public class JavadocView extends AbstractInfoView {
 		}
 
 		StringBuffer buf= new StringBuffer();
-		JavadocHover.addImageAndLabel(buf, imageName, 16, 16, 8, 5, label.toString(), 22, 0);
+		JavadocHover.addImageAndLabel(buf, imageName, 16, 16, label.toString(), 20, 2);
 		return buf.toString();
 	}
 
@@ -1288,6 +1314,8 @@ public class JavadocView extends AbstractInfoView {
 					return null;
 
 				VariableDeclarationFragment fieldDecl= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(constantField, ast);
+				if (fieldDecl == null)
+					return null;
 				Expression initializer= fieldDecl.getInitializer();
 				if (initializer == null)
 					return null;
@@ -1491,7 +1519,7 @@ public class JavadocView extends AbstractInfoView {
 			 * @see org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks.ILinkHandler#handleExternalLink(java.net.URL, org.eclipse.swt.widgets.Display)
 			 */
 			public boolean handleExternalLink(final URL url, Display display) {
-				if (fCurrent == null || !url.equals(fCurrent.getInputElement())) {
+				if (fCurrent == null || (fCurrent.getInputElement() instanceof URL && !url.toExternalForm().equals(((URL) fCurrent.getInputElement()).toExternalForm()))) {
 					fCurrent= new URLBrowserInput(fCurrent, url);
 
 					if (fBackAction != null) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackagerfat/FatJarPackagerMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackagerfat/FatJarPackagerMessages.properties
index 0a9a48c..3270cde 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackagerfat/FatJarPackagerMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackagerfat/FatJarPackagerMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
+# Copyright (c) 2007, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@ JarPackageWizardPage_title= Runnable JAR File Specification
 
 FatJarBuilder_error_readingArchiveFile=Could not read archive ''{0}''. Reason: {1}
 
-FatJarPackageWizard_JarExportProblems_message=Jar export finished with problems. See details for additional infos.
+FatJarPackageWizard_JarExportProblems_message=Jar export finished with problems. See details for additional information.
 
 FatJarPackageWizardPage_description=Select a 'Java Application' launch configuration to use to create a runnable JAR.
 FatJarPackageWizardPage_destinationGroupTitle=Export &destination:
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ASTProvider.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ASTProvider.java
index 12337b1..10f5972 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ASTProvider.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ASTProvider.java
@@ -314,8 +314,8 @@ public final class ASTProvider {
 			System.out.println(getThreadName() + " - " + DEBUG_PREFIX + "about to reconcile: " + toString(javaElement)); //$NON-NLS-1$ //$NON-NLS-2$
 
 		synchronized (fReconcileLock) {
-			fIsReconciling= true;
 			fReconcilingJavaElement= javaElement;
+			fIsReconciling= true;
 		}
 		cache(null, javaElement);
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlinkDetector.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlinkDetector.java
index 2bd8f40..d613268 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlinkDetector.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlinkDetector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaDropAdapterAssistant.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaDropAdapterAssistant.java
index 5c5aadf..2a7ec57 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaDropAdapterAssistant.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaDropAdapterAssistant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,13 +40,13 @@ import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 
+import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgPolicy.ICopyPolicy;
+import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgPolicy.IMovePolicy;
 import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaCopyProcessor;
 import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaMoveProcessor;
 import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgDestinationFactory;
 import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgPolicyFactory;
 import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils;
-import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgPolicy.ICopyPolicy;
-import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgPolicy.IMovePolicy;
 
 import org.eclipse.jdt.internal.ui.packageview.PackagesMessages;
 import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages;
@@ -63,10 +63,11 @@ public class JavaDropAdapterAssistant extends CommonDropAdapterAssistant {
 	private int fCanCopyElements;
 
 	public IStatus handleDrop(CommonDropAdapter dropAdapter, DropTargetEvent dropTargetEvent, Object target) {
+		int currentOperation= dropAdapter.getCurrentOperation();
 		if (LocalSelectionTransfer.getInstance().isSupportedType(dropAdapter.getCurrentTransfer())) {
 			try {
 				target= getActualTarget(target);
-				switch (dropAdapter.getCurrentOperation()) {
+				switch (currentOperation) {
 					case DND.DROP_MOVE :
 						handleDropMove(target);
 						dropTargetEvent.detail= DND.DROP_NONE;
@@ -92,7 +93,7 @@ public class JavaDropAdapterAssistant extends CommonDropAdapterAssistant {
 
 				getShell().forceActive();
 				final Object data= FileTransfer.getInstance().nativeToJava(dropAdapter.getCurrentTransfer());
-				new CopyFilesAndFoldersOperation(getShell()).copyFiles((String[]) data, targetContainer);
+				new CopyFilesAndFoldersOperation(getShell()).copyOrLinkFiles((String[])data, targetContainer, currentOperation);
 			} catch (JavaModelException e) {
 				String title = PackagesMessages.DropAdapter_errorTitle;
 				String message = PackagesMessages.DropAdapter_errorMessage;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
index b30984b..9ebf8ef 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -324,6 +324,13 @@ public class JavaNavigatorContentProvider extends
 
 
 	protected void postRefresh(final List toRefresh, final boolean updateLabels, Collection runnables) {
+		int size= toRefresh.size();
+		for (int i= 0; i < size; i++) {
+			Object element= toRefresh.get(i);
+			if (element instanceof IJavaProject) {
+				toRefresh.set(i, ((IJavaProject) element).getProject());
+			}
+		}
 		for (Iterator iter = toRefresh.iterator(); iter.hasNext();) {
 			Object element = iter.next();
 			if (element instanceof IJavaModel) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDropAdapter.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDropAdapter.java
index 2f2552b..1673b80 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDropAdapter.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDropAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -109,9 +109,9 @@ public class FileTransferDropAdapter extends JdtViewerDropAdapter implements Tra
 	 */
 	public boolean performDrop(final Object data) {
 		try {
-			int operation= getCurrentOperation();
+			final int currentOperation= getCurrentOperation();
 
-			if (data == null || !(data instanceof String[]) || operation != DND.DROP_COPY)
+			if (data == null || !(data instanceof String[]) || currentOperation != DND.DROP_COPY)
 				return false;
 
 			final IContainer target= getActualTarget(getCurrentTarget());
@@ -124,7 +124,7 @@ public class FileTransferDropAdapter extends JdtViewerDropAdapter implements Tra
 			Display.getCurrent().asyncExec(new Runnable() {
 				public void run() {
 					getShell().forceActive();
-					new CopyFilesAndFoldersOperation(getShell()).copyFiles((String[]) data, target);
+					new CopyFilesAndFoldersOperation(getShell()).copyOrLinkFiles((String[])data, target, currentOperation);
 				}
 			});
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java
index 3e5421c..099b837 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -641,11 +641,10 @@ public class PackageExplorerContentProvider extends StandardJavaElementContentPr
 					postRefresh(parent, PARENT, element, runnables);
 				return true;
 				
-			} else if (element instanceof IPackageFragmentRoot
-					&& ((IPackageFragmentRoot)element).getKind() != IPackageFragmentRoot.K_SOURCE) {
+			} else if (element instanceof IPackageFragmentRoot) {
 				// libs and class folders can show up twice (in library container and as resource at original location)
 				IResource resource= element.getResource();
-				if (resource != null)
+				if (resource != null && !resource.exists())
 					postRemove(resource, runnables);
 			}
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerProblemsDecorator.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerProblemsDecorator.java
index 29e5e66..7d16763 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerProblemsDecorator.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerProblemsDecorator.java
@@ -26,10 +26,10 @@ public class PackageExplorerProblemsDecorator extends TreeHierarchyLayoutProblem
 	 * <p>
 	 * TODO: Make API in 3.7, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=308672
 	 * 
-	 * @see JavaElementImageDescriptor#PROJECT_ERROR
+	 * @see JavaElementImageDescriptor#BUILDPATH_ERROR
 	 * @since 3.6
 	 */
-	public final static int PROJECT_ERROR= 0x2000;
+	public final static int BUILDPATH_ERROR= 0x2000;
 
 	public PackageExplorerProblemsDecorator() {
 		super();
@@ -49,8 +49,8 @@ public class PackageExplorerProblemsDecorator extends TreeHierarchyLayoutProblem
 		for (int i= 0; i < elements.length; i++) {
 			IAdaptable element= elements[i];
 			int flags= super.computeAdornmentFlags(element);
-			if ((flags & PackageExplorerProblemsDecorator.PROJECT_ERROR) != 0)
-				return PackageExplorerProblemsDecorator.PROJECT_ERROR;
+			if ((flags & PackageExplorerProblemsDecorator.BUILDPATH_ERROR) != 0)
+				return PackageExplorerProblemsDecorator.BUILDPATH_ERROR;
 			result|= flags;
 		}
 		if ((result & JavaElementImageDescriptor.ERROR) != 0)
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/BulletListBlock.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/BulletListBlock.java
index 00859b4..89fb9b9 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/BulletListBlock.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/BulletListBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -50,7 +50,9 @@ public class BulletListBlock extends Composite {
 		fStyledText.setEditable(false);
 		Cursor arrowCursor= fStyledText.getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
 		fStyledText.setCursor(arrowCursor);
-		fStyledText.setCaret(null);
+
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263
+//		fStyledText.setCaret(null);
 
 		final GridData data= new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
 		fStyledText.setLayoutData(data);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeTemplateBlock.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeTemplateBlock.java
index 90e5949..086da3e 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeTemplateBlock.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeTemplateBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -395,7 +395,9 @@ public class CodeTemplateBlock extends OptionsConfigurationBlock {
 		viewer.setEditable(false);
 		Cursor arrowCursor= viewer.getTextWidget().getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
 		viewer.getTextWidget().setCursor(arrowCursor);
-		viewer.getTextWidget().setCaret(null);
+
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263
+//		viewer.getTextWidget().setCaret(null);
 
 		viewer.setDocument(document);
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
index 16cba53..3f03404 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -251,6 +251,8 @@ public class ComplianceConfigurationBlock extends OptionsConfigurationBlock {
 
 	private Composite createComplianceTabContent(Composite folder) {
 
+		boolean hide_1_7= JavaModelUtil.HIDE_VERSION_1_7 &&
+				!(VERSION_1_7.equals(getValue(PREF_COMPLIANCE)) || VERSION_1_7.equals(getValue(PREF_CODEGEN_TARGET_PLATFORM)));
 
 		String[] values3456= new String[] { VERSION_1_3, VERSION_1_4, VERSION_1_5, VERSION_1_6, VERSION_1_7 };
 		String[] values3456Labels= new String[] {
@@ -260,6 +262,10 @@ public class ComplianceConfigurationBlock extends OptionsConfigurationBlock {
 			PreferencesMessages.ComplianceConfigurationBlock_version16,
 			PreferencesMessages.ComplianceConfigurationBlock_version17
 		};
+		if (hide_1_7) {
+			values3456= removeLast(values3456);
+			values3456Labels= removeLast(values3456Labels);
+		}
 
 		final ScrolledPageContent sc1 = new ScrolledPageContent(folder);
 		Composite composite= sc1.getBody();
@@ -333,6 +339,10 @@ public class ComplianceConfigurationBlock extends OptionsConfigurationBlock {
 			PreferencesMessages.ComplianceConfigurationBlock_version16,
 			PreferencesMessages.ComplianceConfigurationBlock_version17
 		};
+		if (hide_1_7) {
+			versions= removeLast(versions);
+			versionsLabels= removeLast(versionsLabels);
+		}
 
 		label= PreferencesMessages.ComplianceConfigurationBlock_codegen_targetplatform_label;
 		addComboBox(group, label, PREF_CODEGEN_TARGET_PLATFORM, versions, versionsLabels, indent);
@@ -422,6 +432,12 @@ public class ComplianceConfigurationBlock extends OptionsConfigurationBlock {
 		return sc1;
 	}
 
+	private static String[] removeLast(String[] versions) {
+		String[] reduced= new String[versions.length - 1];
+		System.arraycopy(versions, 0, reduced, 0, reduced.length);
+		return reduced;
+	}
+
 	protected final void openBuildPathPropertyPage() {
 		if (getPreferenceContainer() != null) {
 			Map data= new HashMap();
@@ -572,6 +588,12 @@ public class ComplianceConfigurationBlock extends OptionsConfigurationBlock {
 						fJRE50InfoText.setText(Messages.format(PreferencesMessages.ComplianceConfigurationBlock_jrecompliance_info_project, args));
 					}
 					isVisible= true;
+					if (JavaModelUtil.HIDE_VERSION_1_7 && VERSION_1_7.equals(compliance)) {
+						String javaVersion= ((IVMInstall2) install).getJavaVersion();
+						if (javaVersion != null && javaVersion.startsWith(VERSION_1_7)) {
+							isVisible= false;
+						}
+					}
 				}
 			}
 			fJRE50InfoText.setVisible(isVisible);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaBasePreferencePage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaBasePreferencePage.java
index 0f0b9ab..80b330a 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaBasePreferencePage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaBasePreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorColoringConfigurationBlock.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorColoringConfigurationBlock.java
index 467986f..8db9f77 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorColoringConfigurationBlock.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorColoringConfigurationBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -78,8 +78,8 @@ import org.eclipse.jdt.internal.ui.JavaPlugin;
 import org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer;
 import org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlighting;
 import org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlightingManager;
-import org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlightings;
 import org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlightingManager.HighlightedRange;
+import org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlightings;
 import org.eclipse.jdt.internal.ui.text.JavaColorManager;
 import org.eclipse.jdt.internal.ui.text.PreferencesAdapter;
 import org.eclipse.jdt.internal.ui.text.SimpleJavaSourceViewerConfiguration;
@@ -806,7 +806,9 @@ class JavaEditorColoringConfigurationBlock extends AbstractConfigurationBlock {
 		fPreviewViewer.setEditable(false);
 		Cursor arrowCursor= fPreviewViewer.getTextWidget().getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
 		fPreviewViewer.getTextWidget().setCursor(arrowCursor);
-		fPreviewViewer.getTextWidget().setCaret(null);
+
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263
+//		fPreviewViewer.getTextWidget().setCaret(null);
 
 		String content= loadPreviewContentFromFile("ColorSettingPreviewCode.txt"); //$NON-NLS-1$
 		IDocument document= new Document(content);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
index 3a85723..739ed81 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
@@ -296,7 +296,7 @@ AppearancePreferencePage_showCategory_label=Sh&ow categories
 AppearancePreferencePage_pkgNamePatternEnable_label= &Compress all package name segments, except the final segment
 AppearancePreferencePage_pkgNamePattern_label= Com&pression pattern (e.g. given package name 'org.eclipse.jdt', pattern '.' will compress it to '..jdt', '0' to 'jdt', '1~.' to 'o~.e~.jdt'):
 AppearancePreferencePage_pkgNamePatternAbbreviateEnable_label= A&bbreviate package names
-AppearancePreferencePage_pkgNamePatternAbbreviate_label= &Newline separated 'package_name=abbreviation' style abbreviation rules (e.g. pattern 'org.eclipse.jdt={JDT}' will abbreviate 'org.eclipse.jdt.ui' to '{JDT}.ui'). Left side of pattern must match whole package name. '#' at beginning disables a pattern:
+AppearancePreferencePage_pkgNamePatternAbbreviate_label= &Newline separated 'package_name=abbreviation' style abbreviation rules (e.g. rule 'org.eclipse.jdt={JDT}' will abbreviate 'org.eclipse.jdt.ui' to '{JDT}.ui').\nUse '#' at beginning to disable a rule:
 AppearancePreferencePage_showMembersInPackagesView=S&how members in Package Explorer
 AppearancePreferencePage_stackViewsVerticallyInTheJavaBrowsingPerspective=&Stack views vertically in the Java Browsing perspective
 AppearancePreferencePage_note=Note:
@@ -533,7 +533,7 @@ ComplianceConfigurationBlock_compliance_follows_EE_with_EE_label=&Use compliance
 ComplianceConfigurationBlock_compliance_group_label=JDK Compliance
 ComplianceConfigurationBlock_classfiles_group_label=Classfile Generation
 ComplianceConfigurationBlock_classfile_greater_compliance=Classfile compatibility must be equal or less than compliance level.
-ComplianceConfigurationBlock_classfile_greater_source=Classfile compatibility must be greater or equal than source compatibility.
+ComplianceConfigurationBlock_classfile_greater_source=Classfile compatibility must be equal or greater than source compatibility.
 
 ComplianceConfigurationBlock_jrecompliance_info=When selecting {0} compliance, make sure to have a compatible JRE installed and activated (currently {1}). <a href="1" >Configure...</a>
 ComplianceConfigurationBlock_cldc11_requires_source13_compliance_se14=CLDC 1.1 requires source level 1.3 and compliance 1.4 or less
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/TodoTaskPreferencePage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/TodoTaskPreferencePage.java
index c26f34a..7f914d5 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/TodoTaskPreferencePage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/TodoTaskPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java
index 853639f..47a5578 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties
index 8e74def..4f78468 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2005, 2008 IBM Corporation and others.
+# Copyright (c) 2005, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -47,7 +47,7 @@ CodeStyleTabPage_CheckboxName_ConvertForLoopToEnhanced=Conver&t for loops to enh
 CodeStyleTabPage_GroupName_ControlStatments=Control statements
 CodeStyleTabPage_RadioName_UseBlocksSpecial=Always &except for single 'return' or 'throw' statements
 CodeStyleTabPage_CheckboxName_UseParentheses=Use parent&heses in expressions
-ContributedCleanUpTabPage_ErrorPage_message=An error occured while creating this page. See the error log for details
+ContributedCleanUpTabPage_ErrorPage_message=An error occurred while creating this page. See the error log for details
 
 MemberAccessesTabPage_GroupName_NonStaticAccesses=Non static accesses
 MemberAccessesTabPage_CheckboxName_FieldQualifier=Use '&this' qualifier for field accesses
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
index 50260ab..36c9dcd 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
@@ -312,6 +312,7 @@ final class FormatterMessages extends NLS {
 	public static String LineWrappingTabPage_binary_expression_wrap_operator;
 	public static String LineWrappingTabPage_annotations;
 	public static String LineWrappingTabPage_annotations_arguments;
+	public static String LineWrappingTabPage_wrap_outer_expressions_when_nested;
 
 	public static String BlankLinesTabPage_preview_header;
 	public static String BlankLinesTabPage_compilation_unit_group_title;
@@ -408,6 +409,7 @@ final class FormatterMessages extends NLS {
 	public static String IndentationTabPage_use_tabs_only_for_leading_indentations;
 	
 	public static String  OffOnTagsTabPage_description;
+	public static String  OffOnTagsTabPage_enableOffOnTags;
 	public static String  OffOnTagsTabPage_disableTag;
 	public static String  OffOnTagsTabPage_enableTag;
 	public static String  OffOnTagsTabPage_error_startsWithWhitespace;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
index 68af905..88299ba 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
@@ -346,6 +346,7 @@ LineWrappingTabPage_enum_superinterfaces='implements' clause
 LineWrappingTabPage_assignment_alignment=Assignments
 LineWrappingTabPage_annotations=Annotations
 LineWrappingTabPage_annotations_arguments=Element-value pairs
+LineWrappingTabPage_wrap_outer_expressions_when_nested=Prefer wrapping &outer expressions (keep nested expression on one line)
 
 LineWrappingTabPage_binary_expression_wrap_operator=Wrap &before operator
 
@@ -468,7 +469,7 @@ ModifyDialog_tabpage_new_lines_title=New &Lines
 ModifyDialog_tabpage_control_statements_title=Con&trol Statements
 ModifyDialog_tabpage_line_wrapping_title=Line Wrappin&g
 ModifyDialog_tabpage_comments_title=Co&mments
-ModifyDialog_tabpage_OffOnTags_title=Off &/ On Tags
+ModifyDialog_tabpage_OffOnTags_title=Off&/On Tags
 
 NewLinesTabPage_preview_header=New Lines
 NewLinesTabPage_newlines_group_title=Insert new line
@@ -494,10 +495,11 @@ NewLinesTabPage_annotations_group_members=&Insert new line after annotations on
 NewLinesTabPage_annotations_group_paramters=Insert new line after annotations on parameters
 NewLinesTabPage_annotations_group_title=Annotations
 
-OffOnTagsTabPage_description=The following tags can be used in any comments to turn the formatter off and on in a source file.\n\
+OffOnTagsTabPage_description=Off/On tags can be used in any comments to turn the formatter off and on in a source file.\n\
 - At the beginning of each file, the formatter is enabled.\n\
 - Each time the formatter sees an off tag, it disables formatting for that comment and the source after it.\n\
-- Each time the formatter sees an on tag, it enables formatting for the source after that comment.
+- Each time the formatter sees an on tag, it enables formatting for the source after that comment.\n
+OffOnTagsTabPage_enableOffOnTags=&Enable Off/On tags
 OffOnTagsTabPage_disableTag=O&ff tag:
 OffOnTagsTabPage_enableTag=&On tag:
 OffOnTagsTabPage_error_startsWithWhitespace=This value must not start with a white space.
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java
index 18e37a5..1e1b740 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -121,7 +121,9 @@ public abstract class JavaPreview {
 		fSourceViewer.setEditable(false);
 		Cursor arrowCursor= fSourceViewer.getTextWidget().getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
 		fSourceViewer.getTextWidget().setCursor(arrowCursor);
-		fSourceViewer.getTextWidget().setCaret(null);
+
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263
+//		fSourceViewer.getTextWidget().setCaret(null);
 
 		fViewerConfiguration= new SimpleJavaSourceViewerConfiguration(tools.getColorManager(), fPreferenceStore, null, IJavaPartitions.JAVA_PARTITIONING, true);
 		fSourceViewer.configure(fViewerConfiguration);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/LineWrappingTabPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
index 470a458..bfb3d44 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
@@ -432,7 +432,7 @@ public class LineWrappingTabPage extends FormatterTabPage {
 
 	private final Category fMessageSendArgumentsCategory= new Category(
 	    DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_METHOD_INVOCATION,
-			"class Example {void foo() {Other.bar( 100,\n200,\n300,\n400,\n500,\n600,\n700,\n800,\n900 );}}", //$NON-NLS-1$
+			"class Example {void foo() {Other.bar( 100,\nnested(200,\n300,\n400,\n500,\n600,\n700,\n800,\n900 ));}}", //$NON-NLS-1$
 	    FormatterMessages.LineWrappingTabPage_arguments
 	);
 
@@ -686,6 +686,7 @@ public class LineWrappingTabPage extends FormatterTabPage {
 		createNumberPref(lineWidthGroup, numColumns, FormatterMessages.LineWrappingTabPage_width_indent_option_default_indent_wrapped, DefaultCodeFormatterConstants.FORMATTER_CONTINUATION_INDENTATION, 0, 9999);
 		createNumberPref(lineWidthGroup, numColumns, FormatterMessages.LineWrappingTabPage_width_indent_option_default_indent_array, DefaultCodeFormatterConstants.FORMATTER_CONTINUATION_INDENTATION_FOR_ARRAY_INITIALIZER, 0, 9999);
 		createCheckboxPref(lineWidthGroup, numColumns, FormatterMessages.LineWrappingTabPage_do_not_join_lines, DefaultCodeFormatterConstants.FORMATTER_JOIN_WRAPPED_LINES, TRUE_FALSE);
+		createCheckboxPref(lineWidthGroup, numColumns, FormatterMessages.LineWrappingTabPage_wrap_outer_expressions_when_nested, DefaultCodeFormatterConstants.FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED, FALSE_TRUE);
 
 		fCategoriesViewer= new TreeViewer(composite /*categoryGroup*/, SWT.MULTI | SWT.BORDER | SWT.READ_ONLY | SWT.V_SCROLL );
 		fCategoriesViewer.setContentProvider(new ITreeContentProvider() {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/OffOnTagsTabPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/OffOnTagsTabPage.java
index ca117f9..69113bf 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/OffOnTagsTabPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/OffOnTagsTabPage.java
@@ -16,6 +16,9 @@ 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.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
 
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.IInputValidator;
@@ -38,6 +41,17 @@ public class OffOnTagsTabPage extends FormatterTabPage {
 	protected void doCreatePreferences(Composite composite, int numColumns) {
 		createLabel(numColumns, composite, FormatterMessages.OffOnTagsTabPage_description);
 
+		// Add some vertical space
+		Label separator= new Label(composite, SWT.NONE);
+		separator.setVisible(false);
+		GridData data= new GridData(GridData.FILL, GridData.FILL, false, false, numColumns, 1);
+		data.heightHint= fPixelConverter.convertHeightInCharsToPixels(1) / 3;
+		separator.setLayoutData(data);
+
+		final CheckboxPreference enablePref= createCheckboxPref(composite, numColumns, FormatterMessages.OffOnTagsTabPage_enableOffOnTags, DefaultCodeFormatterConstants.FORMATTER_USE_ON_OFF_TAGS,
+				FALSE_TRUE);
+
+
 		IInputValidator inputValidator= new IInputValidator() {
 			/*
 			 * @see org.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialogTabPage.StringPreference.Validator#isValid(java.lang.String)
@@ -57,8 +71,31 @@ public class OffOnTagsTabPage extends FormatterTabPage {
 			}
 		};
 
-		createStringPref(composite, numColumns, FormatterMessages.OffOnTagsTabPage_disableTag, DefaultCodeFormatterConstants.FORMATTER_DISABLING_TAG, inputValidator);
-		createStringPref(composite, numColumns, FormatterMessages.OffOnTagsTabPage_enableTag, DefaultCodeFormatterConstants.FORMATTER_ENABLING_TAG, inputValidator);
+		Composite tagComposite= new Composite(composite, SWT.NONE);
+		final int indent= fPixelConverter.convertWidthInCharsToPixels(4);
+		GridLayout layout= new GridLayout(numColumns, false);
+		layout.marginWidth= 0;
+		layout.marginHeight= 0;
+		layout.marginLeft= indent;
+		tagComposite.setLayout(layout);
+
+		final StringPreference disableTagPref= createStringPref(tagComposite, numColumns, FormatterMessages.OffOnTagsTabPage_disableTag, DefaultCodeFormatterConstants.FORMATTER_DISABLING_TAG,
+				inputValidator);
+		final StringPreference enableTagPref= createStringPref(tagComposite, numColumns, FormatterMessages.OffOnTagsTabPage_enableTag, DefaultCodeFormatterConstants.FORMATTER_ENABLING_TAG,
+				inputValidator);
+
+		enablePref.getControl().addListener(SWT.Selection, new Listener() {
+			public void handleEvent(Event event) {
+				boolean enabled= enablePref.getChecked();
+				enableTagPref.setEnabled(enabled);
+				disableTagPref.setEnabled(enabled);
+			}
+		});
+
+		boolean enabled= enablePref.getChecked();
+		enableTagPref.setEnabled(enabled);
+		disableTagPref.setEnabled(enabled);
+
 	}
 
 	public final Composite createContents(Composite parent) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileSourceViewerConfiguration.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileSourceViewerConfiguration.java
index 41a42df..7c24326 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileSourceViewerConfiguration.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileSourceViewerConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -309,7 +309,7 @@ public class PropertiesFileSourceViewerConfiguration extends TextSourceViewerCon
 			}
 		};
 
-		MonoReconciler reconciler= new MonoReconciler(strategy, true);
+		MonoReconciler reconciler= new MonoReconciler(strategy, false);
 		reconciler.setDelay(500);
 		return reconciler;
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/BreakContinueTargetFinder.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/BreakContinueTargetFinder.java
index 1c23011..c382d49 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/BreakContinueTargetFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/BreakContinueTargetFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ExceptionOccurrencesFinder.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ExceptionOccurrencesFinder.java
index ffa29c6..f95ebfb 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ExceptionOccurrencesFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ExceptionOccurrencesFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ImplementOccurrencesFinder.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ImplementOccurrencesFinder.java
index 5cf733a..35931e0 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ImplementOccurrencesFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/ImplementOccurrencesFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/MethodExitsFinder.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/MethodExitsFinder.java
index 039551b..1b6f72a 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/MethodExitsFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/MethodExitsFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/OccurrencesFinder.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/OccurrencesFinder.java
index 112773b..d726e9b 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/OccurrencesFinder.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/OccurrencesFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
index 35ef329..40a8269 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java
index ca641ba..9f1dbf1 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties
index cfc5914..511ae62 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -129,7 +129,7 @@ RenameRefactoringProposal_additionalInfo=Start the Rename refactoring
 RenameRefactoringProposal_name=Rename in workspace
 
 ModifierCorrectionSubProcessor_changemodifiertostatic_description=Change modifier of ''{0}'' to ''static''
-ModifierCorrectionSubProcessor_changemodifiertostaticfinal_description=Change modfier to 'static final'
+ModifierCorrectionSubProcessor_changemodifiertostaticfinal_description=Change modifier to 'static final'
 ModifierCorrectionSubProcessor_changemodifiertononstatic_description=Remove ''static'' modifier of ''{0}''
 ModifierCorrectionSubProcessor_changemodifiertofinal_description=Change modifier of ''{0}'' to final
 ModifierCorrectionSubProcessor_addstatictoparenttype_description=Add 'static' modifier to parent type
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/SuppressWarningsSubProcessor.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/SuppressWarningsSubProcessor.java
index 06495fe..836a7a3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/SuppressWarningsSubProcessor.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/SuppressWarningsSubProcessor.java
@@ -39,7 +39,6 @@ import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jdt.core.dom.FieldDeclaration;
 import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.ImportDeclaration;
-import org.eclipse.jdt.core.dom.Initializer;
 import org.eclipse.jdt.core.dom.MemberValuePair;
 import org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.eclipse.jdt.core.dom.NormalAnnotation;
@@ -47,6 +46,7 @@ import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
 import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
 import org.eclipse.jdt.core.dom.StringLiteral;
 import org.eclipse.jdt.core.dom.TypeDeclaration;
+import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
 import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
 import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
 import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
@@ -106,35 +106,23 @@ public class SuppressWarningsSubProcessor {
 		if (node == null) {
 			return;
 		}
-		if (node.getLocationInParent() == VariableDeclarationFragment.NAME_PROPERTY) {
-			ASTNode parent= node.getParent();
-			if (parent.getLocationInParent() == VariableDeclarationStatement.FRAGMENTS_PROPERTY) {
-				addSuppressWarningsProposal(context.getCompilationUnit(), parent.getParent(), warningToken, -2, proposals);
+		
+		ASTNode target= node;
+		int relevance= -2;
+		do {
+			relevance= addSuppressWarningsProposalIfPossible(context.getCompilationUnit(), target, warningToken, relevance, proposals);
+			if (relevance == 0)
 				return;
-			}
-		} else if (node.getLocationInParent() == SingleVariableDeclaration.NAME_PROPERTY) {
-			addSuppressWarningsProposal(context.getCompilationUnit(), node.getParent(), warningToken, -2, proposals);
-			return;
-		} else if (node.getLocationInParent() == VariableDeclarationFragment.INITIALIZER_PROPERTY) {
-			node= ASTResolving.findParentBodyDeclaration(node);
-			if (node instanceof FieldDeclaration) {
-				node= node.getParent();
-			}
-		}
-
-		ASTNode target= ASTResolving.findParentBodyDeclaration(node);
-		if (target instanceof Initializer) {
-			target= ASTResolving.findParentBodyDeclaration(target.getParent());
-		}
-		if (target == null) {
-			ASTNode importStatement= ASTNodes.getParent(node, ImportDeclaration.class);
-			if (importStatement != null && !context.getASTRoot().types().isEmpty()) {
-				target= (ASTNode) context.getASTRoot().types().get(0);
+			target= target.getParent();
+		} while (target != null);
+		
+		ASTNode importStatement= ASTNodes.getParent(node, ImportDeclaration.class);
+		if (importStatement != null && !context.getASTRoot().types().isEmpty()) {
+			target= (ASTNode) context.getASTRoot().types().get(0);
+			if (target != null) {
+				addSuppressWarningsProposalIfPossible(context.getCompilationUnit(), target, warningToken, -2, proposals);
 			}
 		}
-		if (target != null) {
-			addSuppressWarningsProposal(context.getCompilationUnit(), target, warningToken, -3, proposals);
-		}
 	}
 
 	private static String getFirstFragmentName(List fragments) {
@@ -254,18 +242,38 @@ public class SuppressWarningsSubProcessor {
 		}
 	}
 
-	private static void addSuppressWarningsProposal(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection proposals) {
+	/**
+	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
+	 * 
+	 * @param cu the compilation unit
+	 * @param node the node on which to add a SuppressWarning token
+	 * @param warningToken the warning token to add
+	 * @param relevance the proposal's relevance
+	 * @param proposals collector to which the proposal should be added
+	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
+	 * 
+	 * @since 3.6
+	 */
+	private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection proposals) {
 
-		ChildListPropertyDescriptor property= null;
+		ChildListPropertyDescriptor property;
 		String name;
+		boolean isLocalVariable= false;
 		switch (node.getNodeType()) {
 			case ASTNode.SINGLE_VARIABLE_DECLARATION:
 				property= SingleVariableDeclaration.MODIFIERS2_PROPERTY;
 				name= ((SingleVariableDeclaration) node).getName().getIdentifier();
+				isLocalVariable= true;
 				break;
 			case ASTNode.VARIABLE_DECLARATION_STATEMENT:
 				property= VariableDeclarationStatement.MODIFIERS2_PROPERTY;
 				name= getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
+				isLocalVariable= true;
+				break;
+			case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
+				property= VariableDeclarationExpression.MODIFIERS2_PROPERTY;
+				name= getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
+				isLocalVariable= true;
 				break;
 			case ASTNode.TYPE_DECLARATION:
 				property= TypeDeclaration.MODIFIERS2_PROPERTY;
@@ -283,10 +291,7 @@ public class SuppressWarningsSubProcessor {
 				property= FieldDeclaration.MODIFIERS2_PROPERTY;
 				name= getFirstFragmentName(((FieldDeclaration) node).fragments());
 				break;
-			case ASTNode.INITIALIZER:
-				property= Initializer.MODIFIERS2_PROPERTY;
-				name= CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_initializer_label;
-				break;
+			// case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
 			case ASTNode.METHOD_DECLARATION:
 				property= MethodDeclaration.MODIFIERS2_PROPERTY;
 				name= ((MethodDeclaration) node).getName().getIdentifier() + "()"; //$NON-NLS-1$
@@ -300,14 +305,14 @@ public class SuppressWarningsSubProcessor {
 				name= ((EnumConstantDeclaration) node).getName().getIdentifier();
 				break;
 			default:
-				JavaPlugin.logErrorMessage("SuppressWarning quick fix: wrong node kind: " + node.getNodeType()); //$NON-NLS-1$
-				return;
+				return relevance;
 		}
 
 		String label= Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
 		ASTRewriteCorrectionProposal proposal= new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
 
 		proposals.add(proposal);
+		return isLocalVariable ? relevance - 1 : 0;
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
index 074406e..da64adc 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 
+import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.StyledCellLabelProvider;
 import org.eclipse.jface.viewers.StyledString;
 
@@ -296,9 +297,19 @@ public class ChangeCorrectionProposal implements IJavaCompletionProposal, IComma
 	 * @return returns the change for this proposal.
 	 * @throws CoreException thrown when the change could not be created
 	 */
-	public synchronized final Change getChange() throws CoreException {
-		if (fChange == null) {
-			fChange= createChange();
+	public final Change getChange() throws CoreException {
+		if (Util.isGtk()) {
+			// workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=293995 :
+			// [Widgets] Deadlock while UI thread displaying/computing a change proposal and non-UI thread creating image
+			if (fChange == null) {
+				fChange= createChange();
+			}
+		} else {
+			synchronized (this) {
+				if (fChange == null) {
+					fChange= createChange();
+				}
+			}
 		}
 		return fChange;
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ConstructorFromSuperclassProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ConstructorFromSuperclassProposal.java
index 807397e..754a019 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ConstructorFromSuperclassProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/ConstructorFromSuperclassProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RemoveDeclarationCorrectionProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RemoveDeclarationCorrectionProposal.java
index cec635e..4edf739 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RemoveDeclarationCorrectionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RemoveDeclarationCorrectionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RenameNodeCorrectionProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RenameNodeCorrectionProposal.java
index 302b7e1..ddd70a8 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RenameNodeCorrectionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/RenameNodeCorrectionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
index 231f1e1..18cbab7 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
@@ -68,10 +68,10 @@ import org.eclipse.jface.text.contentassist.IContextInformation;
 import org.eclipse.jface.text.link.ILinkedModeListener;
 import org.eclipse.jface.text.link.LinkedModeModel;
 import org.eclipse.jface.text.link.LinkedModeUI;
-import org.eclipse.jface.text.link.LinkedPosition;
-import org.eclipse.jface.text.link.LinkedPositionGroup;
 import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags;
 import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.jface.text.link.LinkedPositionGroup;
 
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
@@ -357,11 +357,6 @@ public abstract class AbstractJavaCompletionProposal implements IJavaCompletionP
 		}
 
 		try {
-			// patch replacement length
-			int delta= offset - (getReplacementOffset() + getReplacementLength());
-			if (delta > 0)
-				setReplacementLength(getReplacementLength() + delta);
-
 			boolean isSmartTrigger= isSmartTrigger(trigger);
 
 			String replacement;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/OverrideCompletionProposal.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/OverrideCompletionProposal.java
index af8feff..9d729f4 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/OverrideCompletionProposal.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/OverrideCompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/JavadocHover.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/JavadocHover.java
index 10e8fc8..ea2b4de 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/JavadocHover.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/JavadocHover.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,6 +16,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
+import java.net.URISyntaxException;
 import java.net.URL;
 
 import org.osgi.framework.Bundle;
@@ -25,6 +26,7 @@ import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 
+import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Platform;
 
 import org.eclipse.jface.action.Action;
@@ -54,6 +56,7 @@ import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.ui.editors.text.EditorsUI;
 
+import org.eclipse.jdt.core.IAnnotatable;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
@@ -63,12 +66,28 @@ import org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.eclipse.jdt.core.ITypeRoot;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.ASTParser;
+import org.eclipse.jdt.core.dom.CharacterLiteral;
+import org.eclipse.jdt.core.dom.ClassInstanceCreation;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.ConstructorInvocation;
+import org.eclipse.jdt.core.dom.IAnnotationBinding;
 import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.IMemberValuePairBinding;
+import org.eclipse.jdt.core.dom.IMethodBinding;
+import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.IVariableBinding;
 import org.eclipse.jdt.core.dom.NodeFinder;
+import org.eclipse.jdt.core.dom.ParameterizedType;
+import org.eclipse.jdt.core.dom.QualifiedName;
+import org.eclipse.jdt.core.dom.QualifiedType;
 import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.SimpleType;
+import org.eclipse.jdt.core.dom.StringLiteral;
+import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor;
+import org.eclipse.jdt.core.dom.SuperConstructorInvocation;
 import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
 
 import org.eclipse.jdt.internal.corext.javadoc.JavaDocLocations;
@@ -472,7 +491,7 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 			 * @see org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks.ILinkHandler#handleInlineJavadocLink(org.eclipse.jdt.core.IJavaElement)
 			 */
 			public void handleInlineJavadocLink(IJavaElement linkTarget) {
-				JavadocBrowserInformationControlInput hoverInfo= getHoverInfo(new IJavaElement[] { linkTarget }, null, (JavadocBrowserInformationControlInput) control.getInput());
+				JavadocBrowserInformationControlInput hoverInfo= getHoverInfo(new IJavaElement[] { linkTarget }, null, null, (JavadocBrowserInformationControlInput) control.getInput());
 				if (control.hasDelayedInputChangeListener())
 					control.notifyDelayedInputChange(hoverInfo);
 				else
@@ -533,28 +552,20 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 		if (elements == null || elements.length == 0)
 			return null;
 
-		String constantValue;
-		if (elements.length == 1 && elements[0].getElementType() == IJavaElement.FIELD) {
-			constantValue= getConstantValue((IField) elements[0], hoverRegion);
-			if (constantValue != null)
-				constantValue= HTMLPrinter.convertToHTMLContent(constantValue);
-		} else {
-			constantValue= null;
-		}
-
-		return getHoverInfo(elements, constantValue, null);
+		return getHoverInfo(elements, getEditorInputJavaElement(), hoverRegion, null);
 	}
 
 	/**
 	 * Computes the hover info.
 	 *
 	 * @param elements the resolved elements
-	 * @param constantValue a constant value iff result contains exactly 1 constant field, or <code>null</code>
+	 * @param editorInputElement the editor input, or <code>null</code>
+	 * @param hoverRegion the text range of the hovered word, or <code>null</code>
 	 * @param previousInput the previous input, or <code>null</code>
 	 * @return the HTML hover info for the given element(s) or <code>null</code> if no information is available
 	 * @since 3.4
 	 */
-	private static JavadocBrowserInformationControlInput getHoverInfo(IJavaElement[] elements, String constantValue, JavadocBrowserInformationControlInput previousInput) {
+	private static JavadocBrowserInformationControlInput getHoverInfo(IJavaElement[] elements, ITypeRoot editorInputElement, IRegion hoverRegion, JavadocBrowserInformationControlInput previousInput) {
 		int nResults= elements.length;
 		StringBuffer buffer= new StringBuffer();
 		boolean hasContents= false;
@@ -569,8 +580,16 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 				HTMLPrinter.startBulletList(buffer);
 				IJavaElement curr= elements[i];
 				if (curr instanceof IMember || curr.getElementType() == IJavaElement.LOCAL_VARIABLE) {
-					//FIXME: provide links
-					HTMLPrinter.addBullet(buffer, getInfoText(curr, constantValue, false));
+					String label= JavaElementLabels.getElementLabel(curr, getHeaderFlags(curr));
+					String link;
+					try {
+						String uri= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, curr);
+						link= JavaElementLinks.createLink(uri, label);
+					} catch (URISyntaxException e) {
+						JavaPlugin.log(e);
+						link= label;
+					}
+					HTMLPrinter.addBullet(buffer, link);
 					hasContents= true;
 				}
 				HTMLPrinter.endBulletList(buffer);
@@ -580,8 +599,10 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 
 			element= elements[0];
 			if (element instanceof IMember) {
+				HTMLPrinter.addSmallHeader(buffer, getInfoText(element, editorInputElement, hoverRegion, true));
+				buffer.append("<br>"); //$NON-NLS-1$
+				addAnnotations(buffer, element, editorInputElement, hoverRegion);
 				IMember member= (IMember) element;
-				HTMLPrinter.addSmallHeader(buffer, getInfoText(member, constantValue, true));
 				Reader reader;
 				try {
 //					reader= JavadocContentAccess.getHTMLContentReader(member, true, true);
@@ -620,7 +641,8 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 				hasContents= true;
 
 			} else if (element.getElementType() == IJavaElement.LOCAL_VARIABLE || element.getElementType() == IJavaElement.TYPE_PARAMETER) {
-				HTMLPrinter.addSmallHeader(buffer, getInfoText(element, constantValue, true));
+				addAnnotations(buffer, element, editorInputElement, hoverRegion);
+				HTMLPrinter.addSmallHeader(buffer, getInfoText(element, editorInputElement, hoverRegion, true));
 				hasContents= true;
 			}
 			leadingImageWidth= 20;
@@ -642,22 +664,14 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 		return null;
 	}
 
-	private static String getInfoText(IJavaElement element, String constantValue, boolean allowImage) {
-		long flags;
-		switch (element.getElementType()) {
-			case IJavaElement.LOCAL_VARIABLE:
-				flags= LOCAL_VARIABLE_FLAGS;
-				break;
-			case IJavaElement.TYPE_PARAMETER:
-				flags= TYPE_PARAMETER_FLAGS;
-				break;
-			default:
-				flags= LABEL_FLAGS;
-				break;
-		}
+	private static String getInfoText(IJavaElement element, ITypeRoot editorInputElement, IRegion hoverRegion, boolean allowImage) {
+		long flags= getHeaderFlags(element);
 		StringBuffer label= new StringBuffer(JavaElementLinks.getElementLabel(element, flags));
+		
 		if (element.getElementType() == IJavaElement.FIELD) {
+			String constantValue= getConstantValue((IField) element, editorInputElement, hoverRegion);
 			if (constantValue != null) {
+				constantValue= HTMLPrinter.convertToHTMLContent(constantValue);
 				IJavaProject javaProject= element.getJavaProject();
 				if (JavaCore.INSERT.equals(javaProject.getOption(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_ASSIGNMENT_OPERATOR, true)))
 					label.append(' ');
@@ -667,6 +681,11 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 				label.append(constantValue);
 			}
 		}
+		
+//		if (element.getElementType() == IJavaElement.METHOD) {
+//			IMethod method= (IMethod)element;
+//			//TODO: add default value for annotation type members, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=249016
+//		}
 
 		String imageName= null;
 		if (allowImage) {
@@ -677,10 +696,21 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 		}
 
 		StringBuffer buf= new StringBuffer();
-		addImageAndLabel(buf, imageName, 16, 16, 2, 2, label.toString(), 20, 2);
+		addImageAndLabel(buf, element, imageName, 16, 16, label.toString(), 20, 2);
 		return buf.toString();
 	}
 
+	private static long getHeaderFlags(IJavaElement element) {
+		switch (element.getElementType()) {
+			case IJavaElement.LOCAL_VARIABLE:
+				return LOCAL_VARIABLE_FLAGS;
+			case IJavaElement.TYPE_PARAMETER:
+				return TYPE_PARAMETER_FLAGS;
+			default:
+				return LABEL_FLAGS;
+		}
+	}
+
 	/*
 	 * @since 3.4
 	 */
@@ -697,26 +727,21 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 	 * Returns the constant value for the given field.
 	 *
 	 * @param field the field
-	 * @param hoverRegion the hover region
+	 * @param editorInputElement the editor input element
+	 * @param hoverRegion the hover region in the editor
 	 * @return the constant value for the given field or <code>null</code> if none
 	 * @since 3.4
 	 */
-	private String getConstantValue(IField field, IRegion hoverRegion) {
+	private static String getConstantValue(IField field, ITypeRoot editorInputElement, IRegion hoverRegion) {
 		if (!isStaticFinal(field))
 			return null;
 
-		ITypeRoot typeRoot= getEditorInputJavaElement();
-		if (typeRoot == null)
+		ASTNode node= getHoveredASTNode(editorInputElement, hoverRegion);
+		if (node == null)
 			return null;
-
+		
 		Object constantValue= null;
-
-		CompilationUnit unit= SharedASTProvider.getAST(typeRoot, SharedASTProvider.WAIT_ACTIVE_ONLY, null);
-		if (unit == null)
-			return null;
-
-		ASTNode node= NodeFinder.perform(unit, hoverRegion.getOffset(), hoverRegion.getLength());
-		if (node != null && node.getNodeType() == ASTNode.SIMPLE_NAME) {
+		if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
 			IBinding binding= ((SimpleName)node).resolveBinding();
 			if (binding != null && binding.getKind() == IBinding.VARIABLE) {
 				IVariableBinding variableBinding= (IVariableBinding)binding;
@@ -729,20 +754,10 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 			return null;
 
 		if (constantValue instanceof String) {
-			StringBuffer result= new StringBuffer();
-			result.append('"');
-			String stringConstant= (String)constantValue;
-			if (stringConstant.length() > 80) {
-				result.append(stringConstant.substring(0, 80));
-				result.append(JavaElementLabels.ELLIPSIS_STRING);
-			} else {
-				result.append(stringConstant);
-			}
-			result.append('"');
-			return result.toString();
+			return getEscapedStringLiteral((String) constantValue);
 
 		} else if (constantValue instanceof Character) {
-			String constantResult= '\'' + constantValue.toString() + '\'';
+			String constantResult= getEscapedCharacterLiteral(((Character) constantValue).charValue());
 
 			char charValue= ((Character) constantValue).charValue();
 			String hexString= Integer.toHexString(charValue);
@@ -774,6 +789,34 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 		}
 	}
 
+	private static ASTNode getHoveredASTNode(ITypeRoot editorInputElement, IRegion hoverRegion) {
+		if (editorInputElement == null)
+			return null;
+
+		CompilationUnit unit= SharedASTProvider.getAST(editorInputElement, SharedASTProvider.WAIT_ACTIVE_ONLY, null);
+		if (unit == null)
+			return null;
+		
+		return NodeFinder.perform(unit, hoverRegion.getOffset(),	hoverRegion.getLength());
+	}
+
+	private static String getEscapedStringLiteral(String stringValue) {
+		StringLiteral stringLiteral= AST.newAST(AST.JLS3).newStringLiteral();
+		stringLiteral.setLiteralValue(stringValue);
+		String stringConstant= stringLiteral.getEscapedValue();
+		if (stringConstant.length() > 80) {
+			return stringConstant.substring(0, 80) + JavaElementLabels.ELLIPSIS_STRING;
+		} else {
+			return stringConstant;
+		}
+	}
+
+	private static String getEscapedCharacterLiteral(char ch) {
+		CharacterLiteral characterLiteral= AST.newAST(AST.JLS3).newCharacterLiteral();
+		characterLiteral.setCharValue(ch);
+		return characterLiteral.getEscapedValue();
+	}
+	
 	/**
 	 * Creates and returns a formatted message for the given
 	 * constant with its hex value.
@@ -838,35 +881,225 @@ public class JavadocHover extends AbstractJavaEditorTextHover {
 		return null;
 	}
 
-	public static void addImageAndLabel(StringBuffer buf, String imageName, int imageWidth, int imageHeight, int imageLeft, int imageTop, String label, int labelLeft, int labelTop) {
+	public static void addImageAndLabel(StringBuffer buf, String imageSrcPath, int imageWidth, int imageHeight, String label, int labelLeft, int labelTop) {
+		addImageAndLabel(buf, null, imageSrcPath, imageWidth, imageHeight, label, labelLeft, labelTop);
+	}
+	
+	public static void addImageAndLabel(StringBuffer buf, IJavaElement element, String imageSrcPath, int imageWidth, int imageHeight, String label, int labelLeft, int labelTop) {
+		buf.append("<div style='word-wrap: break-word; position: relative; "); //$NON-NLS-1$
+		
+		if (imageSrcPath != null) {
+			buf.append("margin-left: ").append(labelLeft).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("padding-top: ").append(labelTop).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
+		}
 
-		if (imageName != null) {
-			StringBuffer imageStyle= new StringBuffer("position: absolute; "); //$NON-NLS-1$
+		buf.append("'>"); //$NON-NLS-1$
+		if (imageSrcPath != null) {
+			if (element != null) {
+				try {
+					String uri= JavaElementLinks.createURI(JavaElementLinks.OPEN_LINK_SCHEME, element);
+					buf.append("<a href='").append(uri).append("'>");  //$NON-NLS-1$//$NON-NLS-2$
+				} catch (URISyntaxException e) {
+					element= null; // no link
+				}
+			}
+			StringBuffer imageStyle= new StringBuffer("border:none; position: absolute; "); //$NON-NLS-1$
 			imageStyle.append("width: ").append(imageWidth).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
 			imageStyle.append("height: ").append(imageHeight).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
-			imageStyle.append("top: ").append(imageTop).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
-			imageStyle.append("left: ").append(imageLeft).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
+			imageStyle.append("left: ").append(- labelLeft - 1).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
 
+			// hack for broken transparent PNG support in IE 6, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=223900 :
 			buf.append("<!--[if lte IE 6]><![if gte IE 5.5]>\n"); //$NON-NLS-1$
-			buf.append("<span style=\"").append(imageStyle).append("filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='").append(imageName).append("')\"></span>\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			String tooltip= JavaHoverMessages.JavadocHover_openDeclaration;
+			buf.append("<span alt='").append(tooltip).append("' style=\"").append(imageStyle). //$NON-NLS-1$ //$NON-NLS-2$
+					append("filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='").append(imageSrcPath).append("')\"></span>\n"); //$NON-NLS-1$ //$NON-NLS-2$
 			buf.append("<![endif]><![endif]-->\n"); //$NON-NLS-1$
 
 			buf.append("<!--[if !IE]>-->\n"); //$NON-NLS-1$
-			buf.append("<img style='").append(imageStyle).append("' src='").append(imageName).append("'/>\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			buf.append("<img alt='").append(tooltip).append("' style='").append(imageStyle).append("' src='").append(imageSrcPath).append("'/>\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 			buf.append("<!--<![endif]-->\n"); //$NON-NLS-1$
 			buf.append("<!--[if gte IE 7]>\n"); //$NON-NLS-1$
-			buf.append("<img style='").append(imageStyle).append("' src='").append(imageName).append("'/>\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			buf.append("<img alt='").append(tooltip).append("' style='").append(imageStyle).append("' src='").append(imageSrcPath).append("'/>\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 			buf.append("<![endif]-->\n"); //$NON-NLS-1$
+			if (element != null) {
+				buf.append("</a>"); //$NON-NLS-1$
+			}
 		}
-
-		buf.append("<div style='word-wrap:break-word;"); //$NON-NLS-1$
-		if (imageName != null) {
-			buf.append("margin-left: ").append(labelLeft).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
-			buf.append("margin-top: ").append(labelTop).append("px; "); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		buf.append("'>"); //$NON-NLS-1$
+		
 		buf.append(label);
+		
 		buf.append("</div>"); //$NON-NLS-1$
 	}
 
+	public static void addAnnotations(StringBuffer buf, IJavaElement element, ITypeRoot editorInputElement, IRegion hoverRegion) {
+		if (element instanceof IAnnotatable) {
+			try {
+				String annotationString= getAnnotations(element, editorInputElement, hoverRegion);
+				if (annotationString != null) {
+					buf.append("<div style='margin-bottom: 5px;'>"); //$NON-NLS-1$
+					buf.append(annotationString);
+					buf.append("</div>"); //$NON-NLS-1$
+				}
+			} catch (JavaModelException e) {
+				// no annotations this time...
+				buf.append("<br>"); //$NON-NLS-1$
+			} catch (URISyntaxException e) {
+				// no annotations this time...
+				buf.append("<br>"); //$NON-NLS-1$
+			}
+		}
+	}
+
+	private static String getAnnotations(IJavaElement element, ITypeRoot editorInputElement, IRegion hoverRegion) throws URISyntaxException, JavaModelException {
+		if (!(element instanceof IAnnotatable))
+			return null;
+		
+		if (((IAnnotatable)element).getAnnotations().length == 0)
+			return null;
+		
+		IBinding binding;
+		ASTNode node= getHoveredASTNode(editorInputElement, hoverRegion);
+		
+		if (node == null) {
+			ASTParser p= ASTParser.newParser(AST.JLS3);
+			p.setProject(element.getJavaProject());
+			try {
+				binding= p.createBindings(new IJavaElement[] { element }, null)[0];
+			} catch (OperationCanceledException e) {
+				return null;
+			}
+			
+		} else {
+			binding= resolveBinding(node);
+		}
+		
+		if (binding == null)
+			return null;
+		
+		IAnnotationBinding[] annotations= binding.getAnnotations();
+		if (annotations.length == 0)
+			return null;
+		
+		StringBuffer buf= new StringBuffer();
+		for (int i= 0; i < annotations.length; i++) {
+			//TODO: skip annotations that don't have an @Documented annotation?
+			addAnnotation(buf, element, annotations[i]);
+			buf.append("<br>"); //$NON-NLS-1$
+		}
+		
+		return buf.toString();
+	}
+
+	private static IBinding resolveBinding(ASTNode node) {
+		if (node instanceof SimpleName) {
+			// workaround for https://bugs.eclipse.org/62605 (constructor name resolves to type, not method)
+			SimpleName simpleName= (SimpleName) node;
+			StructuralPropertyDescriptor loc= simpleName.getLocationInParent();
+			while (loc == QualifiedType.NAME_PROPERTY || loc == QualifiedName.NAME_PROPERTY|| loc == SimpleType.NAME_PROPERTY || loc == ParameterizedType.TYPE_PROPERTY) {
+				node= node.getParent();
+				loc= node.getLocationInParent();
+			}
+			if (loc == ClassInstanceCreation.TYPE_PROPERTY) {
+				ClassInstanceCreation cic= (ClassInstanceCreation) node.getParent();
+				IMethodBinding constructorBinding= cic.resolveConstructorBinding();
+				if (constructorBinding == null)
+					return null;
+				ITypeBinding declaringClass= constructorBinding.getDeclaringClass();
+				if (!declaringClass.isAnonymous())
+					return constructorBinding;
+				ITypeBinding superTypeDeclaration= declaringClass.getSuperclass().getTypeDeclaration();
+				return resolveSuperclassConstructor(superTypeDeclaration, constructorBinding);
+			}
+			return simpleName.resolveBinding();
+			
+		} else if (node instanceof SuperConstructorInvocation) {
+			return ((SuperConstructorInvocation) node).resolveConstructorBinding();
+		} else if (node instanceof ConstructorInvocation) {
+			return ((ConstructorInvocation) node).resolveConstructorBinding();
+		} else {
+			return null;
+		}
+	}
+
+	private static IBinding resolveSuperclassConstructor(ITypeBinding superClassDeclaration, IMethodBinding constructor) {
+		IMethodBinding[] methods= superClassDeclaration.getDeclaredMethods();
+		for (int i= 0; i < methods.length; i++) {
+			IMethodBinding method= methods[i];
+			if (method.isConstructor() && constructor.isSubsignature(method))
+				return method;
+		}
+		return null;
+	}
+
+	private static void addAnnotation(StringBuffer buf, IJavaElement element, IAnnotationBinding annotation) throws URISyntaxException {
+		String uri= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, annotation.getAnnotationType().getJavaElement());
+		buf.append('@');
+		addLink(buf, uri, annotation.getName());
+		
+		IMemberValuePairBinding[] mvPairs= annotation.getDeclaredMemberValuePairs();
+		if (mvPairs.length > 0) {
+			buf.append('(');
+			for (int j= 0; j < mvPairs.length; j++) {
+				if (j > 0) {
+					buf.append(JavaElementLabels.COMMA_STRING);
+				}
+				IMemberValuePairBinding mvPair= mvPairs[j];
+				String memberURI= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, mvPair.getMethodBinding().getJavaElement());
+				addLink(buf, memberURI, mvPair.getName());
+				buf.append('=');
+				addValue(buf, element, mvPair.getValue());
+			}
+			buf.append(')');
+		}
+	}
+
+	private static void addValue(StringBuffer buf, IJavaElement element, Object value) throws URISyntaxException {
+		if (value instanceof ITypeBinding) {
+			ITypeBinding typeBinding= (ITypeBinding)value;
+			IJavaElement type= typeBinding.getJavaElement();
+			if (type == null) {
+				buf.append(typeBinding.getName());
+			} else {
+				String uri= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, type);
+				String name= type.getElementName();
+				addLink(buf, uri, name);
+			}
+			buf.append(".class"); //$NON-NLS-1$
+			
+		} else if (value instanceof IVariableBinding) { // only enum constants
+			IVariableBinding variableBinding= (IVariableBinding)value;
+			IJavaElement variable= variableBinding.getJavaElement();
+			String uri= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, variable);
+			String name= variable.getElementName();
+			addLink(buf, uri, name);
+				
+		} else if (value instanceof IAnnotationBinding) {
+			IAnnotationBinding annotationBinding= (IAnnotationBinding)value;
+			addAnnotation(buf, element, annotationBinding);
+			
+		} else if (value instanceof String) {
+			buf.append(getEscapedStringLiteral((String)value));
+			
+		} else if (value instanceof Character) {
+			buf.append(getEscapedCharacterLiteral(((Character)value).charValue()));
+			
+		} else if (value instanceof Object[]) {
+			Object[] values= (Object[])value;
+			buf.append('{');
+			for (int i= 0; i < values.length; i++) {
+				if (i > 0) {
+					buf.append(JavaElementLabels.COMMA_STRING);
+				}
+				addValue(buf, element, values[i]);
+			}
+			buf.append('}');
+			
+		} else { // primitive types (except char) or null
+			buf.append(String.valueOf(value));
+		}
+	}
+
+	private static StringBuffer addLink(StringBuffer buf, String uri, String label) {
+		return buf.append(JavaElementLinks.createLink(uri, label));
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
index b7c7906..ae73876 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
@@ -43,7 +43,7 @@ import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.MethodInvocation;
+import org.eclipse.jdt.core.dom.IBinding;
 import org.eclipse.jdt.core.dom.NodeFinder;
 import org.eclipse.jdt.core.dom.QualifiedName;
 import org.eclipse.jdt.core.dom.SimpleName;
@@ -141,7 +141,20 @@ public class NLSStringHover extends AbstractJavaEditorTextHover {
 		if (node.getLocationInParent() == QualifiedName.QUALIFIER_PROPERTY)
 			return null;
 
-		AccessorClassReference ref= NLSHintHelper.getAccessorClassReference(ast, hoverRegion);
+		boolean usedFullyQualifiedName= false;
+		IBinding containingClassBinding= null;
+		ASTNode containingClass= ASTResolving.findParentType(node);
+		if (containingClass instanceof TypeDeclaration) {
+			containingClassBinding= ((TypeDeclaration)containingClass).resolveBinding();
+			ASTNode parentNode= node.getParent();
+			if (parentNode instanceof QualifiedName) {
+				IBinding qualifierBinding= (((QualifiedName)parentNode).getQualifier()).resolveBinding();
+				if (qualifierBinding != null && containingClassBinding != null) {
+					usedFullyQualifiedName= qualifierBinding.getKey().equals(containingClassBinding.getKey());
+				}
+			}
+		}
+		AccessorClassReference ref= NLSHintHelper.getAccessorClassReference(ast, hoverRegion, usedFullyQualifiedName);
 		if (ref == null)
 			return null;
 
@@ -164,21 +177,21 @@ public class NLSStringHover extends AbstractJavaEditorTextHover {
 		String identifier= null;
 		if (node instanceof StringLiteral) {
 			identifier= ((StringLiteral)node).getLiteralValue();
-		} else if (!(node.getParent() instanceof MethodInvocation)) {
+		} else if (!usedFullyQualifiedName && node.getLocationInParent() == QualifiedName.NAME_PROPERTY) {
 			identifier= ((SimpleName)node).getIdentifier();
 		} else {
 			try {
-				IType parentType= (IType)((TypeDeclaration)ASTResolving.findParentType(node)).resolveBinding().getJavaElement();
-				IField[] fields= parentType.getFields();
+				if (containingClassBinding == null)
+					return null;
+				IType parentType= (IType)containingClassBinding.getJavaElement();
+				if (parentType == null)
+					return null;
 				String varName= ((SimpleName)node).getIdentifier();
-				for (int i= 0; i < fields.length; i++) {
-					if (fields[i].getElementName().equals(varName)) {
-						if (!Signature.getSignatureSimpleName(fields[i].getTypeSignature()).equals("String")) //$NON-NLS-1$
-							return null;
-						Object obj= fields[i].getConstant();
-						identifier= obj instanceof String ? ((String)obj).substring(1, ((String)obj).length() - 1) : null;
-					}
-				}
+				IField field= parentType.getField(varName);
+				if (!Signature.getSignatureSimpleName(field.getTypeSignature()).equals("String")) //$NON-NLS-1$
+					return null;
+				Object obj= field.getConstant();
+				identifier= obj instanceof String ? ((String)obj).substring(1, ((String)obj).length() - 1) : null;
 			} catch (JavaModelException e) {
 				return null;
 			}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/SourceViewerInformationControl.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/SourceViewerInformationControl.java
index 88e6c42..7079b7c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/SourceViewerInformationControl.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/SourceViewerInformationControl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,7 +48,9 @@ import org.eclipse.jface.text.IInformationControlExtension5;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.text.source.SourceViewer;
 
+import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jdt.ui.PreferenceConstants;
+import org.eclipse.jdt.ui.text.IJavaColorConstants;
 import org.eclipse.jdt.ui.text.IJavaPartitions;
 
 import org.eclipse.jdt.internal.ui.JavaPlugin;
@@ -90,6 +92,12 @@ public class SourceViewerInformationControl implements IInformationControl, IInf
 	 */
 	private Font fStatusTextFont;
 	/**
+	 * The color of the optional status text label or <code>null</code> if none.
+	 * 
+	 * @since 3.6
+	 */
+	private Color fStatusTextForegroundColor;
+	/**
 	 * The width size constraint.
 	 * @since 3.2
 	 */
@@ -198,15 +206,42 @@ public class SourceViewerInformationControl implements IInformationControl, IInf
 			fStatusField.setFont(fStatusTextFont);
 			GridData gd2= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
 			fStatusField.setLayoutData(gd2);
-
-			// Regarding the color see bug 41128
-			fStatusField.setForeground(display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
+			
+			RGB javaDefaultColor= JavaUI.getColorManager().getColor(IJavaColorConstants.JAVA_DEFAULT).getRGB();
+			fStatusTextForegroundColor= new Color(fStatusField.getDisplay(), blend(fBackgroundColor.getRGB(), javaDefaultColor, 0.56f));
+			fStatusField.setForeground(fStatusTextForegroundColor);
 			fStatusField.setBackground(fBackgroundColor);
 		}
 
 		addDisposeListener(this);
 	}
 
+	/**
+	 * Returns an RGB that lies between the given foreground and background
+	 * colors using the given mixing factor. A <code>factor</code> of 1.0 will produce a
+	 * color equal to <code>fg</code>, while a <code>factor</code> of 0.0 will produce one
+	 * equal to <code>bg</code>.
+	 * @param bg the background color
+	 * @param fg the foreground color
+	 * @param factor the mixing factor, must be in [0,&nbsp;1]
+	 *
+	 * @return the interpolated color
+	 * @since 3.6
+	 */
+	private static RGB blend(RGB bg, RGB fg, float factor) {
+		// copy of org.eclipse.jface.internal.text.revisions.Colors#blend(..)
+		Assert.isLegal(bg != null);
+		Assert.isLegal(fg != null);
+		Assert.isLegal(factor >= 0f && factor <= 1f);
+		
+		float complement= 1f - factor;
+		return new RGB(
+				(int) (complement * bg.red + factor * fg.red),
+				(int) (complement * bg.green + factor * fg.green),
+				(int) (complement * bg.blue + factor * fg.blue)
+		);
+	}
+	
 	private void initializeColors() {
 		RGB bgRGB= getHoverBackgroundColorRGB();
 		if (bgRGB != null) {
@@ -274,8 +309,12 @@ public class SourceViewerInformationControl implements IInformationControl, IInf
 	public void widgetDisposed(DisposeEvent event) {
 		if (fStatusTextFont != null && !fStatusTextFont.isDisposed())
 			fStatusTextFont.dispose();
-
 		fStatusTextFont= null;
+
+		if (fStatusTextForegroundColor != null && !fStatusTextForegroundColor.isDisposed())
+			fStatusTextForegroundColor.dispose();
+		fStatusTextForegroundColor= null;
+
 		fTextFont= null;
 		fShell= null;
 		fText= null;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocContentAccess2.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocContentAccess2.java
index e13e38d..5059f20 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocContentAccess2.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocContentAccess2.java
@@ -28,6 +28,7 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.resources.IResource;
 
 import org.eclipse.jdt.core.IBuffer;
+import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IMethod;
@@ -38,28 +39,35 @@ import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.SourceRange;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ASTParser;
 import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.IVariableBinding;
 import org.eclipse.jdt.core.dom.Javadoc;
 import org.eclipse.jdt.core.dom.MemberRef;
 import org.eclipse.jdt.core.dom.MethodRef;
 import org.eclipse.jdt.core.dom.MethodRefParameter;
 import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.core.dom.NodeFinder;
 import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.StringLiteral;
 import org.eclipse.jdt.core.dom.TagElement;
 import org.eclipse.jdt.core.dom.TextElement;
 
 import org.eclipse.jdt.internal.corext.dom.ASTNodes;
 import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
+import org.eclipse.jdt.internal.corext.util.JdtFlags;
 import org.eclipse.jdt.internal.corext.util.MethodOverrideTester;
 import org.eclipse.jdt.internal.corext.util.SuperTypeHierarchyCache;
 
 import org.eclipse.jdt.ui.JavaElementLabels;
 import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jdt.ui.JavadocContentAccess;
+import org.eclipse.jdt.ui.SharedASTProvider;
 
 import org.eclipse.jdt.internal.ui.JavaPlugin;
 import org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks;
@@ -1112,9 +1120,10 @@ public class JavadocContentAccess2 {
 	}
 
 	private void handleInlineTagElement(TagElement node) {
-		//TODO: TagElement.TAG_VALUE
-
 		String name= node.getTagName();
+		
+		if (TagElement.TAG_VALUE.equals(name) && handleValueTag(node))
+			return;
 
 		boolean isLink= TagElement.TAG_LINK.equals(name);
 		boolean isLinkplain= TagElement.TAG_LINKPLAIN.equals(name);
@@ -1148,6 +1157,86 @@ public class JavadocContentAccess2 {
 
 	}
 
+	private boolean handleValueTag(TagElement node) {
+		
+		List fragments= node.fragments();
+		try {
+			if (fragments.isEmpty()) {
+				if (fMember instanceof IField && JdtFlags.isStatic(fMember) && JdtFlags.isFinal(fMember)) {
+					IField field= (IField) fMember;
+					return handleConstantValue(field, false);
+				}
+			} else if (fragments.size() == 1) {
+				Object first= fragments.get(0);
+				if (first instanceof MemberRef) {
+					MemberRef memberRef= (MemberRef) first;
+					if (memberRef.getQualifier() == null) {
+						SimpleName name= memberRef.getName();
+						IField field= fMember.getDeclaringType().getField(name.getIdentifier());
+						if (field != null && field.exists() && JdtFlags.isStatic(field) && JdtFlags.isFinal(field))
+							return handleConstantValue(field, true);
+					}
+				}
+			}
+		} catch (JavaModelException e) {
+			JavaPlugin.log(e);
+		}
+		
+		return false;
+	}
+
+	private boolean handleConstantValue(IField field, boolean link) throws JavaModelException {
+		String text= null;
+		
+		ISourceRange nameRange= field.getNameRange();
+		if (SourceRange.isAvailable(nameRange)) {
+			CompilationUnit cuNode= SharedASTProvider.getAST(field.getTypeRoot(), SharedASTProvider.WAIT_ACTIVE_ONLY, null);
+			if (cuNode != null) {
+				ASTNode nameNode= NodeFinder.perform(cuNode, nameRange);
+				if (nameNode instanceof SimpleName) {
+					IBinding binding= ((SimpleName) nameNode).resolveBinding();
+					if (binding instanceof IVariableBinding) {
+						IVariableBinding variableBinding= (IVariableBinding) binding;
+						Object constantValue= variableBinding.getConstantValue();
+						if (constantValue != null) {
+							if (constantValue instanceof String) {
+								StringLiteral stringLiteral= AST.newAST(AST.JLS3).newStringLiteral();
+								stringLiteral.setLiteralValue((String) constantValue);
+								text= stringLiteral.getEscapedValue();
+							} else {
+								text= constantValue.toString(); // Javadoc tool is even worse for chars...
+							}
+						}
+					}
+				}
+			}
+		}
+		
+		if (text == null) {
+			Object constant= field.getConstant();
+			if (constant != null) {
+				text= constant.toString();
+			}
+		}
+		
+		if (text != null) {
+			if (link) {
+				String uri;
+				try {
+					uri= JavaElementLinks.createURI(JavaElementLinks.JAVADOC_SCHEME, field);
+					fBuf.append(JavaElementLinks.createLink(uri, text));
+				} catch (URISyntaxException e) {
+					JavaPlugin.log(e);
+					return false;
+				}
+			} else {
+				handleText(text);
+			}
+			return true;
+		}
+		return false;
+	}
+
 	private boolean handleDocRoot(TagElement node) {
 		if (!TagElement.TAG_DOCROOT.equals(node.getTagName()))
 			return false;
@@ -1458,7 +1547,7 @@ public class JavadocContentAccess2 {
 					JavaPlugin.log(e);
 				}
 				fBuf.append("'>"); //$NON-NLS-1$
-				if (fs > 1) {
+				if (fs > 1 && !(fs == 2 && isWhitespaceTextElement(fragments.get(1)))) {
 					handleContentElements(fragments.subList(1, fs), true);
 				} else {
 					fBuf.append(refTypeName);
@@ -1491,6 +1580,14 @@ public class JavadocContentAccess2 {
 		}
 	}
 
+	private static boolean isWhitespaceTextElement(Object fragment) {
+		if (!(fragment instanceof TextElement))
+			return false;
+		
+		TextElement textElement= (TextElement) fragment;
+		return textElement.getText().trim().length() == 0;
+	}
+
 	private boolean containsOnlyNull(List parameterNames) {
 		for (Iterator iter= parameterNames.iterator(); iter.hasNext(); ) {
 			if (iter.next() != null)
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
index 9fb9a46..93a778c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -118,6 +118,12 @@ public class TypeHierarchyLifeCycle implements ITypeHierarchyChangedListener, IE
 			fHierarchy= null;
 			fInputElement= null;
 		}
+		synchronized (this) {
+			if (fRefreshHierarchyJob != null) {
+				fRefreshHierarchyJob.cancel();
+				fRefreshHierarchyJob= null;
+			}
+		}
 	}
 
 	public void removeChangedListener(ITypeHierarchyLifeCycleListener listener) {
@@ -182,35 +188,36 @@ public class TypeHierarchyLifeCycle implements ITypeHierarchyChangedListener, IE
 				fHierarchyRefreshNeeded= true;
 				context.run(true, true, op);
 				fHierarchyRefreshNeeded= false;
-			} else {				
+			} else {
 				final String label= Messages.format(TypeHierarchyMessages.TypeHierarchyLifeCycle_computeInput, JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT));
-				fRefreshHierarchyJob= new Job(label) {					
-					/*
-					 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-					 */
-					public IStatus run(IProgressMonitor pm) {
-						pm.beginTask(label, LONG);
-						try {
-							doHierarchyRefreshBackground(element, pm);
-						} catch (OperationCanceledException e) {
-							if (fRefreshJobCanceledExplicitly) {
-								fTypeHierarchyViewPart.showEmptyViewer();
+				synchronized (this) {
+					fRefreshHierarchyJob= new Job(label) {
+						/*
+						 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+						 */
+						public IStatus run(IProgressMonitor pm) {
+							pm.beginTask(label, LONG);
+							try {
+								doHierarchyRefreshBackground(element, pm);
+							} catch (OperationCanceledException e) {
+								if (fRefreshJobCanceledExplicitly) {
+									fTypeHierarchyViewPart.showEmptyViewer();
+								}
+								return Status.CANCEL_STATUS;
+							} catch (JavaModelException e) {
+								return e.getStatus();
+							} finally {
+								fHierarchyRefreshNeeded= true;
+								pm.done();
 							}
-							return Status.CANCEL_STATUS;
-						} catch (JavaModelException e) {
-							return e.getStatus();
-						} finally {
-							fHierarchyRefreshNeeded= true;
-							pm.done();
+							return Status.OK_STATUS;
 						}
-						return Status.OK_STATUS;
-					}
-				};
-				fRefreshHierarchyJob.setUser(true);
-				IWorkbenchSiteProgressService progressService= (IWorkbenchSiteProgressService)fTypeHierarchyViewPart.getSite()
+					};
+					fRefreshHierarchyJob.setUser(true);
+					IWorkbenchSiteProgressService progressService= (IWorkbenchSiteProgressService)fTypeHierarchyViewPart.getSite()
 														.getAdapter(IWorkbenchSiteProgressService.class);
-				progressService.schedule(fRefreshHierarchyJob, 0);
-
+					progressService.schedule(fRefreshHierarchyJob, 0);
+				}
 			}
 		}
 	}
@@ -245,12 +252,14 @@ public class TypeHierarchyLifeCycle implements ITypeHierarchyChangedListener, IE
 				 * @see java.lang.Runnable#run()
 				 */
 				public void run() {
-					synchronized (this) {
+					synchronized (TypeHierarchyLifeCycle.this) {
 						if (fRefreshHierarchyJob == null) {
 							return;
 						}
 						fRefreshHierarchyJob= null;
 					}
+					if (pm.isCanceled())
+						return;
 					fTypeHierarchyViewPart.setViewersInput();
 					fTypeHierarchyViewPart.updateViewers();
 				}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
index 6677791..f6df9cd 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
@@ -624,8 +624,11 @@ public class TypeHierarchyViewPart extends ViewPart implements ITypeHierarchyVie
 	 * @see IWorkbenchPart#dispose
 	 */
 	public void dispose() {
-		fHierarchyLifeCycle.freeHierarchy();
-		fHierarchyLifeCycle.removeChangedListener(fTypeHierarchyLifeCycleListener);
+		if (fHierarchyLifeCycle != null) {
+			fHierarchyLifeCycle.freeHierarchy();
+			fHierarchyLifeCycle.removeChangedListener(fTypeHierarchyLifeCycleListener);
+			fHierarchyLifeCycle= null;
+		}
 		fPaneLabelProvider.dispose();
 
 		if (fMethodsViewer != null) {
@@ -1775,6 +1778,9 @@ public class TypeHierarchyViewPart extends ViewPart implements ITypeHierarchyVie
 	public void showEmptyViewer() {
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
+				if (isDisposed())
+					return;
+
 				clearInput();
 				setKeepShowingEmptyViewers(true);
 			}
@@ -1782,6 +1788,16 @@ public class TypeHierarchyViewPart extends ViewPart implements ITypeHierarchyVie
 	}
 
 	/**
+	 * Checks if the type hierarchy view part has been disposed.
+	 *
+	 * @return <code>true</code> if the type hierarchy view part has been disposed, <code>false</code> otherwise
+	 * @since 3.6
+	 */
+	private boolean isDisposed() {
+		return fHierarchyLifeCycle == null;
+	}
+
+	/**
 	 * Returns the type hierarchy life cycle.
 	 *
 	 * @return the type hierarchy life cycle
@@ -1795,7 +1811,7 @@ public class TypeHierarchyViewPart extends ViewPart implements ITypeHierarchyVie
 
 	/**
 	 * Sets the input for all the hierarchy viewers with their respective viewer instances.
-	 * 
+	 *
 	 * @since 3.6
 	 */
 	public void setViewersInput() {
@@ -1820,12 +1836,12 @@ public class TypeHierarchyViewPart extends ViewPart implements ITypeHierarchyVie
 	/**
 	 * Returns value that determines whether the empty viewers should keep showing. If false,
 	 * replace with fEmptyTypesViewer.
-	 * 
+	 *
 	 * @return <code>true</code> if the empty viewers can be shown, <code>false otherwise
-	 * 
+	 *
 	 * @since 3.6
 	 */
 	public boolean isKeepShowingEmptyViewers() {
 		return fKeepShowingEmptyViewers;
-	}	
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLabelComposer.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLabelComposer.java
index f4df65f..3a81391 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLabelComposer.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLabelComposer.java
@@ -1364,7 +1364,7 @@ public class JavaElementLabelComposer {
 	}
 
 	public static PackageNameAbbreviation[] parseAbbreviationPattern(String pattern) {
-		String[] parts= pattern.split("\\s*\n\\s*"); //$NON-NLS-1$
+		String[] parts= pattern.split("\\s*(?:\r\n?|\n)\\s*"); //$NON-NLS-1$
 
 		ArrayList result= new ArrayList();
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLinks.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLinks.java
index 857ca20..198812b 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLinks.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLinks.java
@@ -24,6 +24,7 @@ import org.eclipse.swt.widgets.Display;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 
+import org.eclipse.jdt.core.IAnnotation;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.ILocalVariable;
@@ -103,7 +104,7 @@ public class JavaElementLinks {
 
 		public String getElementName(IJavaElement element) {
 			String elementName= element.getElementName();
-			if (fElement.equals(element)) { // linking to the member itself would be a no-op
+			if (element.equals(fElement)) { // linking to the member itself would be a no-op
 				return elementName;
 			}
 			if (elementName.length() == 0) { // anonymous
@@ -111,17 +112,13 @@ public class JavaElementLinks {
 			}
 			try {
 				String uri= createURI(JAVADOC_SCHEME, element);
-				return createLink(uri, elementName);
+				return createHeaderLink(uri, elementName);
 			} catch (URISyntaxException e) {
 				JavaPlugin.log(e);
 				return elementName;
 			}
 		}
 
-		private String createLink(String uri, String elementName) {
-			return "<a class='header' href='" + uri + ("'>" + elementName + "</a>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
 		protected String getGT() {
 			return "&gt;"; //$NON-NLS-1$
 		}
@@ -134,7 +131,7 @@ public class JavaElementLinks {
 			String typeName= super.getSimpleTypeName(enclosingElement, typeSig);
 			try {
 				String uri= createURI(JAVADOC_SCHEME, enclosingElement, typeName, null, null);
-				return createLink(uri, typeName);
+				return createHeaderLink(uri, typeName);
 			} catch (URISyntaxException e) {
 				JavaPlugin.log(e);
 				return typeName;
@@ -319,7 +316,10 @@ public class JavaElementLinks {
 					JavaPlugin.log(e);
 				}
 			}
-
+			if (element instanceof IAnnotation) {
+				element= element.getParent();
+			}
+			
 			if (element instanceof ILocalVariable) {
 				element= element.getAncestor(IJavaElement.TYPE);
 			} else if (element instanceof ITypeParameter) {
@@ -459,8 +459,33 @@ public class JavaElementLinks {
 	}
 
 	/**
+	 * Creates a link with the given URI and label text.
+	 * 
+	 * @param uri the URI
+	 * @param label the label
+	 * @return the HTML link
+	 * @since 3.6
+	 */
+	public static String createLink(String uri, String label) {
+		return "<a href='" + uri + "'>" + label + "</a>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	}
+	
+	/**
+	 * Creates a header link with the given URI and label text.
+	 * 
+	 * @param uri the URI
+	 * @param label the label
+	 * @return the HTML link
+	 * @since 3.6
+	 */
+	public static String createHeaderLink(String uri, String label) {
+		return "<a class='header' href='" + uri + "'>" + label + "</a>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	}
+	
+	/**
 	 * Returns the label for a Java element with the flags as defined by {@link JavaElementLabels}.
-	 * Referenced element names in the label (except the given element's name) are rendered as Javadoc links.
+	 * Referenced element names in the label (except the given element's name) are rendered as 
+	 * header links.
 	 *
 	 * @param element the element to render
 	 * @param flags the rendering flags
@@ -468,10 +493,25 @@ public class JavaElementLinks {
 	 * @since 3.5
 	 */
 	public static String getElementLabel(IJavaElement element, long flags) {
+		return getElementLabel(element, flags, false);
+	}
+
+	/**
+	 * Returns the label for a Java element with the flags as defined by {@link JavaElementLabels}.
+	 * Referenced element names in the label are rendered as header links.
+	 * If <code>linkAllNames</code> is <code>false</code>, don't link the name of the given element
+	 *
+	 * @param element the element to render
+	 * @param flags the rendering flags
+	 * @param linkAllNames if <code>true</code>, link all names; if <code>false</code>, link all names except original element's name
+	 * @return the label of the Java element
+	 * @since 3.6
+	 */
+	public static String getElementLabel(IJavaElement element, long flags, boolean linkAllNames) {
 		StringBuffer buf= new StringBuffer();
 
 		if (!Strings.USE_TEXT_PROCESSOR) {
-			new JavaElementLinkedLabelComposer(element, buf).appendElementLabel(element, flags);
+			new JavaElementLinkedLabelComposer(linkAllNames ? null : element, buf).appendElementLabel(element, flags);
 			return Strings.markJavaElementLabelLTR(buf.toString());
 		} else {
 			String label= JavaElementLabels.getElementLabel(element, flags);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java
index d074704..4474adc 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java
@@ -317,7 +317,15 @@ public class NewSourceFolderWizardPage extends NewElementWizardPage {
 						fRootStatus.setError(NewWizardMessages.NewSourceFolderWizardPage_error_NotAFolder);
 						return;
 					}
+					if (res.isVirtual()) {
+						fRootStatus.setError(NewWizardMessages.NewSourceFolderWizardPage_error_FolderIsVirtual);
+						return;
+					}
 				} else {
+					if (!ResourcesPlugin.getWorkspace().validateFiltered(fWorkspaceRoot.getFolder(path)).isOK()) {
+						fRootStatus.setError(NewWizardMessages.NewSourceFolderWizardPage_error_FolderNameFiltered);
+						return;
+					}
 					URI projLocation= fCurrJProject.getProject().getLocationURI();
 					if (projLocation != null) {
 						try {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
index e29d1a0..71edcdf 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
@@ -70,6 +70,7 @@ public final class NewWizardMessages extends NLS {
 	public static String NewContainerWizardPage_error_ContainerDoesNotExist;
 	public static String NewContainerWizardPage_error_NotAFolder;
 	public static String NewContainerWizardPage_error_ProjectClosed;
+	public static String NewContainerWizardPage_error_FolderIsVirtual;
 	public static String NewContainerWizardPage_warning_NotAJavaProject;
 	public static String NewContainerWizardPage_warning_NotInAJavaProject;
 	public static String NewContainerWizardPage_warning_NotOnClassPath;
@@ -85,6 +86,7 @@ public final class NewWizardMessages extends NLS {
 	public static String NewPackageWizardPage_error_PackageExistsDifferentCase;
 	public static String NewPackageWizardPage_error_EnterName;
 	public static String NewPackageWizardPage_error_PackageNotShown;
+	public static String NewPackageWizardPage_error_PackageNameFiltered;
 	public static String NewPackageWizardPage_warning_DiscouragedPackageName;
 	public static String NewPackageWizardPage_title;
 	public static String NewPackageWizardPage_description;
@@ -142,6 +144,9 @@ public final class NewWizardMessages extends NLS {
 	public static String NewTypeWizardPage_error_InvalidSuperInterfaceName;
 	public static String NewTypeWizardPage_error_SuperInterfaceNotParameterized;
 	public static String NewTypeWizardPage_error_ModifiersFinalAndAbstract;
+	public static String NewTypeWizardPage_error_TypeNameFiltered;
+	public static String NewTypeWizardPage_error_PackageNameFiltered;
+	public static String NewTypeWizardPage_error_PackageIsVirtual;
 	public static String NewTypeWizardPage_configure_templates_message;
 	public static String NewTypeWizardPage_configure_templates_title;
 	public static String NewTypeWizardPage_SuperClassDialog_title;
@@ -259,6 +264,8 @@ public final class NewWizardMessages extends NLS {
 	public static String NewSourceFolderWizardPage_error_InvalidProjectPath;
 	public static String NewSourceFolderWizardPage_error_NotAJavaProject;
 	public static String NewSourceFolderWizardPage_error_ProjectNotExists;
+	public static String NewSourceFolderWizardPage_error_FolderIsVirtual;
+	public static String NewSourceFolderWizardPage_error_FolderNameFiltered;
 	public static String NewSourceFolderWizardPage_warning_ReplaceSFandOL;
 	public static String NewSourceFolderWizardPage_warning_ReplaceOL;
 	public static String NewSourceFolderWizardPage_warning_ReplaceSF;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
index ca6e122..d25b07f 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
@@ -34,6 +34,7 @@ NewContainerWizardPage_error_ContainerIsBinary=''{0}'' is a JAR archive.
 NewContainerWizardPage_error_ContainerDoesNotExist=Folder ''{0}'' does not exist.
 NewContainerWizardPage_error_NotAFolder=''{0}'' must be a project or folder.
 NewContainerWizardPage_error_ProjectClosed=Project ''{0}'' must be accessible.
+NewContainerWizardPage_error_FolderIsVirtual= Source folder cannot be a virtual folder.
 
 NewContainerWizardPage_warning_NotAJavaProject=Source folder is not a Java project.
 NewContainerWizardPage_warning_NotInAJavaProject=Source folder is not in a Java project.
@@ -56,6 +57,7 @@ NewPackageWizardPage_error_PackageExists=Package already exists.
 NewPackageWizardPage_error_PackageExistsDifferentCase=Package already exists with a different case
 NewPackageWizardPage_error_EnterName=Enter a package name.
 NewPackageWizardPage_error_PackageNotShown=Package already exists. Note: Views might filter empty parent packages.
+NewPackageWizardPage_error_PackageNameFiltered= This package is hidden in the workspace due to resource filters.
 NewPackageWizardPage_warning_DiscouragedPackageName=Discouraged package name. {0}
 
 NewPackageWizardPage_title=Java Package
@@ -127,6 +129,9 @@ NewTypeWizardPage_error_InvalidSuperInterfaceName=Extended interface ''{0}'' is
 NewTypeWizardPage_error_SuperInterfaceNotParameterized=Extended interface ''{0}'' cannot be parameterized unless source level is 1.5.
 
 NewTypeWizardPage_error_ModifiersFinalAndAbstract=Class cannot be both final and abstract
+NewTypeWizardPage_error_TypeNameFiltered=This type is hidden in the workspace due to resource filters.
+NewTypeWizardPage_error_PackageNameFiltered= This package is hidden in the workspace due to resource filters.
+NewTypeWizardPage_error_PackageIsVirtual= Package cannot be a virtual folder.
 
 NewTypeWizardPage_configure_templates_message=Can not open the project properties. The wizard page does not yet specify a valid project.
 NewTypeWizardPage_configure_templates_title=Configure Code Templates
@@ -233,7 +238,9 @@ NewSourceFolderWizardPage_error_InvalidRootName=Invalid folder name. {0}
 NewSourceFolderWizardPage_error_NotAFolder=Not a folder.
 NewSourceFolderWizardPage_error_AlreadyExisting=The folder is already a source folder.
 NewSourceFolderWizardPage_error_AlreadyExistingDifferentCase=Folder already exists with a different case
+NewSourceFolderWizardPage_error_FolderNameFiltered= This folder is hidden in the workspace due to resource filters.
 NewSourceFolderWizardPage_ReplaceExistingSourceFolder_label=Replace existing project source folder entry to solve nesting
+NewSourceFolderWizardPage_error_FolderIsVirtual= Source folder cannot be a virtual folder.
 
 NewSourceFolderWizardPage_error_EnterProjectName=Project name must be entered.
 NewSourceFolderWizardPage_error_InvalidProjectPath=Invalid project path.
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/AddSourceFolderWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/AddSourceFolderWizardPage.java
index 5d7e339..5d4a9d8 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/AddSourceFolderWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/AddSourceFolderWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -168,6 +168,7 @@ public class AddSourceFolderWizardPage extends NewElementWizardPage {
 		private void handleVariablesButtonPressed() {
 			int variableTypes = IResource.FOLDER;
 			PathVariableSelectionDialog dialog = new PathVariableSelectionDialog(getShell(), variableTypes);
+			dialog.setResource(fParent);
 			if (dialog.open() == IDialogConstants.OK_ID) {
 				String[] variableNames = (String[]) dialog.getResult();
 				if (variableNames != null && variableNames.length == 1) {
@@ -626,12 +627,13 @@ public class AddSourceFolderWizardPage extends NewElementWizardPage {
 		if (folderLocation.isAbsolute())
 			return new StatusInfo(IStatus.ERROR, NewWizardMessages.AddSourceFolderWizardPage_error_NotARelativePathName);
 
-		IFolder folder= fNewElement.getJavaProject().getProject().getFolder(folderLocation);
+		IProject project= fNewElement.getJavaProject().getProject();
+		IFolder folder= project.getFolder(folderLocation);
 		IStatus locationStatus= workspace.validateLinkLocation(folder, path);
 		if (locationStatus.matches(IStatus.ERROR))
 			return locationStatus;
 
-		IPathVariableManager pathVariableManager = ResourcesPlugin.getWorkspace().getPathVariableManager();
+		IPathVariableManager pathVariableManager= project.getPathVariableManager();
 		IPath path1= Path.fromOSString(fLinkFields.fLinkLocation.getText());
 		IPath resolvedPath= pathVariableManager.resolvePath(path1);
 		// use the resolved link target name
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CreateMultipleSourceFoldersDialog.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CreateMultipleSourceFoldersDialog.java
index 026258a..9efe104 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CreateMultipleSourceFoldersDialog.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CreateMultipleSourceFoldersDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -38,6 +38,7 @@ import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.jface.window.Window;
 
@@ -135,7 +136,18 @@ public class CreateMultipleSourceFoldersDialog extends TrayDialog {
 				rejectedElements.add(allProjects[i]);
 			}
 		}
-		ViewerFilter filter= new TypedViewerFilter(acceptedClasses, rejectedElements.toArray());
+		ViewerFilter filter= new TypedViewerFilter(acceptedClasses, rejectedElements.toArray()){
+
+			/* (non-Javadoc)
+			 * @see org.eclipse.jdt.internal.ui.wizards.TypedViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+			 */
+			public boolean select(Viewer viewer, Object parentElement, Object element) {
+				if (element instanceof IFolder && ((IFolder)element).isVirtual()) {
+					return false;
+				}
+				return super.select(viewer, parentElement, element);
+			}
+		};
 
 		ILabelProvider lp= new WorkbenchLabelProvider();
 		ITreeContentProvider cp= new FakeFolderBaseWorkbenchContentProvider();
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/VariableBlock.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/VariableBlock.java
index 00f2da0..c5c3030 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/VariableBlock.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/VariableBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -412,8 +412,6 @@ public class VariableBlock {
 				if (name.equals(initSelection)) {
 					initSelectedElement= elem;
 				}
-			} else {
-				JavaPlugin.logErrorMessage("VariableBlock: Classpath variable with null value: " + name); //$NON-NLS-1$
 			}
 		}
 
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/AddFolderToBuildpathAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/AddFolderToBuildpathAction.java
index 33be986..f10c5ba 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/AddFolderToBuildpathAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/AddFolderToBuildpathAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -285,10 +285,13 @@ public class AddFolderToBuildpathAction extends BuildpathModifierAction {
 
 					if (ClasspathModifier.isInExternalOrArchive(fragment))
 	                    return false;
+					IResource res;
+					if ((res= fragment.getResource()) != null && res.isVirtual())
+						return false;
 				} else if (element instanceof IFolder) {
 					IProject project= ((IFolder)element).getProject();
 					IJavaProject javaProject= JavaCore.create(project);
-					if (javaProject == null || !javaProject.exists())
+					if (javaProject == null || !javaProject.exists() || ((IFolder)element).isVirtual())
 						return false;
 				} else {
 					return false;
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementImageDescriptor.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementImageDescriptor.java
index 5cb84b1..5f4a17a 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementImageDescriptor.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementImageDescriptor.java
@@ -87,11 +87,11 @@ public class JavaElementImageDescriptor extends CompositeImageDescriptor {
 	public final static int TRANSIENT= 	0x1000;
 
 	/**
-	 * Flag to render the project error adornment.
+	 * Flag to render the build path error adornment.
 	 * @since 3.6
 	 */
 	//TODO: make API in 3.7, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=308672
-	final static int PROJECT_ERROR= PackageExplorerProblemsDecorator.PROJECT_ERROR;
+	final static int BUILDPATH_ERROR= PackageExplorerProblemsDecorator.BUILDPATH_ERROR;
 
 	private ImageDescriptor fBaseImage;
 	private int fFlags;
@@ -298,8 +298,8 @@ public class JavaElementImageDescriptor extends CompositeImageDescriptor {
 		if ((fFlags & ERROR) != 0) {
 			addBottomLeftImage(JavaPluginImages.DESC_OVR_ERROR, pos);
 		}
-		if ((fFlags & PackageExplorerProblemsDecorator.PROJECT_ERROR) != 0) {
-			addBottomLeftImage(JavaPluginImages.DESC_OVR_PROJECT_ERROR, pos);
+		if ((fFlags & PackageExplorerProblemsDecorator.BUILDPATH_ERROR) != 0) {
+			addBottomLeftImage(JavaPluginImages.DESC_OVR_BUILDPATH_ERROR, pos);
 		}
 		if ((fFlags & WARNING) != 0) {
 			addBottomLeftImage(JavaPluginImages.DESC_OVR_WARNING, pos);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/OverrideIndicatorLabelDecorator.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/OverrideIndicatorLabelDecorator.java
index 01fdf6f..ca823ab 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/OverrideIndicatorLabelDecorator.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/OverrideIndicatorLabelDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -150,11 +150,11 @@ public class OverrideIndicatorLabelDecorator implements ILabelDecorator, ILightw
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
+	 * 
 	 * @param method The element to decorate
-	 * @return Resulting decorations (combination of JavaElementImageDescriptor.IMPLEMENTS
-	 * and JavaElementImageDescriptor.OVERRIDES)
-	 * @throws JavaModelException
-	 *
+	 * @return Resulting decorations (combination of JavaElementImageDescriptor.IMPLEMENTS and
+	 *         JavaElementImageDescriptor.OVERRIDES)
+	 * @throws JavaModelException if accessing a Java Model element fails
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	protected int getOverrideIndicators(IMethod method) throws JavaModelException {
@@ -201,14 +201,15 @@ public class OverrideIndicatorLabelDecorator implements ILabelDecorator, ILightw
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
+	 * 
 	 * @param type The declaring type of the method to decorate.
 	 * @param hierarchy The type hierarchy of the declaring type.
 	 * @param name The name of the method to find.
 	 * @param paramTypes The parameter types of the method to find.
 	 * @return The resulting decoration.
-	 * @throws JavaModelException
+	 * @throws JavaModelException if accessing a Java Model element fails
 	 * @deprecated Not used anymore. This method is not accurate for methods in generic types.
-	 *
+	 * 
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	protected int findInHierarchy(IType type, ITypeHierarchy hierarchy, String name, String[] paramTypes) throws JavaModelException {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
index 900c7a6..adff97a 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
@@ -43,6 +43,7 @@ import org.eclipse.ui.texteditor.MarkerAnnotation;
 
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaModelMarker;
 import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.ISourceReference;
 import org.eclipse.jdt.core.JavaModelException;
@@ -107,7 +108,14 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
 
 	private static final int ERRORTICK_WARNING= JavaElementImageDescriptor.WARNING;
 	private static final int ERRORTICK_ERROR= JavaElementImageDescriptor.ERROR;
-	private static final int ERRORTICK_PROJECT_ERROR= PackageExplorerProblemsDecorator.PROJECT_ERROR;
+	private static final int ERRORTICK_BUILDPATH_ERROR= PackageExplorerProblemsDecorator.BUILDPATH_ERROR;
+
+	/**
+	 * JRE container problem marker type (value
+	 * <code>"org.eclipse.jdt.launching.jreContainerMarker"</code>). This can be used to recognize
+	 * those markers in the workspace that flag problems in the JRE container.
+	 */
+	private static final String JRE_CONTAINER_PROBLEM_MARKER= "org.eclipse.jdt.launching.jreContainerMarker"; //$NON-NLS-1$
 
 	private ImageDescriptorRegistry fRegistry;
 	private boolean fUseNewRegistry= false;
@@ -239,9 +247,13 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
 		int severity= 0;
 		if (sourceElement == null) {
 			if (res instanceof IProject) {
-				severity= res.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_ZERO);
+				severity= res.findMaxProblemSeverity(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, true, IResource.DEPTH_ZERO);
+				if (severity == IMarker.SEVERITY_ERROR) {
+					return ERRORTICK_BUILDPATH_ERROR;
+				}
+				severity= res.findMaxProblemSeverity(JRE_CONTAINER_PROBLEM_MARKER, true, IResource.DEPTH_ZERO);
 				if (severity == IMarker.SEVERITY_ERROR) {
-					return ERRORTICK_PROJECT_ERROR;
+					return ERRORTICK_BUILDPATH_ERROR;
 				}
 			}
 			severity= res.findMaxProblemSeverity(IMarker.PROBLEM, true, depth);
@@ -407,8 +419,8 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
 		int adornmentFlags= computeAdornmentFlags(element);
 		if (adornmentFlags == ERRORTICK_ERROR) {
 			decoration.addOverlay(JavaPluginImages.DESC_OVR_ERROR);
-		} else if (adornmentFlags == ERRORTICK_PROJECT_ERROR) {
-			decoration.addOverlay(JavaPluginImages.DESC_OVR_PROJECT_ERROR);
+		} else if (adornmentFlags == ERRORTICK_BUILDPATH_ERROR) {
+			decoration.addOverlay(JavaPluginImages.DESC_OVR_BUILDPATH_ERROR);
 		} else if (adornmentFlags == ERRORTICK_WARNING) {
 			decoration.addOverlay(JavaPluginImages.DESC_OVR_WARNING);
 		}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddUnimplementedConstructorsAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddUnimplementedConstructorsAction.java
index f18b242..bebac1c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddUnimplementedConstructorsAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddUnimplementedConstructorsAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindImplementOccurrencesAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindImplementOccurrencesAction.java
index e8f1029..6eef61e 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindImplementOccurrencesAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindImplementOccurrencesAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -88,8 +88,8 @@ public class FindImplementOccurrencesAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindMethodExitOccurrencesAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindMethodExitOccurrencesAction.java
index da802f6..20076f6 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindMethodExitOccurrencesAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindMethodExitOccurrencesAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -88,8 +88,8 @@ public class FindMethodExitOccurrencesAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindOccurrencesInFileAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindOccurrencesInFileAction.java
index 25156c8..e427aac 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindOccurrencesInFileAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindOccurrencesInFileAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -197,8 +197,8 @@ public class FindOccurrencesInFileAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InferTypeArgumentsAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InferTypeArgumentsAction.java
index 3b63cc9..05508fc 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InferTypeArgumentsAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InferTypeArgumentsAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -83,8 +83,8 @@ public class InferTypeArgumentsAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineAction.java
index 9fb26d3..fe5f4e8 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineTempAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineTempAction.java
index 460ee09..d5454dc 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineTempAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/InlineTempAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -79,8 +79,8 @@ public class InlineTempAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceFactoryAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceFactoryAction.java
index 5299946..91315b9 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceFactoryAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceFactoryAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -121,8 +121,8 @@ public class IntroduceFactoryAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceIndirectionAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceIndirectionAction.java
index 6e0bbef..82a1545 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceIndirectionAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceIndirectionAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -103,8 +103,8 @@ public class IntroduceIndirectionAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceParameterAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceParameterAction.java
index 10d8c82..862a80c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceParameterAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IntroduceParameterAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -63,8 +63,8 @@ public class IntroduceParameterAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ModifyParametersAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ModifyParametersAction.java
index 879b06b..52d9204 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ModifyParametersAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ModifyParametersAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -102,8 +102,8 @@ public class ModifyParametersAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenTypeHierarchyAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenTypeHierarchyAction.java
index 4023fcd..3cfc86f 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenTypeHierarchyAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenTypeHierarchyAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PullUpAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PullUpAction.java
index 5fca1be..7daa1eb 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PullUpAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PullUpAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -172,8 +172,8 @@ public class PullUpAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PushDownAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PushDownAction.java
index 9466cac..236f683 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PushDownAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/PushDownAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -170,8 +170,8 @@ public class PushDownAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
index 47a6e7e..cd2b9a3 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
@@ -446,11 +446,11 @@ public class RefactorActionGroup extends ActionGroup {
 	 * Sets actionDefinitionId, updates enablement, adds to fActions,
 	 * and adds selection changed listener if provider is not <code>null</code>.
 	 *
-	 * @param action
+	 * @param action the action 
 	 * @param provider can be <code>null</code>
-	 * @param specialProvider a sepectil selection provider or <code>null</code>
-	 * @param selection
-	 * @param actionDefinitionId
+	 * @param specialProvider a special selection provider or <code>null</code>
+	 * @param selection the selection
+	 * @param actionDefinitionId the action definition id 
 	 */
 	private void initUpdatingAction(SelectionDispatchAction action, ISelectionProvider provider, ISelectionProvider specialProvider, ISelection selection, String actionDefinitionId) {
 		action.setActionDefinitionId(actionDefinitionId);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/SelfEncapsulateFieldAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/SelfEncapsulateFieldAction.java
index 4a6a659..0cac17b 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/SelfEncapsulateFieldAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/SelfEncapsulateFieldAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -92,8 +92,8 @@ public class SelfEncapsulateFieldAction extends SelectionDispatchAction {
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/UseSupertypeAction.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/UseSupertypeAction.java
index 3e5ea09..105b471 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/UseSupertypeAction.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/UseSupertypeAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -136,8 +136,8 @@ public class UseSupertypeAction extends SelectionDispatchAction{
 
 	/**
 	 * Note: This method is for internal use only. Clients should not call this method.
-	 * @param selection
-	 *
+	 * 
+	 * @param selection the Java text selection
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public void selectionChanged(JavaTextSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java
index c8360dc..89e1798 100755
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -480,12 +480,13 @@ public class DefaultJavaFoldingStructureProvider implements IJavaFoldingStructur
 
 			if (captionLine < lastLine) {
 				int postOffset= document.getLineOffset(captionLine + 1);
-				IRegion postRegion= new Region(postOffset, offset + length - postOffset);
-
-				if (preRegion == null)
-					return new IRegion[] { postRegion };
-
-				return new IRegion[] { preRegion, postRegion };
+				int postLength= offset + length - postOffset;
+				if (postLength > 0) {
+					IRegion postRegion= new Region(postOffset, postLength);
+					if (preRegion == null)
+						return new IRegion[] { postRegion };
+					return new IRegion[] { preRegion, postRegion };
+				}
 			}
 
 			if (preRegion != null)
@@ -611,12 +612,13 @@ public class DefaultJavaFoldingStructureProvider implements IJavaFoldingStructur
 
 			if (captionLine < lastLine) {
 				int postOffset= document.getLineOffset(captionLine + 1);
-				IRegion postRegion= new Region(postOffset, offset + length - postOffset);
-
-				if (preRegion == null)
-					return new IRegion[] { postRegion };
-
-				return new IRegion[] { preRegion, postRegion };
+				int postLength= offset + length - postOffset;
+				if (postLength > 0) {
+					IRegion postRegion= new Region(postOffset, postLength);
+					if (preRegion == null)
+						return new IRegion[] { postRegion };
+					return new IRegion[] { preRegion, postRegion };
+				}
 			}
 
 			if (preRegion != null)
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/JavadocExportWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/JavadocExportWizardPage.java
index 20ada64..0d0338b 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/JavadocExportWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/JavadocExportWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -147,9 +147,11 @@ public abstract class JavadocExportWizardPage {
 
 	/**
 	 * Called when the Javadoc ANT script is generated.
-	 *
-	 * @param xmlDocument The XML element for the 'javadoc' node. Clients can add or modify arguments.
-	 * See the <a href="http://ant.apache.org/manual/CoreTasks/javadoc.html">Javadoc ANT task</a> specification for the format of the arguments.
+	 * 
+	 * @param xmlDocument The XML element for the 'javadoc' node. Clients can add or modify
+	 *            arguments. See the <a
+	 *            href="http://ant.apache.org/manual/Tasks/javadoc.html">Javadoc ANT task</a>
+	 *            specification for the format of the arguments.
 	 */
 	public void updateAntScript(Element xmlDocument) {
 	}
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
index c328d77..598b69c 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
@@ -38,6 +38,7 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
 import org.eclipse.ui.views.contentoutline.ContentOutline;
 
+import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaModel;
 import org.eclipse.jdt.core.IJavaProject;
@@ -207,7 +208,13 @@ public abstract class NewContainerWizardPage extends NewElementWizardPage {
 			try {
 				IJavaProject[] projects= JavaCore.create(getWorkspaceRoot()).getJavaProjects();
 				if (projects.length == 1) {
-					jelem= projects[0];
+					IClasspathEntry[] rawClasspath= projects[0].getRawClasspath();
+					for (int i= 0; i < rawClasspath.length; i++) {
+						if (rawClasspath[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {// add only if the project contains a source folder
+							jelem= projects[0];
+							break;
+						}
+					}
 				}
 			} catch (JavaModelException e) {
 				JavaPlugin.log(e);
@@ -338,6 +345,10 @@ public abstract class NewContainerWizardPage extends NewElementWizardPage {
 				IJavaProject jproject= JavaCore.create(proj);
 				fCurrRoot= jproject.getPackageFragmentRoot(res);
 				if (res.exists()) {
+					if (res.isVirtual()) {
+						status.setError(NewWizardMessages.NewContainerWizardPage_error_FolderIsVirtual);
+						return status;
+					}
 					try {
 						if (!proj.hasNature(JavaCore.NATURE_ID)) {
 							if (resType == IResource.PROJECT) {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageOne.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageOne.java
index 4fad116..e204ea4 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageOne.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageOne.java
@@ -604,7 +604,7 @@ public class NewJavaProjectWizardPageOne extends WizardPage {
 					return environments[i].getId();
 			}
 
-			return "J2SE-1.6"; //$NON-NLS-1$
+			return "JavaSE-1.6"; //$NON-NLS-1$
 		}
 
 		private String getDefaultJVMLabel() {
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
index ebe9088..e2c35d4 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,6 +30,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -264,6 +265,11 @@ public class NewPackageWizardPage extends NewContainerWizardPage {
 						status.setError(NewWizardMessages.NewPackageWizardPage_error_PackageNotShown);
 					}
 				} else {
+					IResource resource= pack.getResource();
+					if (resource != null && !ResourcesPlugin.getWorkspace().validateFiltered(resource).isOK()) {
+						status.setError(NewWizardMessages.NewPackageWizardPage_error_PackageNameFiltered);
+						return status;
+					}
 					URI location= pack.getResource().getLocationURI();
 					if (location != null) {
 						IFileStore store= EFS.getStore(location);
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
index 67cd6d9..10789f9 100644
--- a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
+++ b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
@@ -45,6 +45,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.SubProgressMonitor;
 
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 
 import org.eclipse.text.edits.TextEdit;
 
@@ -1433,6 +1434,17 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage {
 			}
 
 			fCurrPackage= root.getPackageFragment(packName);
+			IResource resource= fCurrPackage.getResource();
+			if (resource != null){
+				if (resource.isVirtual()){
+					status.setError(NewWizardMessages.NewTypeWizardPage_error_PackageIsVirtual);
+					return status;
+				}			
+				if (!ResourcesPlugin.getWorkspace().validateFiltered(resource).isOK()) {
+					status.setError(NewWizardMessages.NewTypeWizardPage_error_PackageNameFiltered);
+					return status;
+				}
+			}
 		} else {
 			status.setError(""); //$NON-NLS-1$
 		}
@@ -1599,6 +1611,10 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage {
 					status.setError(NewWizardMessages.NewTypeWizardPage_error_TypeNameExists);
 					return status;
 				}
+				if (!ResourcesPlugin.getWorkspace().validateFiltered(resource).isOK()) {
+					status.setError(NewWizardMessages.NewTypeWizardPage_error_TypeNameFiltered);
+					return status;
+				}
 				URI location= resource.getLocationURI();
 				if (location != null) {
 					try {
@@ -2156,13 +2172,15 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage {
 	/**
 	 * Uses the New Java file template from the code template page to generate a
 	 * compilation unit with the given type content.
+	 * 
 	 * @param cu The new created compilation unit
 	 * @param typeContent The content of the type, including signature and type
 	 * body.
 	 * @param lineDelimiter The line delimiter to be used.
 	 * @return String Returns the result of evaluating the new file template
 	 * with the given type content.
-	 * @throws CoreException
+	 * @throws CoreException when fetching the file comment fails or fetching the content for the
+	 *             new compilation unit fails
 	 * @since 2.1
 	 */
 	protected String constructCUContent(ICompilationUnit cu, String typeContent, String lineDelimiter) throws CoreException {
@@ -2355,7 +2373,7 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage {
 	 * @param lineDelimiter the line delimiter to use
 	 * @return the file comment or <code>null</code> if a file comment
 	 * is not desired
-	 * @throws CoreException
+	 * @throws CoreException when fetching the file comment fails
      *
      * @since 3.1
 	 */
diff --git a/eclipse/plugins/org.eclipse.jdt/about.properties b/eclipse/plugins/org.eclipse.jdt/about.properties
index a6b7019..e436179 100644
--- a/eclipse/plugins/org.eclipse.jdt/about.properties
+++ b/eclipse/plugins/org.eclipse.jdt/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Java Development Tools\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/jdt
 
diff --git a/eclipse/plugins/org.eclipse.jdt/plugin.properties b/eclipse/plugins/org.eclipse.jdt/plugin.properties
index ec966fb..28fbccf 100644
--- a/eclipse/plugins/org.eclipse.jdt/plugin.properties
+++ b/eclipse/plugins/org.eclipse.jdt/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -15,4 +15,4 @@ cheatsheet.category.jdt = Java Development
 cheatsheet.helloworld.name = Create a Hello World application
 cheatsheet.helloworld.desc =  Learn how to create a simple Java application that prints "Hello world!". 
 cheatsheet.helloworld.swt.name = Create a Hello World SWT application
-cheatsheet.helloworld.swt.desc = Learn how to create a standalone SWT Java application that displays a window to the user.
+cheatsheet.helloworld.swt.desc = Learn how to create a stand-alone SWT Java application that displays a window to the user.
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/DialogPageSupport.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/DialogPageSupport.java
index b6d006b..aa9eca7 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/DialogPageSupport.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/DialogPageSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/IValidationMessageProvider.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/IValidationMessageProvider.java
index 5853dbe..1da2b23 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/IValidationMessageProvider.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/IValidationMessageProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Ovidio Mallo and others.
+ * Copyright (c) 2009, 2010 Ovidio Mallo and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/MaxSeverityValidationStatusProvider.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/MaxSeverityValidationStatusProvider.java
index ad22040..50fea47 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/MaxSeverityValidationStatusProvider.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/MaxSeverityValidationStatusProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Ovidio Mallo and others.
+ * Copyright (c) 2009, 2010 Ovidio Mallo and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/TitleAreaDialogSupport.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/TitleAreaDialogSupport.java
index 95d1571..eafba89 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/TitleAreaDialogSupport.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/TitleAreaDialogSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/ValidationMessageProvider.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/ValidationMessageProvider.java
index 83aa195..00fcb10 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/ValidationMessageProvider.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/dialog/ValidationMessageProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Ovidio Mallo and others.
+ * Copyright (c) 2009, 2010 Ovidio Mallo and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationSupport.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationSupport.java
index a4d39db..2541527 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationSupport.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
index 7f28919..db2add3 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/preference/PreferencePageSupport.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/preference/PreferencePageSupport.java
index 2a580a4..34dca0a 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/preference/PreferencePageSupport.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/preference/PreferencePageSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapCellLabelProvider.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapCellLabelProvider.java
index 328e471..6ef1d31 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapCellLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapCellLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapLabelProvider.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapLabelProvider.java
index 6be3837..7e7066c 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableMapLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableValueEditingSupport.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableValueEditingSupport.java
index da69029..020fbec 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableValueEditingSupport.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableValueEditingSupport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewerProperties.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewerProperties.java
index a470a53..398a72d 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewerProperties.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewerProperties.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewersObservables.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewersObservables.java
index 6bcce20..0f36401 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewersObservables.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ViewersObservables.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/swt/CompositeUpdater.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/swt/CompositeUpdater.java
index e8aec87..8ccf7f5 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/swt/CompositeUpdater.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/provisional/swt/CompositeUpdater.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboItemsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboItemsProperty.java
index 7ebda54..2a6de88 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboItemsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/CComboItemsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ComboItemsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ComboItemsProperty.java
index a46f984..12c8588 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ComboItemsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ComboItemsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ControlStringListProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ControlStringListProperty.java
index a387a8f..b06d8e4 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ControlStringListProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ControlStringListProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ListItemsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ListItemsProperty.java
index 36ceb09..c5e3035 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ListItemsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/ListItemsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/SWTDelayedObservableValueDecorator.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/SWTDelayedObservableValueDecorator.java
index f78b8b2..2f7031b 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/SWTDelayedObservableValueDecorator.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/swt/SWTDelayedObservableValueDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 Matthew Hall and others.
+ * Copyright (c) 2007, 2009 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckableCheckedElementsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckableCheckedElementsProperty.java
index f5ab894..dedb0c1 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckableCheckedElementsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckableCheckedElementsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTableViewerCheckedElementsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTableViewerCheckedElementsProperty.java
index 6d11133..786fac2 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTableViewerCheckedElementsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTableViewerCheckedElementsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTreeViewerCheckedElementsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTreeViewerCheckedElementsProperty.java
index 519a361..c54268c 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTreeViewerCheckedElementsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxTreeViewerCheckedElementsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxViewerCheckedElementsProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxViewerCheckedElementsProperty.java
index 7257380..afb1c3e 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxViewerCheckedElementsProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/CheckboxViewerCheckedElementsProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionChangedListener.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionChangedListener.java
index ce802fd..3c2d21b 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionChangedListener.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionChangedListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Matthew Hall and others.
+ * Copyright (c) 2009, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderMultipleSelectionProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderMultipleSelectionProperty.java
index 19c4158..88cbb41 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderMultipleSelectionProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderMultipleSelectionProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderSingleSelectionProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderSingleSelectionProperty.java
index d56528a..758fa2d 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderSingleSelectionProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/SelectionProviderSingleSelectionProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/StructuredViewerFiltersProperty.java b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/StructuredViewerFiltersProperty.java
index 87e8447..731ea43 100644
--- a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/StructuredViewerFiltersProperty.java
+++ b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/StructuredViewerFiltersProperty.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Matthew Hall and others.
+ * Copyright (c) 2008, 2010 Matthew Hall and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/SourceViewerInformationControl.java b/eclipse/plugins/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/SourceViewerInformationControl.java
index 92882fc..5683bd1 100644
--- a/eclipse/plugins/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/SourceViewerInformationControl.java
+++ b/eclipse/plugins/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/SourceViewerInformationControl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,7 @@ import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.FontData;
 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.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -31,6 +32,8 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 
+import org.eclipse.core.runtime.Assert;
+
 import org.eclipse.jface.resource.JFaceResources;
 
 import org.eclipse.jface.text.Document;
@@ -67,6 +70,12 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 	private Label fSeparator;
 	/** The font of the optional status text label.*/
 	private Font fStatusTextFont;
+	/**
+	 * The color of the optional status text label or <code>null</code> if none.
+	 * 
+	 * @since 3.6
+	 */
+	private Color fStatusTextForegroundColor;
 	/** The maximal widget width. */
 	private int fMaxWidth;
 	/** The maximal widget height. */
@@ -158,8 +167,8 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 			GridData gd2= new GridData(GridData.FILL_VERTICAL | GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
 			fStatusField.setLayoutData(gd2);
 
-			// Regarding the color see bug 41128
-			fStatusField.setForeground(display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
+			fStatusTextForegroundColor= new Color(fStatusField.getDisplay(), blend(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB(), display.getSystemColor(SWT.COLOR_INFO_FOREGROUND).getRGB(), 0.56f));
+			fStatusField.setForeground(fStatusTextForegroundColor);
 
 			fStatusField.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
 		}
@@ -168,6 +177,32 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 	}
 
 	/**
+	 * Returns an RGB that lies between the given foreground and background
+	 * colors using the given mixing factor. A <code>factor</code> of 1.0 will produce a
+	 * color equal to <code>fg</code>, while a <code>factor</code> of 0.0 will produce one
+	 * equal to <code>bg</code>.
+	 * @param bg the background color
+	 * @param fg the foreground color
+	 * @param factor the mixing factor, must be in [0,&nbsp;1]
+	 *
+	 * @return the interpolated color
+	 * @since 3.6
+	 */
+	private static RGB blend(RGB bg, RGB fg, float factor) {
+		// copy of org.eclipse.jface.internal.text.revisions.Colors#blend(..)
+		Assert.isLegal(bg != null);
+		Assert.isLegal(fg != null);
+		Assert.isLegal(factor >= 0f && factor <= 1f);
+		
+		float complement= 1f - factor;
+		return new RGB(
+				(int) (complement * bg.red + factor * fg.red),
+				(int) (complement * bg.green + factor * fg.green),
+				(int) (complement * bg.blue + factor * fg.blue)
+		);
+	}
+	
+	/**
 	 * @see org.eclipse.jface.text.IInformationControlExtension2#setInput(java.lang.Object)
 	 * @param input the input object
 	 */
@@ -204,8 +239,11 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 	public void widgetDisposed(DisposeEvent event) {
 		if (fStatusTextFont != null && !fStatusTextFont.isDisposed())
 			fStatusTextFont.dispose();
-
 		fStatusTextFont= null;
+		if (fStatusTextForegroundColor != null && !fStatusTextForegroundColor.isDisposed())
+			fStatusTextForegroundColor.dispose();
+		fStatusTextForegroundColor= null;
+		
 		fTextFont= null;
 		fShell= null;
 		fText= null;
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/ResizableShellSupport.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/ResizableShellSupport.java
deleted file mode 100644
index 10d967a..0000000
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/ResizableShellSupport.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.text;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackAdapter;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Shell;
-
-import org.eclipse.jface.util.Geometry;
-
-/**
- * Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=23980 : Shells without borders are
- * not resizable on GTK.
- * 
- * @since 3.6
- */
-public class ResizableShellSupport {
-	
-	/**
-	 * Listeners installed on the shell.
-	 */
-	private static class MouseListenerMix extends MouseTrackAdapter implements MouseListener, MouseMoveListener {
-		/**
-		 * The shell.
-		 */
-		private final Shell fShell;
-		/**
-		 * The minimal shell width.
-		 */
-		private final int fMinShellWidth;
-		/**
-		 * The minimal shell height.
-		 */
-		private final int fMinShellHeight;
-		
-		/**
-		 * The last detected edges.
-		 */
-		private int fCurrentEdges;
-		/**
-		 * The shell's original cursor.
-		 */
-		private Cursor fOriginalCursor;
-		
-		/**
-		 * The location of the mouseDown event (display coordinates).
-		 */
-		private Point fOriginalMouseLoc;
-		/**
-		 * The bounds of the shell on mouseDown (display coordinates).
-		 */
-		private Rectangle fOriginalShellBounds;
-		
-		/**
-		 * Creates a mouse listener mix
-		 * @param shell the shell
-		 */
-		public MouseListenerMix(Shell shell) {
-			fShell= shell;
-			Rectangle trim= shell.computeTrim(0, 0, 0, 0);
-			fMinShellWidth= trim.width + 2 * TRIM_SIZE;
-			fMinShellHeight= trim.height + 2 * TRIM_SIZE;
-		}
-
-		/*
-		 * @see org.eclipse.swt.events.MouseMoveListener#mouseMove(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseMove(MouseEvent e) {
-			if (fOriginalMouseLoc != null) {
-				Point mouse= fShell.toDisplay(e.x, e.y);
-				int dx= mouse.x - fOriginalMouseLoc.x;
-				int dy= mouse.y - fOriginalMouseLoc.y;
-	
-				Rectangle sb= Geometry.copy(fOriginalShellBounds);
-				if ((fCurrentEdges & SWT.LEFT) != 0) {
-					int w= Math.max(sb.width - dx, fMinShellWidth);
-					sb.x+= sb.width - w;
-					sb.width= w;
-				}
-				if ((fCurrentEdges & SWT.RIGHT) != 0) {
-					sb.width= Math.max(sb.width + dx, fMinShellWidth);
-				}
-				if ((fCurrentEdges & SWT.TOP) != 0) {
-					int h= Math.max(sb.height - dy, fMinShellHeight);
-					sb.y+= sb.height - h;
-					sb.height= h;
-				}
-				if ((fCurrentEdges & SWT.BOTTOM) != 0) {
-					sb.height= Math.max(sb.height + dy, fMinShellHeight);
-				}
-				fShell.setBounds(sb);
-	
-			} else {
-				int edges= computeEdges(e);
-				setEdgesAndCursor(edges);
-			}
-		}
-		
-		/*
-		 * @see org.eclipse.swt.events.MouseTrackAdapter#mouseExit(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseExit(MouseEvent e) {
-			setEdgesAndCursor(0);
-		}
-		
-		/*
-		 * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseDown(MouseEvent e) {
-			if (fCurrentEdges != 0) {
-				fOriginalMouseLoc= fShell.toDisplay(e.x, e.y);
-				fOriginalShellBounds= fShell.getBounds();
-			}
-		}
-		
-		/*
-		 * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseUp(MouseEvent e) {
-			fOriginalMouseLoc= null;
-			fOriginalShellBounds= null;
-			fShell.setFocus(); // focus should not stay in shell trim
-		}
-		
-		/*
-		 * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseDoubleClick(MouseEvent e) {
-			// not interesting
-		}
-	
-		/**
-		 * Returns the edges at which the mouse is pointing. The result is one of
-		 * {@link SWT#TOP}, {@link SWT#BOTTOM}, {@link SWT#LEFT}, or {@link SWT#RIGHT}, or a
-		 * sensible combination thereof.
-		 * 
-		 * @param e the mouse event
-		 * @return the edges or 0 if the mouse is not over an edge
-		 */
-		private int computeEdges(MouseEvent e) {
-			Rectangle sb= fShell.getClientArea();
-	
-			int edges= 0;
-			if (sb.contains(e.x, e.y)) {
-				int bottom= sb.y + sb.height - e.y;
-				int top= e.y - sb.y;
-				int right= sb.x + sb.width - e.x;
-				int left= e.x - sb.x;
-				
-				// prioritize bottom-right:
-				if (bottom <= TRIM_SIZE) {
-					edges|= SWT.BOTTOM;
-				} else if (top <= TRIM_SIZE) {
-					edges|= SWT.TOP;
-				}
-				if (right <= TRIM_SIZE) {
-					edges|= SWT.RIGHT;
-				} else if (left <= TRIM_SIZE) {
-					edges|= SWT.LEFT;
-				}
-				
-				// enlarge corners, prioritizing bottom-right:
-				if ((edges & SWT.BOTTOM) != 0) {
-					edges= enlargeCorner(SWT.BOTTOM, right, SWT.RIGHT, left, SWT.LEFT);
-				} else if ((edges & SWT.RIGHT) != 0) {
-					edges= enlargeCorner(SWT.RIGHT, bottom, SWT.BOTTOM, top, SWT.TOP);
-				} else if ((edges & SWT.LEFT) != 0) {
-					edges= enlargeCorner(SWT.LEFT, bottom, SWT.BOTTOM, top, SWT.TOP);
-				} else if ((edges & SWT.TOP) != 0) {
-					edges= enlargeCorner(SWT.TOP, right, SWT.RIGHT, left, SWT.LEFT);
-				}
-			}
-			return edges;
-		}
-	
-		/**
-		 * Adds an adjacent edge if the distance to a corner is small enough. First corner gets
-		 * priority.
-		 * 
-		 * @param edge the base edge
-		 * @param distance1 distance to first corner
-		 * @param edge1 adjacent edge of first corner
-		 * @param distance2 distance to second corner
-		 * @param edge2 adjacent edge of second corner
-		 * @return the new edges
-		 */
-		private static int enlargeCorner(int edge, int distance1, int edge1, int distance2, int edge2) {
-			int edges= edge;
-			if (distance1 <= CORNER_SIZE) {
-				edges|= edge1;
-			} else if (distance2 <= CORNER_SIZE) {
-				edges|= edge2;
-			}
-			return edges;
-		}
-	
-		/**
-		 * Sets the cursor for the given edges or resets the original if 0.
-		 * 
-		 * @param edges the edges or 0
-		 */
-		private void setEdgesAndCursor(int edges) {
-			if (edges == fCurrentEdges)
-				return;
-		
-			if (edges == 0) {
-				fShell.setCursor(fOriginalCursor);
-				fOriginalCursor= null;
-				fCurrentEdges= edges;
-				fOriginalMouseLoc= null;
-				fOriginalShellBounds= null;
-				return;
-			}
-			
-			if (fCurrentEdges == 0) {
-				fOriginalCursor= fShell.getCursor();
-			}
-			fCurrentEdges= edges;
-			
-			int style= 0;
-			if ((edges & SWT.TOP) != 0) {
-				if ((edges & SWT.LEFT) != 0) {
-					style= SWT.CURSOR_SIZENW;
-				} else if ((edges & SWT.RIGHT) != 0) {
-					style= SWT.CURSOR_SIZENE;
-				} else {
-					style= SWT.CURSOR_SIZEN;
-				}
-			} else if ((edges & SWT.BOTTOM) != 0) {
-				if ((edges & SWT.LEFT) != 0) {
-					style= SWT.CURSOR_SIZESW;
-				} else if ((edges & SWT.RIGHT) != 0) {
-					style= SWT.CURSOR_SIZESE;
-				} else {
-					style= SWT.CURSOR_SIZES;
-				}
-			} else if ((edges & SWT.LEFT) != 0) {
-				style= SWT.CURSOR_SIZEW;
-			} else if ((edges & SWT.RIGHT) != 0) {
-				style= SWT.CURSOR_SIZEE;
-			}
-		
-			Cursor cursor= fShell.getDisplay().getSystemCursor(style);
-			fShell.setCursor(cursor);
-		}
-	}
-
-	
-	/**
-	 * Width of resize trim.
-	 */
-	private static final int TRIM_SIZE= 4;
-	/**
-	 * Enlarged area around corners in which dual-direction is active when mouse is in border.
-	 */
-	private static final int CORNER_SIZE= 22;
-
-	/**
-	 * Makes the given shell resizable on all platforms. The shell must have a {@link GridLayout}.
-	 * If the shell is not resizable, this method enlarges the {@link GridLayout#marginWidth
-	 * marginWidth} and {@link GridLayout#marginHeight marginHeight} and expects that the added area
-	 * is not being shrunken or used in any way by other parties.
-	 * 
-	 * @param shell the shell
-	 */
-	public static void makeResizable(final Shell shell) {
-		if ((shell.getStyle() & SWT.RESIZE) != 0)
-			return;
-		
-		GridLayout layout= ((GridLayout) shell.getLayout());
-		layout.marginWidth+= TRIM_SIZE;
-		layout.marginHeight+= TRIM_SIZE;
-		
-		MouseListenerMix listenerMix= new MouseListenerMix(shell);
-		shell.addMouseMoveListener(listenerMix);
-		shell.addMouseTrackListener(listenerMix);
-		shell.addMouseListener(listenerMix);
-		
-		shell.addPaintListener(new PaintListener() {
-			public void paintControl(PaintEvent e) {
-				Rectangle clientArea= shell.getClientArea();
-				int gap= - TRIM_SIZE / 2;
-				Geometry.expand(clientArea, gap, gap - 1, gap, gap - 1);
-				e.gc.setLineWidth(TRIM_SIZE);
-				e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
-				e.gc.drawRectangle(clientArea);
-			}
-		});
-	}
-}
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java
index 83db9db..2894c7b 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java
@@ -402,7 +402,7 @@ public final class SelectionProcessor {
 			for (int offset= 0; offset < lineLength; offset++) {
 				if (startColumn == -1 && visual >= visualStartColumn)
 					startColumn= offset;
-				if (visual == visualEndColumn) {
+				if (visual >= visualEndColumn) {
 					endColumn= offset;
 					break;
 				}
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
index a68b15b..1754b0d 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/html/HTMLPrinter.java
@@ -220,7 +220,7 @@ public class HTMLPrinter {
 	}
 
 	public static void addPageEpilog(StringBuffer buffer) {
-		buffer.append("</font></body></html>"); //$NON-NLS-1$
+		buffer.append("</body></html>"); //$NON-NLS-1$
 	}
 
 	public static void startBulletList(StringBuffer buffer) {
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
index 76f51d1..861d2a0 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControl.java
@@ -44,7 +44,7 @@ import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.ListenerList;
 
 import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.internal.text.ResizableShellSupport;
+import org.eclipse.jface.internal.text.revisions.Colors;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.util.Geometry;
 
@@ -87,6 +87,12 @@ public abstract class AbstractInformationControl implements IInformationControl,
 	 * @since 3.4.2
 	 */
 	private Font fStatusLabelFont;
+	/**
+	 * Color for the label in the status line or <code>null</code> if none.
+	 * 
+	 * @since 3.6
+	 */
+	private Color fStatusLabelForeground;
 	/** The toolbar manager used by the toolbar or <code>null</code> if none. */
 	private final ToolBarManager fToolBarManager;
 	/** Status line toolbar or <code>null</code> if none. */
@@ -95,7 +101,7 @@ public abstract class AbstractInformationControl implements IInformationControl,
 	/** Listener for shell activation and deactivation. */
 	private Listener fShellListener;
 	/** All focus listeners registered to this information control. */
-	private ListenerList fFocusListeners= new ListenerList(ListenerList.IDENTITY);
+	private final ListenerList fFocusListeners= new ListenerList(ListenerList.IDENTITY);
 
 	/** Size constraints, x is the maxWidth and y is the maxHeight, or <code>null</code> if not set. */
 	private Point fSizeConstraints;
@@ -171,7 +177,7 @@ public abstract class AbstractInformationControl implements IInformationControl,
 		if ((shellStyle & SWT.NO_TRIM) != 0)
 			shellStyle&= ~(SWT.NO_TRIM | SWT.SHELL_TRIM); // make sure we get the OS border but no other trims
 
-		fResizable= (shellStyle & SWT.RESIZE) != 0; // on GTK, Shell removes SWT.RESIZE if SWT.ON_TOP is set
+		fResizable= (shellStyle & SWT.RESIZE) != 0;
 		fShell= new Shell(parentShell, shellStyle);
 		Display display= fShell.getDisplay();
 		Color foreground= display.getSystemColor(SWT.COLOR_INFO_FOREGROUND);
@@ -191,10 +197,6 @@ public abstract class AbstractInformationControl implements IInformationControl,
 
 		createStatusComposite(statusFieldText, toolBarManager, foreground, background);
 		
-		if (fResizable) {
-			ResizableShellSupport.makeResizable(fShell);
-		}
-
 		addDisposeListener(new DisposeListener() {
 			public void widgetDisposed(DisposeEvent e) {
 				handleDispose();
@@ -237,8 +239,9 @@ public abstract class AbstractInformationControl implements IInformationControl,
 		}
 		fStatusLabelFont= new Font(fStatusLabel.getDisplay(), fontDatas);
 		fStatusLabel.setFont(fStatusLabelFont);
-
-		fStatusLabel.setForeground(fStatusLabel.getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
+		
+		fStatusLabelForeground= new Color(fStatusLabel.getDisplay(), Colors.blend(background.getRGB(), foreground.getRGB(), 0.56f));
+		fStatusLabel.setForeground(fStatusLabelForeground);
 		fStatusLabel.setBackground(background);
 		setColor(fStatusComposite, foreground, background);
 	}
@@ -522,6 +525,10 @@ public abstract class AbstractInformationControl implements IInformationControl,
 			fStatusLabelFont.dispose();
 			fStatusLabelFont= null;
 		}
+		if (fStatusLabelForeground != null) {
+			fStatusLabelForeground.dispose();
+			fStatusLabelForeground= null;
+		}
 	}
 
 	/*
@@ -580,12 +587,6 @@ public abstract class AbstractInformationControl implements IInformationControl,
 		if (fStatusComposite != null)
 			trim.height+= fStatusComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
 
-		if (fResizable) {
-			GridLayout shellLayout= (GridLayout) fShell.getLayout();
-			int w= shellLayout.marginWidth;
-			int h= shellLayout.marginHeight;
-			Geometry.expand(trim, w, w, h, h);
-		}
 		return trim;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java
index 653681c..acac873 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java
@@ -63,7 +63,6 @@ import org.eclipse.jface.bindings.keys.KeySequence;
 import org.eclipse.jface.bindings.keys.SWTKeySupport;
 import org.eclipse.jface.contentassist.IContentAssistSubjectControl;
 import org.eclipse.jface.internal.text.InformationControlReplacer;
-import org.eclipse.jface.internal.text.ResizableShellSupport;
 import org.eclipse.jface.internal.text.TableOwnerDrawSupport;
 import org.eclipse.jface.preference.JFacePreferences;
 import org.eclipse.jface.resource.JFaceResources;
@@ -119,7 +118,7 @@ class CompletionProposalPopup implements IContentAssistListener {
 		static final int SELECT_PREVIOUS= 2;
 
 
-		private int fOperationCode;
+		private final int fOperationCode;
 
 		/**
 		 * Creates a new selection handler.
@@ -263,7 +262,7 @@ class CompletionProposalPopup implements IContentAssistListener {
 	}
 
 	private final class CommandKeyListener extends KeyAdapter {
-		private KeySequence fCommandSequence;
+		private final KeySequence fCommandSequence;
 
 		private CommandKeyListener(KeySequence keySequence) {
 			fCommandSequence= keySequence;
@@ -288,11 +287,11 @@ class CompletionProposalPopup implements IContentAssistListener {
 	/** The associated text viewer. */
 	private ITextViewer fViewer;
 	/** The associated content assistant. */
-	private ContentAssistant fContentAssistant;
+	private final ContentAssistant fContentAssistant;
 	/** The used additional info controller. */
-	private AdditionalInfoController fAdditionalInfoController;
+	private final AdditionalInfoController fAdditionalInfoController;
 	/** The closing strategy for this completion proposal popup. */
-	private PopupCloser fPopupCloser= new PopupCloser();
+	private final PopupCloser fPopupCloser= new PopupCloser();
 	/** The popup shell. */
 	private Shell fProposalShell;
 	/** The proposal table. */
@@ -302,7 +301,7 @@ class CompletionProposalPopup implements IContentAssistListener {
 	/** The key listener to control navigation. */
 	private ProposalSelectionListener fKeyListener;
 	/** List of document events used for filtering proposals. */
-	private List fDocumentEvents= new ArrayList();
+	private final List fDocumentEvents= new ArrayList();
 	/** Listener filling the document event queue. */
 	private IDocumentListener fDocumentListener;
 	/** The filter list of proposals. */
@@ -331,7 +330,7 @@ class CompletionProposalPopup implements IContentAssistListener {
 	 *
 	 * @since 3.0
 	 */
-	private ContentAssistSubjectControlAdapter fContentAssistSubjectControlAdapter;
+	private final ContentAssistSubjectControlAdapter fContentAssistSubjectControlAdapter;
 	/**
 	 * Remembers the size for this completion proposal popup.
 	 * @since 3.0
@@ -602,7 +601,6 @@ class CompletionProposalPopup implements IContentAssistListener {
 		layout.marginHeight= 0;
 		layout.verticalSpacing= 1;
 		fProposalShell.setLayout(layout);
-		ResizableShellSupport.makeResizable(fProposalShell);
 
 		if (fContentAssistant.isStatusLineVisible()) {
 			createMessageText();
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/hyperlink/MultipleHyperlinkPresenter.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/hyperlink/MultipleHyperlinkPresenter.java
index 0496073..cad1cc5 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/hyperlink/MultipleHyperlinkPresenter.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/hyperlink/MultipleHyperlinkPresenter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -315,6 +315,9 @@ public class MultipleHyperlinkPresenter extends DefaultHyperlinkPresenter {
 		 * Opens the currently selected link.
 		 */
 		private void openSelectedLink() {
+			if (fTable.getSelectionCount() < 1)
+				return;
+			
 			TableItem selection= fTable.getSelection()[0];
 			IHyperlink link= (IHyperlink)selection.getData();
 			fManager.hideInformationControl();
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
index 7da3b77..07f88cc 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
index 866b623..06d813b 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,6 +41,8 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 
+import org.eclipse.jface.util.Util;
+
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -129,6 +131,13 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
 		}
 	}
 
+	/**
+	 * <code>true</code> if we're on a Mac, where "new GC(canvas)" is expensive.
+	 * @see <a href="https://bugs.eclipse.org/298936">bug 298936</a>
+	 * @since 3.6
+	 */
+	private static final boolean IS_MAC= Util.isMac();
+
 	/** This column's parent ruler */
 	private CompositeRuler fParentRuler;
 	/** The cached text viewer */
@@ -277,7 +286,7 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
 		fCanvas.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent event) {
 				if (fCachedTextViewer != null)
-					doClearPaint(event.gc);
+					doubleBufferPaint(event.gc);
 			}
 		});
 
@@ -353,7 +362,7 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
 	 * @return the created canvas
 	 */
 	private Canvas createCanvas(Composite parent) {
-		return new Canvas(parent, SWT.NO_BACKGROUND | SWT.NO_FOCUS | SWT.DOUBLE_BUFFERED) {
+		return new Canvas(parent, SWT.NO_BACKGROUND | SWT.NO_FOCUS) {
 			/*
 			 * @see org.eclipse.swt.widgets.Control#addMouseListener(org.eclipse.swt.events.MouseListener)
 			 * @since 3.0
@@ -501,22 +510,42 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
 	}
 
 	/**
-	 * Clears the background and then paints.
+	 * Double buffer drawing.
 	 *
-	 * @param gc the GC to draw into
+	 * @param dest the GC to draw into
 	 */
-	private void doClearPaint(GC gc) {
+	private void doubleBufferPaint(GC dest) {
 
 		Point size= fCanvas.getSize();
 
+		if (size.x <= 0 || size.y <= 0)
+			return;
+
+		if (fBuffer != null) {
+			Rectangle r= fBuffer.getBounds();
+			if (r.width != size.x || r.height != size.y) {
+				fBuffer.dispose();
+				fBuffer= null;
+			}
+		}
+		if (fBuffer == null)
+			fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+		GC gc= new GC(fBuffer);
 		gc.setFont(fCachedTextWidget.getFont());
-		gc.setBackground(fCanvas.getBackground());
-		gc.fillRectangle(0, 0, size.x, size.y);
+		try {
+			gc.setBackground(fCanvas.getBackground());
+			gc.fillRectangle(0, 0, size.x, size.y);
 
-		if (fCachedTextViewer instanceof ITextViewerExtension5)
-			doPaint1(gc);
-		else
-			doPaint(gc);
+			if (fCachedTextViewer instanceof ITextViewerExtension5)
+				doPaint1(gc);
+			else
+				doPaint(gc);
+		} finally {
+			gc.dispose();
+		}
+
+		dest.drawImage(fBuffer, 0, 0);
 	}
 
 	/**
@@ -787,8 +816,14 @@ public class AnnotationRulerColumn implements IVerticalRulerColumn, IVerticalRul
 	 */
 	public void redraw() {
 		if (fCanvas != null && !fCanvas.isDisposed()) {
-			fCanvas.redraw();
-			fCanvas.update();
+			if (IS_MAC) {
+				fCanvas.redraw();
+				fCanvas.update();
+			} else {
+				GC gc= new GC(fCanvas);
+				doubleBufferPaint(gc);
+				gc.dispose();
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/ChangeRulerColumn.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/ChangeRulerColumn.java
index 66775b2..0581713 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/ChangeRulerColumn.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/ChangeRulerColumn.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@ 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.Canvas;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -33,6 +34,7 @@ import org.eclipse.core.runtime.Assert;
 
 import org.eclipse.jface.internal.text.revisions.RevisionPainter;
 import org.eclipse.jface.internal.text.source.DiffPainter;
+import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import org.eclipse.jface.text.BadLocationException;
@@ -53,7 +55,7 @@ import org.eclipse.jface.text.revisions.RevisionInformation;
  *
  * @since 3.0
  */
-public final class ChangeRulerColumn implements IChangeRulerColumn, IRevisionRulerColumn {
+public final class ChangeRulerColumn implements IVerticalRulerColumn, IVerticalRulerInfo, IVerticalRulerInfoExtension, IChangeRulerColumn, IRevisionRulerColumn {
 	/**
 	 * Handles all the mouse interaction in this line number ruler column.
 	 */
@@ -115,6 +117,13 @@ public final class ChangeRulerColumn implements IChangeRulerColumn, IRevisionRul
 	}
 
 	/**
+	 * <code>true</code> if we're on a Mac, where "new GC(canvas)" is expensive.
+	 * @see <a href="https://bugs.eclipse.org/298936">bug 298936</a>
+	 * @since 3.6
+	 */
+	private static final boolean IS_MAC= Util.isMac();
+
+	/**
 	 * The view(port) listener.
 	 */
 	private final InternalListener fInternalListener= new InternalListener();
@@ -198,13 +207,13 @@ public final class ChangeRulerColumn implements IChangeRulerColumn, IRevisionRul
 		fCachedTextViewer= parentRuler.getTextViewer();
 		fCachedTextWidget= fCachedTextViewer.getTextWidget();
 
-		fCanvas= new Canvas(parentControl, SWT.DOUBLE_BUFFERED);
+		fCanvas= new Canvas(parentControl, SWT.NONE);
 		fCanvas.setBackground(getBackground());
 
 		fCanvas.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent event) {
 				if (fCachedTextViewer != null)
-					doClearPaint(event.gc);
+					doubleBufferPaint(event.gc);
 			}
 		});
 
@@ -248,19 +257,40 @@ public final class ChangeRulerColumn implements IChangeRulerColumn, IRevisionRul
 	}
 
 	/**
-	 * Clears the background and then paints.
+	 * Double buffer drawing.
 	 *
-	 * @param gc the GC to draw into
+	 * @param dest the GC to draw into
 	 */
-	private void doClearPaint(GC gc) {
+	private void doubleBufferPaint(GC dest) {
 
 		Point size= fCanvas.getSize();
 
+		if (size.x <= 0 || size.y <= 0)
+			return;
+
+		if (fBuffer != null) {
+			Rectangle r= fBuffer.getBounds();
+			if (r.width != size.x || r.height != size.y) {
+				fBuffer.dispose();
+				fBuffer= null;
+			}
+		}
+		if (fBuffer == null)
+			fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+		GC gc= new GC(fBuffer);
 		gc.setFont(fCanvas.getFont());
-		gc.setBackground(getBackground());
-		gc.fillRectangle(0, 0, size.x, size.y);
 
-		doPaint(gc);
+		try {
+			gc.setBackground(getBackground());
+			gc.fillRectangle(0, 0, size.x, size.y);
+
+			doPaint(gc);
+		} finally {
+			gc.dispose();
+		}
+
+		dest.drawImage(fBuffer, 0, 0);
 	}
 
 	/**
@@ -311,8 +341,14 @@ public final class ChangeRulerColumn implements IChangeRulerColumn, IRevisionRul
 	public void redraw() {
 
 		if (fCachedTextViewer != null && fCanvas != null && !fCanvas.isDisposed()) {
-			fCanvas.redraw();
-			fCanvas.update();
+			if (IS_MAC) {
+				fCanvas.redraw();
+				fCanvas.update();
+			} else {
+				GC gc= new GC(fCanvas);
+				doubleBufferPaint(gc);
+				gc.dispose();
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/DefaultCharacterPairMatcher.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/DefaultCharacterPairMatcher.java
index 0afbc88..6c8e26c 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/DefaultCharacterPairMatcher.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/DefaultCharacterPairMatcher.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,16 +36,16 @@ public class DefaultCharacterPairMatcher implements ICharacterPairMatcher {
 	private final String fPartitioning;
 
 	/**
-	 * Creates a new character pair matcher that matches the specified
-	 * characters within the specified partitioning.  The specified
-	 * list of characters must have the form
-	 * <blockquote>{ <i>start</i>, <i>end</i>, <i>start</i>, <i>end</i>, ..., <i>start</i>, <i>end</i> }</blockquote>
-	 * For instance:
+	 * Creates a new character pair matcher that matches the specified characters within the
+	 * specified partitioning. The specified list of characters must have the form <blockquote>{
+	 * <i>start</i>, <i>end</i>, <i>start</i>, <i>end</i>, ..., <i>start</i>, <i>end</i>
+	 * }</blockquote> For instance:
+	 * 
 	 * <pre>
 	 * char[] chars = new char[] {'(', ')', '{', '}', '[', ']'};
-	 * new SimpleCharacterPairMatcher(chars, ...);
+	 * new DefaultCharacterPairMatcher(chars, ...);
 	 * </pre>
-	 *
+	 * 
 	 * @param chars a list of characters
 	 * @param partitioning the partitioning to match within
 	 */
@@ -57,16 +57,15 @@ public class DefaultCharacterPairMatcher implements ICharacterPairMatcher {
 	}
 
 	/**
-	 * Creates a new character pair matcher that matches characters
-	 * within the default partitioning.  The specified list of
-	 * characters must have the form
-	 * <blockquote>{ <i>start</i>, <i>end</i>, <i>start</i>, <i>end</i>, ..., <i>start</i>, <i>end</i> }</blockquote>
-	 * For instance:
+	 * Creates a new character pair matcher that matches characters within the default partitioning.
+	 * The specified list of characters must have the form <blockquote>{ <i>start</i>, <i>end</i>,
+	 * <i>start</i>, <i>end</i>, ..., <i>start</i>, <i>end</i> }</blockquote> For instance:
+	 * 
 	 * <pre>
-	 * char[] chars = new char[] {'(', ')', '{', '}', '[', ']'};
-	 * new SimpleCharacterPairMatcher(chars);
+	 * char[] chars= new char[] { '(', ')', '{', '}', '[', ']' };
+	 * new DefaultCharacterPairMatcher(chars);
 	 * </pre>
-	 *
+	 * 
 	 * @param chars a list of characters
 	 */
 	public DefaultCharacterPairMatcher(char[] chars) {
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/IOverviewRuler.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/IOverviewRuler.java
index b325337..3310adb 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/IOverviewRuler.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/IOverviewRuler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
index d8ef1e6..8e18566 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,6 +36,8 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.TypedListener;
 
+import org.eclipse.jface.util.Util;
+
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -363,6 +365,13 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn {
 		}
 	}
 
+	/**
+	 * <code>true</code> if we're on a Mac, where "new GC(canvas)" is expensive.
+	 * @see <a href="https://bugs.eclipse.org/298936">bug 298936</a>
+	 * @since 3.6
+	 */
+	private static final boolean IS_MAC= Util.isMac();
+
 	/** This column's parent ruler */
 	private CompositeRuler fParentRuler;
 	/** Cached text viewer */
@@ -582,7 +591,7 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn {
 		fCachedTextViewer= parentRuler.getTextViewer();
 		fCachedTextWidget= fCachedTextViewer.getTextWidget();
 
-		fCanvas= new Canvas(parentControl, SWT.NO_FOCUS | SWT.DOUBLE_BUFFERED) {
+		fCanvas= new Canvas(parentControl, SWT.NO_FOCUS ) {
  			/*
  			 * @see org.eclipse.swt.widgets.Control#addMouseListener(org.eclipse.swt.events.MouseListener)
  			 * @since 3.4
@@ -605,7 +614,7 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn {
 		fCanvas.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent event) {
 				if (fCachedTextViewer != null)
-					doClearPaint(event.gc);
+					doubleBufferPaint(event.gc);
 			}
 		});
 
@@ -657,26 +666,46 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn {
 	}
 
 	/**
-	 * Clears the background and then paints.
+	 * Double buffer drawing.
 	 *
-	 * @param gc the GC to draw into
+	 * @param dest the GC to draw into
 	 */
-	private void doClearPaint(GC gc) {
+	private void doubleBufferPaint(GC dest) {
 
 		Point size= fCanvas.getSize();
 
+		if (size.x <= 0 || size.y <= 0)
+			return;
+
+		if (fBuffer != null) {
+			Rectangle r= fBuffer.getBounds();
+			if (r.width != size.x || r.height != size.y) {
+				fBuffer.dispose();
+				fBuffer= null;
+			}
+		}
+		if (fBuffer == null)
+			fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+		GC gc= new GC(fBuffer);
 		gc.setFont(fCanvas.getFont());
 		if (fForeground != null)
 			gc.setForeground(fForeground);
 
-		gc.setBackground(getBackground(fCanvas.getDisplay()));
-		gc.fillRectangle(0, 0, size.x, size.y);
+		try {
+			gc.setBackground(getBackground(fCanvas.getDisplay()));
+			gc.fillRectangle(0, 0, size.x, size.y);
 
-		ILineRange visibleLines= JFaceTextUtil.getVisibleModelLines(fCachedTextViewer);
-		if (visibleLines == null)
-			return;
-		fScrollPos= fCachedTextWidget.getTopPixel();
-		doPaint(gc, visibleLines);
+			ILineRange visibleLines= JFaceTextUtil.getVisibleModelLines(fCachedTextViewer);
+			if (visibleLines == null)
+				return;
+			fScrollPos= fCachedTextWidget.getTopPixel();
+			doPaint(gc, visibleLines);
+		} finally {
+			gc.dispose();
+		}
+
+		dest.drawImage(fBuffer, 0, 0);
 	}
 
 	/**
@@ -822,8 +851,14 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn {
 		}
 
 		if (fCachedTextViewer != null && fCanvas != null && !fCanvas.isDisposed()) {
-			fCanvas.redraw();
-			fCanvas.update();
+			if (IS_MAC) {
+				fCanvas.redraw();
+				fCanvas.update();
+			} else {
+				GC gc= new GC(fCanvas);
+				doubleBufferPaint(gc);
+				gc.dispose();
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRuler.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRuler.java
index 7c7ac62..af6a447 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRuler.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRuler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,6 +40,8 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 
+import org.eclipse.jface.util.Util;
+
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -305,6 +307,13 @@ public class OverviewRuler implements IOverviewRuler {
 		}
 	}
 
+	/**
+	 * <code>true</code> if we're on a Mac, where "new GC(canvas)" is expensive.
+	 * @see <a href="https://bugs.eclipse.org/298936">bug 298936</a>
+	 * @since 3.6
+	 */
+	private static final boolean IS_MAC= Util.isMac();
+
 	private static final int INSET= 2;
 	private static final int ANNOTATION_HEIGHT= 4;
 	private static boolean ANNOTATION_HEIGHT_SCALABLE= true;
@@ -502,12 +511,12 @@ public class OverviewRuler implements IOverviewRuler {
 			});
 		}
 
-		fCanvas= new Canvas(parent, SWT.NO_BACKGROUND | SWT.DOUBLE_BUFFERED);
+		fCanvas= new Canvas(parent, SWT.NO_BACKGROUND);
 
 		fCanvas.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent event) {
 				if (fTextViewer != null)
-					doClearPaint(event.gc);
+					doubleBufferPaint(event.gc);
 			}
 		});
 
@@ -564,23 +573,44 @@ public class OverviewRuler implements IOverviewRuler {
 	}
 
 	/**
-	 * Clears the background and then paints.
+	 * Double buffer drawing.
 	 *
-	 * @param gc the GC to draw into
+	 * @param dest the GC to draw into
 	 */
-	private void doClearPaint(GC gc) {
+	private void doubleBufferPaint(GC dest) {
 
 		Point size= fCanvas.getSize();
 
-		gc.setBackground(fCanvas.getBackground());
-		gc.fillRectangle(0, 0, size.x, size.y);
+		if (size.x <= 0 || size.y <= 0)
+			return;
+
+		if (fBuffer != null) {
+			Rectangle r= fBuffer.getBounds();
+			if (r.width != size.x || r.height != size.y) {
+				fBuffer.dispose();
+				fBuffer= null;
+			}
+		}
+		if (fBuffer == null)
+			fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+		GC gc= new GC(fBuffer);
+		try {
+			gc.setBackground(fCanvas.getBackground());
+			gc.fillRectangle(0, 0, size.x, size.y);
 
-		cacheAnnotations();
+			cacheAnnotations();
 
-		if (fTextViewer instanceof ITextViewerExtension5)
-			doPaint1(gc);
-		else
-			doPaint(gc);
+			if (fTextViewer instanceof ITextViewerExtension5)
+				doPaint1(gc);
+			else
+				doPaint(gc);
+
+		} finally {
+			gc.dispose();
+		}
+
+		dest.drawImage(fBuffer, 0, 0);
 	}
 
 	/**
@@ -817,8 +847,14 @@ public class OverviewRuler implements IOverviewRuler {
 			return;
 
 		if (fCanvas != null && !fCanvas.isDisposed()) {
-			fCanvas.redraw();
-			fCanvas.update();
+			if (IS_MAC) {
+				fCanvas.redraw();
+				fCanvas.update();
+			} else {
+				GC gc= new GC(fCanvas);
+				doubleBufferPaint(gc);
+				gc.dispose();
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRuler.java b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRuler.java
index 45c51a7..127b5f7 100644
--- a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRuler.java
+++ b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRuler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,6 +31,8 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 
+import org.eclipse.jface.util.Util;
+
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -85,6 +87,13 @@ public final class VerticalRuler implements IVerticalRuler, IVerticalRulerExtens
 		}
 	}
 
+	/**
+	 * <code>true</code> if we're on a Mac, where "new GC(canvas)" is expensive.
+	 * @see <a href="https://bugs.eclipse.org/298936">bug 298936</a>
+	 * @since 3.6
+	 */
+	private static final boolean IS_MAC= Util.isMac();
+
 	/** The vertical ruler's text viewer */
 	private ITextViewer fTextViewer;
 	/** The ruler's canvas */
@@ -143,12 +152,12 @@ public final class VerticalRuler implements IVerticalRuler, IVerticalRulerExtens
 
 		fTextViewer= textViewer;
 
-		fCanvas= new Canvas(parent, SWT.NO_BACKGROUND | SWT.DOUBLE_BUFFERED);
+		fCanvas= new Canvas(parent, SWT.NO_BACKGROUND);
 
 		fCanvas.addPaintListener(new PaintListener() {
 			public void paintControl(PaintEvent event) {
 				if (fTextViewer != null)
-					doClearPaint(event.gc);
+					doubleBufferPaint(event.gc);
 			}
 		});
 
@@ -202,22 +211,43 @@ public final class VerticalRuler implements IVerticalRuler, IVerticalRulerExtens
 
 
 	/**
-	 * Clears the background and then paints.
+	 * Double buffer drawing.
 	 *
-	 * @param gc the GC to draw into
+	 * @param dest the GC to draw into
 	 */
-	private void doClearPaint(GC gc) {
+	private void doubleBufferPaint(GC dest) {
 
 		Point size= fCanvas.getSize();
 
+		if (size.x <= 0 || size.y <= 0)
+			return;
+
+		if (fBuffer != null) {
+			Rectangle r= fBuffer.getBounds();
+			if (r.width != size.x || r.height != size.y) {
+				fBuffer.dispose();
+				fBuffer= null;
+			}
+		}
+		if (fBuffer == null)
+			fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+		GC gc= new GC(fBuffer);
 		gc.setFont(fTextViewer.getTextWidget().getFont());
-		gc.setBackground(fCanvas.getBackground());
-		gc.fillRectangle(0, 0, size.x, size.y);
+		try {
+			gc.setBackground(fCanvas.getBackground());
+			gc.fillRectangle(0, 0, size.x, size.y);
+
+			if (fTextViewer instanceof ITextViewerExtension5)
+				doPaint1(gc);
+			else
+				doPaint(gc);
 
-		if (fTextViewer instanceof ITextViewerExtension5)
-			doPaint1(gc);
-		else
-			doPaint(gc);
+		} finally {
+			gc.dispose();
+		}
+
+		dest.drawImage(fBuffer, 0, 0);
 	}
 
 	/**
@@ -442,8 +472,14 @@ public final class VerticalRuler implements IVerticalRuler, IVerticalRulerExtens
 	 */
 	private void redraw() {
 		if (fCanvas != null && !fCanvas.isDisposed()) {
-			fCanvas.redraw();
-			fCanvas.update();
+			if (IS_MAC) {
+				fCanvas.redraw();
+				fCanvas.update();
+			} else {
+				GC gc= new GC(fCanvas);
+				doubleBufferPaint(gc);
+				gc.dispose();
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
index ded2bc3..644252c 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,9 +36,10 @@ public class StatusLineContributionItem extends ContributionItem {
 	private final static int DEFAULT_CHAR_WIDTH = 40;
 	
 	/**
-	 * constant indicating that the contribution should compute its actual size
-	 * depending on the text. It will grab all space necessary to display the whole text.
-	 *
+	 * A constant indicating that the contribution should compute its actual
+	 * size depending on the text. It will grab all space necessary to display
+	 * the whole text.
+	 * 
 	 * @since 3.6
 	 */
 	public final static int CALC_TRUE_WIDTH = -1;
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
index e5b6aaa..a17e0fc 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
index eaf1488..d6db672 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
index af64a05..20eff30 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
index d4dcc8c..a2bb3db 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
index 636514c..72d44d0 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
index e5fba7d..ceb2aec 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
index 4482009..d6d82b7 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -66,7 +66,6 @@ public final class NativeKeyFormatter extends AbstractKeyFormatter {
 		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$
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
index 323b005..25159bb 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
index 5fe5683..dd19c71 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
index b2f6df6..c775d7d 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,7 @@ package org.eclipse.jface.dialogs;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.IAction;
@@ -36,9 +37,11 @@ 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.RGB;
 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.Label;
 import org.eclipse.swt.widgets.Listener;
@@ -321,6 +324,13 @@ public class PopupDialog extends Window {
 	private Control titleSeparator, infoSeparator;
 
 	/**
+	 * Color to be used for the info area text.
+	 * 
+	 * @since 3.6
+	 */
+	private Color infoColor;
+	
+	/**
 	 * Font to be used for the info area text. Computed based on the dialog's
 	 * font.
 	 */
@@ -856,12 +866,42 @@ public class PopupDialog extends Window {
 		
 		GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL,
 				SWT.BEGINNING).applyTo(infoLabel);
-		infoLabel.setForeground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_DARK_SHADOW));
+		Display display = parent.getDisplay();
+		infoColor = new Color(display, blend(
+				display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB(),
+				display.getSystemColor(SWT.COLOR_INFO_FOREGROUND).getRGB(),
+				0.56f));
+		infoLabel.setForeground(infoColor);
 		return infoLabel;
 	}
 
 	/**
+	 * Returns an RGB that lies between the given foreground and background
+	 * colors using the given mixing factor. A <code>factor</code> of 1.0 will produce a
+	 * color equal to <code>fg</code>, while a <code>factor</code> of 0.0 will produce one
+	 * equal to <code>bg</code>.
+	 * @param bg the background color
+	 * @param fg the foreground color
+	 * @param factor the mixing factor, must be in [0,&nbsp;1]
+	 *
+	 * @return the interpolated color
+	 * @since 3.6
+	 */
+	private static RGB blend(RGB bg, RGB fg, float factor) {
+		// copy of org.eclipse.jface.internal.text.revisions.Colors#blend(..)
+		Assert.isLegal(bg != null);
+		Assert.isLegal(fg != null);
+		Assert.isLegal(factor >= 0f && factor <= 1f);
+		
+		float complement = 1f - factor;
+		return new RGB(
+				(int) (complement * bg.red + factor * fg.red),
+				(int) (complement * bg.green + factor * fg.green),
+				(int) (complement * bg.blue + factor * fg.blue)
+		);
+	}
+	
+	/**
 	 * Create a horizontal separator for the given parent.
 	 * 
 	 * @param parent
@@ -1586,6 +1626,10 @@ public class PopupDialog extends Window {
 	 * 
 	 */
 	private void handleDispose() {
+		if (infoColor != null && !infoColor.isDisposed()) {
+			infoColor.dispose();
+		}
+		infoColor = null;
 		if (infoFont != null && !infoFont.isDisposed()) {
 			infoFont.dispose();
 		}
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
index c16ca2a..25ee01e 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
@@ -16,6 +16,7 @@ package org.eclipse.jface.dialogs;
 
 import org.eclipse.jface.resource.JFaceColors;
 import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.window.ToolTip;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
@@ -23,6 +24,7 @@ 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.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
@@ -31,7 +33,9 @@ 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.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 
@@ -110,6 +114,10 @@ public class TitleAreaDialog extends TrayDialog {
 
 	private Image titleAreaImage;
 
+	private int xTrim;
+
+	private int yTrim;
+
 	/**
 	 * Instantiate a new title area dialog.
 	 * 
@@ -146,6 +154,18 @@ public class TitleAreaDialog extends TrayDialog {
 		// create the dialog area and button bar
 		dialogArea = createDialogArea(workArea);
 		buttonBar = createButtonBar(workArea);
+		
+		// computing trim for later
+		Rectangle rect = messageLabel.computeTrim(0, 0, 100, 100);
+		xTrim = rect.width - 100;
+		yTrim = rect.height - 100;
+		
+		// need to react to new size of title area
+		getShell().addListener(SWT.Resize, new Listener() {
+			public void handleEvent(Event event) {
+				layoutForNewMessage(true);
+			}
+		});
 		return contents;
 	}
 
@@ -395,13 +415,16 @@ public class TitleAreaDialog extends TrayDialog {
 				setImageLabelVisible(true);
 			}
 		}
-		layoutForNewMessage();
+		layoutForNewMessage(false);
 	}
 
 	/**
 	 * Re-layout the labels for the new message.
+	 * 
+	 * @param forceLayout
+	 *            <code>true</code> to force a layout of the shell
 	 */
-	private void layoutForNewMessage() {
+	private void layoutForNewMessage(boolean forceLayout) {
 		int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
 		int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
 		// If there are no images then layout as normal
@@ -445,10 +468,49 @@ public class TitleAreaDialog extends TrayDialog {
 						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);
+
+		if (forceLayout) {
+			getShell().layout();
+		} else {
+			// Do not layout before the dialog area has been created
+			// to avoid incomplete calculations.
+			if (dialogArea != null)
+				workArea.getParent().layout(true);
+		}
+		
+		int messageLabelUnclippedHeight = messageLabel.computeSize(messageLabel.getSize().x - xTrim, SWT.DEFAULT, true).y;
+		boolean messageLabelClipped = messageLabelUnclippedHeight > messageLabel.getSize().y - yTrim;
+		if (messageLabel.getData() instanceof ToolTip) {
+			ToolTip toolTip = (ToolTip) messageLabel.getData();
+			toolTip.hide();
+			toolTip.deactivate();
+			messageLabel.setData(null);
+		}
+		if (messageLabelClipped) {
+			ToolTip tooltip = new ToolTip(messageLabel, ToolTip.NO_RECREATE, false) {
+				
+				protected Composite createToolTipContentArea(Event event, Composite parent) {
+					Composite result = new Composite(parent, SWT.NONE);
+					result.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+					result.setLayout(new GridLayout());
+					Text text = new Text(result, SWT.WRAP);
+					text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+					text.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
+					text.setText(messageLabel.getText());
+					GridData gridData = new GridData();
+					gridData.widthHint = messageLabel.getSize().x;
+					text.setLayoutData(gridData);
+					Dialog.applyDialogFont(result);
+					return result;
+				}
+				public Point getLocation(Point tipSize, Event event) {
+					return messageLabel.getShell().toDisplay(messageLabel.getLocation());
+				}
+			};
+			messageLabel.setData(tooltip);
+			tooltip.setPopupDelay(0);
+			tooltip.activate();
+		}
 	}
 
 	/**
@@ -536,7 +598,7 @@ public class TitleAreaDialog extends TrayDialog {
 			updateMessage(shownMessage);
 			messageImageLabel.setImage(messageImage);
 			setImageLabelVisible(messageImage != null);
-			layoutForNewMessage();
+			layoutForNewMessage(false);
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
index ed56777..13ec8e0 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
@@ -2181,9 +2181,9 @@ public class ContentProposalAdapter {
 	}
 	
 	/**
-	 * Sets focus to the proposal popup.  If the proposal popup is not opened,
-	 * this method is ignored.  If the secondary popup has focus, focus is returned
-	 * to the main proposal popup.
+	 * Sets focus to the proposal popup. If the proposal popup is not opened,
+	 * this method is ignored. If the secondary popup has focus, focus is
+	 * returned to the main proposal popup.
 	 * 
 	 * @since 3.6
 	 */
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
index 2663434..075d5e5 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
index bc0d9b2..2f29802 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -626,21 +626,6 @@ public abstract class AbstractTreeViewer extends ColumnViewer {
 		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
@@ -761,6 +746,24 @@ public abstract class AbstractTreeViewer extends ColumnViewer {
 	 *            the widget
 	 */
 	protected void createChildren(final Widget widget) {
+		createChildren(widget, true);
+	}
+	
+	/**
+	 * 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
+	 * @param materialize 
+	 * 			  true if children are expected to be fully materialized
+	 */
+	void createChildren(final Widget widget, boolean materialize) {
 		boolean oldBusy = isBusy();
 		setBusy(true);
 		try {
@@ -1708,7 +1711,7 @@ public abstract class AbstractTreeViewer extends ColumnViewer {
 					&& !isExpandable((Item) widget, null, widget.getData())) {
 				return;
 			}
-			createChildren(widget);
+			createChildren(widget, false);
 			if (widget instanceof Item) {
 				setExpanded((Item) widget, true);
 			}
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
index aded6ce..21cb79b 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
index 1715d77..20965a7 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
index c994e9b..61648aa 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,12 +21,7 @@ public interface IStructuredContentProvider extends IContentProvider {
      * 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
      */
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
index 7b1c0fd..ae66fe5 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,18 @@ package org.eclipse.jface.viewers;
  * @see AbstractTreeViewer
  */
 public interface ITreeContentProvider extends IStructuredContentProvider {
+
+	/**
+	 * {@inheritDoc}
+	 * <p>
+	 * <b>NOTE:</b> The returned array must not contain the given
+	 * <code>inputElement</code>, since this leads to recursion issues in
+	 * {@link AbstractTreeViewer} (see
+	 * <a href="https://bugs.eclipse.org/9262">bug 9262</a>).
+	 * </p>
+	 */
+	public Object[] getElements(Object inputElement);
+
     /**
      * Returns the child elements of the given parent element.
      * <p>
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
index ce87dab..6d13f97 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,7 +13,7 @@ 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..
+ * provides content based on the path of elements in the tree viewer.
  * 
  * @see AbstractTreeViewer
  * @since 3.2
@@ -21,6 +21,17 @@ package org.eclipse.jface.viewers;
 public interface ITreePathContentProvider extends IStructuredContentProvider {
 
 	/**
+	 * {@inheritDoc}
+	 * <p>
+	 * <b>NOTE:</b> The returned array must not contain the given
+	 * <code>inputElement</code>, since this leads to recursion issues in
+	 * {@link AbstractTreeViewer} (see
+	 * <a href="https://bugs.eclipse.org/9262">bug 9262</a>).
+	 * </p>
+	 */
+	public Object[] getElements(Object inputElement);
+
+	/**
 	 * 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.
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
index 7b528e3..4dbd861 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -730,6 +730,9 @@ public abstract class StructuredViewer extends ContentViewer implements IPostSel
 				}
 				if (add) {
 					filtered.add(elements[i]);
+				} else {
+					if (associateListener != null)
+						associateListener.filteredOut(elements[i]);
 				}
 			}
 			return filtered.toArray();
@@ -894,13 +897,40 @@ public abstract class StructuredViewer extends ContentViewer implements IPostSel
 		if (filters != null) {
 			for (Iterator iter = filters.iterator(); iter.hasNext();) {
 				ViewerFilter f = (ViewerFilter) iter.next();
-				result = f.filter(this, parent, result);
+				Object[] filteredResult = f.filter(this, parent, result);
+				if (associateListener != null && filteredResult.length != result.length) {
+					notifyFilteredOut(result, filteredResult);
+				}
+				result = filteredResult;
 			}
 		}
 		return result;
 	}
 
 	/**
+	 * Notifies an AssociateListener of the elements that have been filtered out.
+	 * 
+	 * @param rawResult 
+	 * @param filteredResult  
+	 */
+	private void notifyFilteredOut(Object[] rawResult, Object[] filteredResult) {
+		int rawIndex = 0;
+		int filteredIndex = 0;
+		for (; filteredIndex < filteredResult.length; ) {
+			if (rawResult[rawIndex] != filteredResult[filteredIndex]) {
+				associateListener.filteredOut(rawResult[rawIndex++]);
+				continue;
+			}
+			rawIndex++;
+			filteredIndex++;
+		}
+		for (; rawIndex < rawResult.length; rawIndex++) {
+			associateListener.filteredOut(rawResult[rawIndex]);
+		}
+	}
+	
+	
+	/**
 	 * Returns this viewer's filters.
 	 * 
 	 * @return an array of viewer filters
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewerInternals.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewerInternals.java
index 465bc17..2a1b78d 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewerInternals.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewerInternals.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,6 +46,14 @@ public class StructuredViewerInternals {
 		 * @param item
 		 */
 		void disassociate(Item item);
+		
+		/**
+		 * Called when an element has been filtered out.
+		 * 
+		 * @since 3.6
+		 * @param element 
+		 */
+		void filteredOut(Object element);
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
index 3aa8e24..5547da5 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
index 8e2513f..ea4c7f4 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@
 
 package org.eclipse.jface.viewers;
 
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Table;
 
 /**
@@ -68,17 +69,27 @@ public class TableViewerFocusCellManager extends SWTFocusCellManager {
 		Table table = (Table) getViewer().getControl();
 
 		if (!table.isDisposed() && table.getItemCount() > 0
-				&& !table.getItem(0).isDisposed()) {
+				&& !table.getItem(table.getTopIndex()).isDisposed()) {
 			final ViewerRow aViewerRow = getViewer().getViewerRowFromItem(
-					table.getItem(0));
+					table.getItem(table.getTopIndex()));
+			if (table.getColumnCount() == 0) {
+				return aViewerRow.getCell(0);
+			}
+
+			Rectangle clientArea = table.getClientArea();
 			for (int i = 0; i < table.getColumnCount(); i++) {
-				if (aViewerRow.getWidth(i) > 0)
+				if (aViewerRow.getWidth(i) > 0 && columnInVisibleArea(clientArea,aViewerRow,i))
 					return aViewerRow.getCell(i);
-			}}
+				}
+			}
 
 		return null;
 	}
 
+	private boolean columnInVisibleArea(Rectangle clientArea, ViewerRow row, int colIndex) {
+		return row.getBounds(colIndex).x >= clientArea.x;
+	}
+
 	public ViewerCell getFocusCell() {
 		ViewerCell cell = super.getFocusCell();
 		Table t = (Table) getViewer().getControl();
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
index f0168cd..af6753c 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -610,7 +610,7 @@ public class TreeViewer extends AbstractTreeViewer {
 		}
 	}
 
-	protected void createChildren(Widget widget) {
+	void createChildren(Widget widget, boolean materialize) {
 		if (contentProviderIsLazy) {
 			Object element = widget.getData();
 			if (element == null && widget instanceof TreeItem) {
@@ -632,12 +632,16 @@ public class TreeViewer extends AbstractTreeViewer {
 			// 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);
+					if (materialize) {
+						virtualLazyUpdateWidget(widget, i);
+					} else {
+						((TreeItem)children[i]).clearAll(true);
+					}
 				}
 			}
 			return;
 		}
-		super.createChildren(widget);
+		super.createChildren(widget, materialize);
 	}
 
 	protected void internalAdd(Widget widget, Object parentElement,
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
index 6944a0f..276088a 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,7 @@
 package org.eclipse.jface.viewers;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Item;
 import org.eclipse.swt.widgets.Tree;
@@ -118,13 +119,26 @@ public class TreeViewerFocusCellManager extends SWTFocusCellManager {
 	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);
+		if (! tree.isDisposed() && tree.getItemCount() > 0 && ! tree.getTopItem().isDisposed()) {
+			ViewerRow aViewerRow = getViewer().getViewerRowFromItem(tree.getTopItem());
+			if (tree.getColumnCount() == 0) {
+				return aViewerRow.getCell(0);
+			}
+
+			Rectangle clientArea = tree.getClientArea();
+			for (int i = 0; i < tree.getColumnCount(); i++) {
+				if (aViewerRow.getWidth(i) > 0 && columnInVisibleArea(clientArea,aViewerRow,i))
+					return aViewerRow.getCell(i);
+			}
 		}
 
 		return null;
 	}
 
+	private boolean columnInVisibleArea(Rectangle clientArea, ViewerRow row, int colIndex) {
+		return row.getBounds(colIndex).x >= clientArea.x;
+	}
+
 	public ViewerCell getFocusCell() {
 		ViewerCell cell = super.getFocusCell();
 		Tree t = (Tree) getViewer().getControl();
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
index 8ab2da8..dbe10ac 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
index 672f77d..9fc642d 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,7 +14,6 @@ package org.eclipse.jface.window;
 
 import java.util.HashMap;
 
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.ColumnViewer;
 import org.eclipse.jface.viewers.ViewerCell;
 import org.eclipse.swt.SWT;
@@ -25,7 +24,6 @@ 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;
@@ -79,8 +77,6 @@ public abstract class ToolTip {
 
 	private Object currentArea;
 
-	private static final boolean IS_OSX = Util.isCarbon();
-
 	/**
 	 * Create new instance which add TooltipSupport to the widget
 	 * 
@@ -462,51 +458,8 @@ public abstract class ToolTip {
 	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;
-
+			// the following was left in order to fix bug 298770 with minimal change. In 3.7, the complete method should be removed.
 			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);
-					}
-				}
-			});
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
index 371ea33..db6b7de 100644
--- a/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
+++ b/eclipse/plugins/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
@@ -93,7 +93,7 @@ public class ProgressMonitorPart extends Composite implements
 
 
 	/**
-	 * Creates a ProgressMonitorPart that does not provide a stop button.
+	 * Creates a <code>ProgressMonitorPart</code> that does not provide a stop button.
 	 * 
 	 * @param parent The SWT parent of the part.
 	 * @param layout The SWT grid layout used by the part. A client can supply the layout to control
@@ -105,7 +105,7 @@ public class ProgressMonitorPart extends Composite implements
 	}
 
 	/**
-	 * Creates a ProgressMonitorPart that does not provide a stop button.
+	 * Creates a <code>ProgressMonitorPart</code> that does not provide a stop button.
 	 * 
 	 * @param parent The SWT parent of the part.
 	 * @param layout The SWT grid layout used by the part. A client can supply the layout to control
@@ -121,7 +121,7 @@ public class ProgressMonitorPart extends Composite implements
 	}
 
 	/**
-	 * Creates a ProgressMonitorPart.
+	 * Creates a <code>ProgressMonitorPart</code>.
 	 * 
 	 * @param parent the SWT parent of the part
 	 * @param layout the SWT grid layout used by the part. A client can supply the layout to control
diff --git a/eclipse/plugins/org.eclipse.jsch.core/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.jsch.core/META-INF/MANIFEST.MF
index a364963..0bf9e09 100644
--- a/eclipse/plugins/org.eclipse.jsch.core/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.jsch.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jsch.core;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.1.200.qualifier
 Bundle-Activator: org.eclipse.jsch.internal.core.JSchCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/DocumentChange.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/DocumentChange.java
index 46c24af..276a1f6 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/DocumentChange.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/DocumentChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,10 +14,17 @@ import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.filebuffers.ITextFileBufferManager;
+
+import org.eclipse.text.edits.MalformedTreeException;
 import org.eclipse.text.edits.UndoEdit;
 
+import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 
+import org.eclipse.ltk.internal.core.refactoring.Lock;
 import org.eclipse.ltk.internal.core.refactoring.TextChanges;
 import org.eclipse.ltk.internal.core.refactoring.UndoDocumentChange;
 
@@ -101,6 +108,54 @@ public class DocumentChange extends TextChange {
 		//do nothing
 	}
 
+	/*
+	 * @see org.eclipse.ltk.core.refactoring.TextChange#performEdits(org.eclipse.jface.text.IDocument)
+	 * @since 3.6
+	 */
+	protected UndoEdit performEdits(final IDocument document) throws BadLocationException, MalformedTreeException {
+		ITextFileBufferManager fileBufferManager= FileBuffers.getTextFileBufferManager();
+		
+		ITextFileBuffer fileBuffer= fileBufferManager.getTextFileBuffer(document);
+		if (fileBuffer == null || ! fileBuffer.isSynchronizationContextRequested()) {
+			return super.performEdits(document);
+		}
+		
+		/** The lock for waiting for computation in the UI thread to complete. */
+		final Lock completionLock= new Lock();
+		final UndoEdit[] result= new UndoEdit[1];
+		final BadLocationException[] exception= new BadLocationException[1];
+		Runnable runnable= new Runnable() {
+			public void run() {
+				synchronized (completionLock) {
+					try {
+						result[0]= DocumentChange.super.performEdits(document);
+					} catch (BadLocationException e) {
+						exception[0]= e;
+					} finally {
+						completionLock.fDone= true;
+						completionLock.notifyAll();
+					}
+				}
+			}
+		};
+		
+		synchronized (completionLock) {
+			fileBufferManager.execute(runnable);
+			while (! completionLock.fDone) {
+				try {
+					completionLock.wait(500);
+				} catch (InterruptedException x) {
+				}
+			}
+		}
+		
+		if (exception[0] != null) {
+			throw exception[0];
+		}
+		
+		return result[0];
+	}
+	
 	/**
 	 * {@inheritDoc}
 	 */
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/Lock.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/Lock.java
deleted file mode 100644
index d96661d..0000000
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/Lock.java
+++ /dev/null
@@ -1,23 +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.ltk.core.refactoring;
-
-/**
- * A simple lock object with a <em>done</em> flag.
- * 
- * @since 3.5
- */
-/*package*/class Lock {
-	/**
-	 * <code>true</code> iff the operation is done.
-	 */
-	public boolean fDone;
-}
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/MultiStateTextFileChange.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/MultiStateTextFileChange.java
index 1bf4fca..6796a2b 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/MultiStateTextFileChange.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/MultiStateTextFileChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -64,6 +64,7 @@ import org.eclipse.jface.text.Region;
 import org.eclipse.ltk.internal.core.refactoring.BufferValidationState;
 import org.eclipse.ltk.internal.core.refactoring.Changes;
 import org.eclipse.ltk.internal.core.refactoring.ContentStamps;
+import org.eclipse.ltk.internal.core.refactoring.Lock;
 import org.eclipse.ltk.internal.core.refactoring.MultiStateUndoChange;
 import org.eclipse.ltk.internal.core.refactoring.NonDeletingPositionUpdater;
 import org.eclipse.ltk.internal.core.refactoring.RefactoringCorePlugin;
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextFileChange.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextFileChange.java
index ade124a..289c7d4 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextFileChange.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/TextFileChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,6 +35,7 @@ import org.eclipse.jface.text.IDocument;
 import org.eclipse.ltk.internal.core.refactoring.BufferValidationState;
 import org.eclipse.ltk.internal.core.refactoring.Changes;
 import org.eclipse.ltk.internal.core.refactoring.ContentStamps;
+import org.eclipse.ltk.internal.core.refactoring.Lock;
 import org.eclipse.ltk.internal.core.refactoring.RefactoringCorePlugin;
 
 /**
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/UndoTextFileChange.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/UndoTextFileChange.java
index 196e2e5..89b7e69 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/UndoTextFileChange.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/UndoTextFileChange.java
@@ -36,6 +36,7 @@ import org.eclipse.jface.text.link.LinkedModeModel;
 import org.eclipse.ltk.internal.core.refactoring.BufferValidationState;
 import org.eclipse.ltk.internal.core.refactoring.Changes;
 import org.eclipse.ltk.internal.core.refactoring.ContentStamps;
+import org.eclipse.ltk.internal.core.refactoring.Lock;
 import org.eclipse.ltk.internal.core.refactoring.RefactoringCorePlugin;
 
 /**
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/Lock.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/Lock.java
new file mode 100644
index 0000000..1625eb1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/Lock.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ltk.internal.core.refactoring;
+
+/**
+ * A simple lock object with a <em>done</em> flag.
+ * 
+ * @since 3.5
+ */
+public class Lock {
+	/**
+	 * <code>true</code> iff the operation is done.
+	 */
+	public boolean fDone;
+}
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
index 96f5a83..919a471 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/RefactoringCoreMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -71,7 +71,7 @@ RenameResourceChange_name=Rename ''{0}'' to ''{1}''
 RenameResourceChange_progress_description=Rename resource
 RenameResourceDescriptor_error_name_not_defined=The rename resource refactoring can not be performed as the new name is invalid
 RenameResourceDescriptor_error_path_not_set=The rename resource refactoring can not be performed as resource path is not set
-RenameResourceDescriptor_error_resource_not_existing=The rename resource refactoring can not be performed as the resource ''{0}'' doesn not exist
+RenameResourceDescriptor_error_resource_not_existing=The rename resource refactoring can not be performed as the resource ''{0}'' does not exist
 RenameResourceDescriptor_unnamed_descriptor=N/A
 RenameResourceProcessor_comment=Rename resource ''{0}'' to ''{1}''
 RenameResourceProcessor_description=Rename resource ''{0}''
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoDocumentChange.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoDocumentChange.java
index 5d12a31..b8ff7b0 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoDocumentChange.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoDocumentChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,11 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.filebuffers.ITextFileBufferManager;
+
+import org.eclipse.text.edits.MalformedTreeException;
 import org.eclipse.text.edits.TextEdit;
 import org.eclipse.text.edits.UndoEdit;
 
@@ -74,11 +79,58 @@ public class UndoDocumentChange extends Change {
 	 */
 	public Change perform(IProgressMonitor pm) throws CoreException {
 		try {
-			UndoEdit redo= fUndo.apply(fDocument, TextEdit.CREATE_UNDO);
+			UndoEdit redo= performEdits();
 			Change result= new UndoDocumentChange(getName(), fDocument, redo);
 			return result;
+		} catch (MalformedTreeException e) {
+			throw Changes.asCoreException(e);
 		} catch (BadLocationException e) {
 			throw Changes.asCoreException(e);
 		}
 	}
+
+	private UndoEdit performEdits() throws BadLocationException, MalformedTreeException {
+		ITextFileBufferManager fileBufferManager= FileBuffers.getTextFileBufferManager();
+		
+		ITextFileBuffer fileBuffer= fileBufferManager.getTextFileBuffer(fDocument);
+		if (! fileBuffer.isSynchronizationContextRequested()) {
+			return fUndo.apply(fDocument, TextEdit.CREATE_UNDO);
+		}
+		
+		/** The lock for waiting for computation in the UI thread to complete. */
+		final Lock completionLock= new Lock();
+		final UndoEdit[] result= new UndoEdit[1];
+		final BadLocationException[] exception= new BadLocationException[1];
+		Runnable runnable= new Runnable() {
+			public void run() {
+				synchronized (completionLock) {
+					try {
+						result[0]= fUndo.apply(fDocument, TextEdit.CREATE_UNDO);
+					} catch (BadLocationException e) {
+						exception[0]= e;
+					} finally {
+						completionLock.fDone= true;
+						completionLock.notifyAll();
+					}
+				}
+			}
+		};
+		
+		synchronized (completionLock) {
+			fileBufferManager.execute(runnable);
+			while (! completionLock.fDone) {
+				try {
+					completionLock.wait(500);
+				} catch (InterruptedException x) {
+				}
+			}
+		}
+		
+		if (exception[0] != null) {
+			throw exception[0];
+		}
+		
+		return result[0];
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoableOperation2ChangeAdapter.java b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoableOperation2ChangeAdapter.java
index ad12e80..4255355 100644
--- a/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoableOperation2ChangeAdapter.java
+++ b/eclipse/plugins/org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/internal/core/refactoring/UndoableOperation2ChangeAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.java b/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.java
index 22d511b..165900d 100644
--- a/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.java
+++ b/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.properties b/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.properties
index 8256aaf..e0ab7b6 100644
--- a/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.properties
+++ b/eclipse/plugins/org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringUIMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -182,7 +182,7 @@ RefactoringPropertyPage_confirm_delete_all_caption=Confirm History Delete
 RefactoringPropertyPage_confirm_delete_all_pattern=Are you sure you want to delete the refactoring history of project ''{0}''?\n\nNote: This will only delete refactorings exclusively associated with ''{0}''.
 RefactoringPropertyPage_sharing_refactoring_history=Sharing refactoring history...
 RefactoringPropertyPage_confirm_delete_caption=Confirm Refactoring Delete
-RefactoringPropertyPage_confirm_delete_pattern_singular=Are you sure you want to delete the refactoring from the refactoring history of project ''{1}''?\n\nNote: This may also affect refactoring histories of other projects.
+RefactoringPropertyPage_confirm_delete_pattern_singular=Are you sure you want to delete the refactoring from the refactoring history of project ''{0}''?\n\nNote: This may also affect refactoring histories of other projects.
 RefactoringPropertyPage_confirm_delete_pattern_plural=Are you sure you want to delete {0} refactorings from the refactoring history of project ''{1}''?\n\nNote: This may also affect refactoring histories of other projects.
 RefactoringDescriptorDeleteQuery_confirm_deletion_singular=Are you sure you want to delete the refactoring from the workspace refactoring history?\n\nNote: This may also affect refactoring histories of projects.
 RefactoringDescriptorDeleteQuery_confirm_deletion_plural=Are you sure you want to delete {0} refactorings from the workspace refactoring history?\n\nNote: This may also affect refactoring histories of projects.
diff --git a/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs b/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
index 1f488fa..5a56c43 100644
--- a/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,9 @@
-#Tue Feb 24 16:31:16 CST 2009
+#Mon May 03 08:45:46 CDT 2010
 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.recreateModifiedClassFileInOutputFolder=ignore
 org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
 org.eclipse.jdt.core.circularClasspath=error
 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
@@ -37,8 +38,11 @@ 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.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
 org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
@@ -46,10 +50,12 @@ org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
 org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
@@ -65,6 +71,7 @@ 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=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
@@ -81,6 +88,7 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverridin
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
 org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
diff --git a/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs b/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..7754db2
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+#Mon May 03 08:45:46 CDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/eclipse/plugins/org.eclipse.osgi/JavaSE-1.7.profile b/eclipse/plugins/org.eclipse.osgi/JavaSE-1.7.profile
index e48b916..192b46e 100644
--- a/eclipse/plugins/org.eclipse.osgi/JavaSE-1.7.profile
+++ b/eclipse/plugins/org.eclipse.osgi/JavaSE-1.7.profile
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
+# Copyright (c) 2009, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -190,9 +190,9 @@ org.osgi.framework.executionenvironment = \
  JavaSE-1.6,\
  JavaSE-1.7
 osgi.java.profile.name = JavaSE-1.7
-org.eclipse.jdt.core.compiler.compliance=1.7
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
diff --git a/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java b/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
index e2f36de..da34820 100644
--- a/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
+++ b/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -430,6 +430,8 @@ public class FrameworkCommandProvider implements CommandProvider, SynchronousBun
 		int stateFilter = -1;
 		if (option != null && option.equals("-s")) { //$NON-NLS-1$
 			String searchedState = intp.nextArgument();
+			if (searchedState == null)
+				searchedState = ""; //$NON-NLS-1$
 			StringTokenizer tokens = new StringTokenizer(searchedState, ","); //$NON-NLS-1$
 			while (tokens.hasMoreElements()) {
 				String desiredState = (String) tokens.nextElement();
diff --git a/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java b/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
index 296de56..317e2bb 100644
--- a/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
+++ b/eclipse/plugins/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -99,7 +99,6 @@ public class FrameworkConsole implements Runnable {
 	 * Command output is written to the console PrintStream. The method will
 	 * loop reading commands from the console InputStream until end-of-file
 	 * is reached. This method will then return.
-	 * @throws IOException
 	 */
 	public void run() {
 		try {
diff --git a/eclipse/plugins/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java b/eclipse/plugins/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
index 6e38cc1..e77e76d 100644
--- a/eclipse/plugins/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -119,7 +119,6 @@ public interface ClassLoaderDelegateHook {
 	 * @param classLoader the bundle class loader
 	 * @param data the bundle data
 	 * @return the library found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
 	 */
 	public String postFindLibrary(String name, BundleClassLoader classLoader, BundleData data);
 }
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
index 213b814..4289fea 100644
--- a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,18 +26,19 @@ import org.osgi.framework.Bundle;
  */
 public interface CommandInterpreter {
 	/**
-	 *	Get the next argument in the input.
-	 *	
-	 *	E.g. if the commandline is hello world, the _hello method
-	 *	will get "world" as the first argument.
+	 * Get the next argument in the input.  If no arguments are left then null is returned.
+	 *
+	 * E.g. if the commandline is hello world, the _hello method
+	 * will get "world" as the first argument.
+	 * @return the next argument or null if no arguments are left.
 	 */
 	public String nextArgument();
 
 	/**
-	 *	Execute a command line as if it came from the end user
-	 *	and return the result.
-	 *           
-	 *          Throws any exceptions generated by the command that executed.
+	 * Execute a command line as if it came from the end user
+	 * and return the result.
+	 * @param cmd The command line to execute.
+	 * @return the result of the command.
 	 */
 	public Object execute(String cmd);
 
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
index c704592..bb43b14 100644
--- a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,8 +40,16 @@ public abstract class ConsoleSession implements ServiceFactory {
 	public final void close() {
 		doClose();
 		ServiceRegistration current = sessionRegistration;
-		if (current != null)
-			current.unregister();
+		if (current != null) {
+			sessionRegistration = null;
+			try {
+				current.unregister();
+			} catch (IllegalStateException e) {
+				// This can happen if the service is in the process of being 
+				// unregistered or if another thread unregistered the service.
+				// Ignoring the exception.
+			}
+		}
 	}
 
 	/**
@@ -72,7 +80,7 @@ public abstract class ConsoleSession implements ServiceFactory {
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public final Object getService(Bundle bundle, ServiceRegistration registration) {
-		if (sessionRegistration != null)
+		if (sessionRegistration == null)
 			sessionRegistration = registration;
 		return this;
 	}
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
index 5921a07..1e10d79 100644
--- a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
@@ -1294,7 +1294,7 @@ public abstract class AbstractBundle implements Bundle, Comparable, KeyedElement
 	public BundleException getResolutionFailureException() {
 		BundleDescription bundleDescription = getBundleDescription();
 		if (bundleDescription == null)
-			return new BundleException(Msg.BUNDLE_UNRESOLVED_EXCEPTION, BundleException.RESOLVE_ERROR);
+			return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR);
 		// just a sanity check - this would be an inconsistency between the framework and the state
 		if (bundleDescription.isResolved())
 			return new BundleException(Msg.BUNDLE_UNRESOLVED_STATE_CONFLICT, BundleException.RESOLVE_ERROR);
@@ -1304,7 +1304,7 @@ public abstract class AbstractBundle implements Bundle, Comparable, KeyedElement
 	private BundleException getResolverError(BundleDescription bundleDesc) {
 		ResolverError[] errors = framework.adaptor.getState().getResolverErrors(bundleDesc);
 		if (errors == null || errors.length == 0)
-			return new BundleException(Msg.BUNDLE_UNRESOLVED_EXCEPTION, BundleException.RESOLVE_ERROR);
+			return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR);
 		StringBuffer message = new StringBuffer();
 		int errorType = BundleException.RESOLVE_ERROR;
 		for (int i = 0; i < errors.length; i++) {
@@ -1314,7 +1314,7 @@ public abstract class AbstractBundle implements Bundle, Comparable, KeyedElement
 			if (i < errors.length - 1)
 				message.append(", "); //$NON-NLS-1$
 		}
-		return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, message.toString()), errorType);
+		return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, this.toString(), message.toString()), errorType);
 	}
 
 	public int getKeyHashCode() {
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
index 1d2bdec..01aaee3 100644
--- a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
@@ -817,12 +817,6 @@ public class Framework implements EventDispatcher, EventPublisher, Runnable {
 	/**
 	 * Install a bundle from an InputStream.
 	 * 
-	 * <p>
-	 * This method performs all the steps listed in
-	 * {@link #installBundle(java.lang.String)}, except the bundle's content
-	 * will be read from the InputStream. The location identifier specified
-	 * will be used as the identity of the bundle.
-	 * 
 	 * @param location
 	 *            The location identifier of the bundle to install.
 	 * @param in
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
index 56bb2fd..86ab5f0 100755
--- a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
+++ b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -369,9 +369,9 @@ public class ServiceRegistry {
 	 * <p>
 	 * A bundle's use of a service is tracked by the bundle's use count of that
 	 * service. Each time a service's service object is returned by
-	 * {@link #getService(ServiceReference)} the context bundle's use count for
+	 * {@link #getService(BundleContextImpl, ServiceReferenceImpl)} the context bundle's use count for
 	 * that service is incremented by one. Each time the service is released by
-	 * {@link #ungetService(ServiceReference)} the context bundle's use count
+	 * {@link #ungetService(BundleContextImpl, ServiceReferenceImpl)} the context bundle's use count
 	 * for that service is decremented by one.
 	 * <p>
 	 * When a bundle's use count for a service drops to zero, the bundle should
@@ -420,7 +420,7 @@ public class ServiceRegistry {
 	 *         and the Java Runtime Environment supports permissions.
 	 * @throws java.lang.IllegalStateException If this BundleContext is no
 	 *         longer valid.
-	 * @see #ungetService(ServiceReference)
+	 * @see #ungetService(BundleContextImpl, ServiceReferenceImpl)
 	 * @see ServiceFactory
 	 */
 	public Object getService(BundleContextImpl context, ServiceReferenceImpl reference) {
diff --git a/eclipse/plugins/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java b/eclipse/plugins/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
index 48d31e5..82263d1 100644
--- a/eclipse/plugins/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
+++ b/eclipse/plugins/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
@@ -1265,14 +1265,18 @@ public class BaseStorage implements SynchronousBundleListener {
 				if (runningThread == null) {
 					shutdownHook = new Thread(new Runnable() {
 						public void run() {
-							synchronized (systemState) {
-								saveAllData(false);
-							}
+							// Synchronize with JVM shutdown hook, because
+							// saveAllData creates a temp file with delete on 
+							// exit is true. The temp file will be removed in the
+							// shutdown hook. This prevents that the remove temp files
+							// in the shutdown hook is earlier handled then adding new
+							// temp file in saveAllData.
+							shutdown();
 						}
 					});
-					Runtime.getRuntime().addShutdownHook(shutdownHook);
 					runningThread = new Thread(this, "State Saver"); //$NON-NLS-1$
 					runningThread.start();
+					Runtime.getRuntime().addShutdownHook(shutdownHook);
 				}
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java b/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
index 1a5cd3b..9286454 100644
--- a/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
+++ b/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
@@ -46,7 +46,7 @@ public class ResolverImpl implements org.eclipse.osgi.service.resolver.Resolver
 	private static int MAX_MULTIPLE_SUPPLIERS_MERGE = 10;
 	private static int MAX_USES_TIME_BASE = 30000; // 30 seconds
 	private static int MAX_USES_TIME_LIMIT = 90000; // 90 seconds
-	private static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
+	static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
 
 	private String[][] CURRENT_EES;
 
@@ -399,7 +399,15 @@ public class ResolverImpl implements org.eclipse.osgi.service.resolver.Resolver
 		}
 		for (Iterator rejected = rejectedSingletons.iterator(); rejected.hasNext();) {
 			BundleDescription reject = (BundleDescription) rejected.next();
-			BundleDescription sameName = state.getBundle(reject.getSymbolicName(), null);
+			// need to do a bit of work to figure out which bundle got selected
+			BundleDescription[] sameNames = state.getBundles(reject.getSymbolicName());
+			BundleDescription sameName = reject;
+			for (int i = 0; i < sameNames.length; i++) {
+				if (sameNames[i] != reject && sameNames[i].isSingleton() && !rejectedSingletons.contains(sameNames[i])) {
+					sameName = sameNames[i]; // we know this one got selected
+					break;
+				}
+			}
 			state.addResolverError(reject, ResolverError.SINGLETON_SELECTION, sameName.toString(), null);
 		}
 		if (resolveOptional)
diff --git a/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java b/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
index 908bf86..05f18f3 100644
--- a/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
+++ b/eclipse/plugins/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
@@ -14,10 +14,12 @@ package org.eclipse.osgi.internal.module;
 import java.util.*;
 
 public class VersionHashMap extends MappedList implements Comparator {
-	private ResolverImpl resolver;
+	private final ResolverImpl resolver;
+	private final boolean preferSystemPackages;
 
 	public VersionHashMap(ResolverImpl resolver) {
 		this.resolver = resolver;
+		preferSystemPackages = Boolean.valueOf(ResolverImpl.secureAction.getProperty("osgi.resolver.preferSystemPackages", "true")).booleanValue(); //$NON-NLS-1$//$NON-NLS-2$
 	}
 
 	// assumes existing array is sorted
@@ -104,11 +106,13 @@ public class VersionHashMap extends MappedList implements Comparator {
 		// if the selection policy is set then use that
 		if (resolver.getSelectionPolicy() != null)
 			return resolver.getSelectionPolicy().compare(vs1.getBaseDescription(), vs2.getBaseDescription());
-		String systemBundle = resolver.getSystemBundle();
-		if (systemBundle.equals(vs1.getBundle().getSymbolicName()) && !systemBundle.equals(vs2.getBundle().getSymbolicName()))
-			return -1;
-		else if (!systemBundle.equals(vs1.getBundle().getSymbolicName()) && systemBundle.equals(vs2.getBundle().getSymbolicName()))
-			return 1;
+		if (preferSystemPackages) {
+			String systemBundle = resolver.getSystemBundle();
+			if (systemBundle.equals(vs1.getBundle().getSymbolicName()) && !systemBundle.equals(vs2.getBundle().getSymbolicName()))
+				return -1;
+			else if (!systemBundle.equals(vs1.getBundle().getSymbolicName()) && systemBundle.equals(vs2.getBundle().getSymbolicName()))
+				return 1;
+		}
 		if (vs1.getBundle().isResolved() != vs2.getBundle().isResolved())
 			return vs1.getBundle().isResolved() ? -1 : 1;
 		int versionCompare = -(vs1.getVersion().compareTo(vs2.getVersion()));
diff --git a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
index c74c1f2..83fdd36 100644
--- a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
+++ b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
@@ -110,27 +110,19 @@ public class KeyStoreTrustEngine extends TrustEngine {
 
 		try {
 			Certificate rootCert = null;
-
 			KeyStore store = getKeyStore();
 			for (int i = 0; i < certChain.length; i++) {
 				if (certChain[i] instanceof X509Certificate) {
-					if (i == certChain.length - 1) { //this is the last certificate in the chain
+					if (i == certChain.length - 1) {
+						// this is the last certificate in the chain
+						// determine if we have a valid root
 						X509Certificate cert = (X509Certificate) certChain[i];
 						if (cert.getSubjectDN().equals(cert.getIssuerDN())) {
-							certChain[i].verify(certChain[i].getPublicKey());
-							rootCert = certChain[i]; // this is a self-signed certificate
+							cert.verify(cert.getPublicKey());
+							rootCert = cert; // this is a self-signed certificate
 						} else {
 							// try to find a parent, we have an incomplete chain
-							synchronized (store) {
-								for (Enumeration e = store.aliases(); e.hasMoreElements();) {
-									Certificate nextCert = store.getCertificate((String) e.nextElement());
-									if (nextCert instanceof X509Certificate && ((X509Certificate) nextCert).getSubjectDN().equals(cert.getIssuerDN())) {
-										cert.verify(nextCert.getPublicKey());
-										rootCert = nextCert;
-										break;
-									}
-								}
-							}
+							return findAlternativeRoot(cert, store);
 						}
 					} else {
 						X509Certificate nextX509Cert = (X509Certificate) certChain[i + 1];
@@ -147,6 +139,10 @@ public class KeyStoreTrustEngine extends TrustEngine {
 						if (alias != null)
 							return store.getCertificate(alias);
 					}
+					// if we have reached the end and the last cert is not found to be a valid root CA
+					// then we need to back off the root CA and try to find an alternative
+					if (certChain.length > 1 && i == certChain.length - 1 && certChain[i - 1] instanceof X509Certificate)
+						return findAlternativeRoot((X509Certificate) certChain[i - 1], store);
 				}
 			}
 		} catch (KeyStoreException e) {
@@ -158,6 +154,19 @@ public class KeyStoreTrustEngine extends TrustEngine {
 		return null;
 	}
 
+	private Certificate findAlternativeRoot(X509Certificate cert, KeyStore store) throws InvalidKeyException, KeyStoreException, NoSuchAlgorithmException, NoSuchProviderException, SignatureException, CertificateException {
+		synchronized (store) {
+			for (Enumeration e = store.aliases(); e.hasMoreElements();) {
+				Certificate nextCert = store.getCertificate((String) e.nextElement());
+				if (nextCert instanceof X509Certificate && ((X509Certificate) nextCert).getSubjectDN().equals(cert.getIssuerDN())) {
+					cert.verify(nextCert.getPublicKey());
+					return nextCert;
+				}
+			}
+			return null;
+		}
+	}
+
 	protected String doAddTrustAnchor(Certificate cert, String alias) throws IOException, GeneralSecurityException {
 		if (isReadOnly())
 			throw new IOException(SignedContentMessages.Default_Trust_Read_Only);
diff --git a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
index 993d9b8..5b90453 100644
--- a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
+++ b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,6 +33,7 @@ import org.eclipse.osgi.service.security.TrustEngine;
 import org.eclipse.osgi.signedcontent.SignedContent;
 import org.eclipse.osgi.signedcontent.SignedContentFactory;
 import org.eclipse.osgi.util.ManifestElement;
+import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.*;
 import org.osgi.framework.Constants;
 import org.osgi.util.tracker.ServiceTracker;
@@ -242,7 +243,19 @@ public class SignedBundleHook implements AdaptorHook, BundleFileWrapperFactoryHo
 		else
 			contentBundleFile = new ZipBundleFile(content, null);
 		SignedBundleFile result = new SignedBundleFile(null, VERIFY_ALL);
-		result.setBundleFile(contentBundleFile);
+		try {
+			result.setBundleFile(contentBundleFile);
+		} catch (InvalidKeyException e) {
+			throw (InvalidKeyException) new InvalidKeyException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
+		} catch (SignatureException e) {
+			throw (SignatureException) new SignatureException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
+		} catch (CertificateException e) {
+			throw (CertificateException) new CertificateException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
+		} catch (NoSuchAlgorithmException e) {
+			throw (NoSuchAlgorithmException) new NoSuchAlgorithmException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
+		} catch (NoSuchProviderException e) {
+			throw (NoSuchProviderException) new NoSuchProviderException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
+		}
 		return new SignedContentFile(result.getSignedContent());
 	}
 
diff --git a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
index 6fdccd9..28cab18 100644
--- a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
+++ b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,6 +32,8 @@ public class SignedContentMessages extends NLS {
 	// Security Exceptions
 	public static String Algorithm_Not_Supported;
 
+	public static String Factory_SignedContent_Error;
+
 	public static String Default_Trust_Keystore_Load_Failed;
 	public static String Default_Trust_Read_Only;
 	public static String Default_Trust_Cert_Not_Found;
diff --git a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
index d0d9d98..47dace8 100644
--- a/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
+++ b/eclipse/plugins/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
+# Copyright (c) 2006, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -26,6 +26,9 @@ PKCS7_Parse_Signing_Time = The time stamp in the pkcs7 file cannot be parsed pro
 # Security Exceptions
 Algorithm_Not_Supported = {0} digest algorithm is not supported!
 
+# SignedContentFactory exception
+Factory_SignedContent_Error = An error occurred while processing the signatures for the file: {0}
+
 # Default Trust Engine
 Default_Trust_Keystore_Load_Failed = Failed to load the keystore from: {0}
 Default_Trust_Read_Only=This trust engine is read only.
diff --git a/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties b/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
index ce456d5..ecb3dba 100644
--- a/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
+++ b/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
@@ -108,7 +108,7 @@ fileManager_illegalInReadOnlyMode = Cannot perform operation while in read-only
 fileManager_notOpen = Manager is not opened.
 
 #Location messages
-location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking passing {2} as a VM argument.
+location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking by passing {2} as a VM argument.
 location_cannotLock = An error occurred while locking file \"{0}\".
 location_folderReadOnly = The folder \"{0}\" is read-only.
 location_notSet = The location has not been set.
diff --git a/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties b/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
index c814fce..1c73f44 100644
--- a/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
+++ b/eclipse/plugins/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
+# Copyright (c) 2003, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -25,9 +25,9 @@ BUNDLE_STATE_CHANGE_EXCEPTION=State change in progress for bundle \"{0}\" by thr
 BUNDLE_REFRESH_FAILURE=PackageAdmin.refreshPackages failed to complete
 BUNDLE_ACTIVATOR_EXCEPTION=Exception in {0}.{1}() of bundle {2}.
 BUNDLE_INVALID_ACTIVATOR_EXCEPTION=The activator {0} for bundle {1} is invalid
-BUNDLE_UNRESOLVED_EXCEPTION=The bundle could not be resolved
+BUNDLE_UNRESOLVED_EXCEPTION=The bundle \"{0}\" could not be resolved
 BUNDLE_UNRESOLVED_STATE_CONFLICT=The state indicates the bundle is resolved
-BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle could not be resolved. Reason: {0}
+BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle \"{0}\" could not be resolved. Reason: {1}
 BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION=The System Bundle cannot be uninstalled
 BUNDLE_READ_EXCEPTION=An error occurred trying to read the bundle
 BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION=The Bundle-ClassPath entry \"{0}\" was not found in the bundle: {1}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/plugin.xml b/eclipse/plugins/org.eclipse.pde.api.tools.ui/plugin.xml
index 7df731d..4b39e46 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.api.tools.ui/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
<!--
-    Copyright (c) 2009 IBM Corporation and others.
+<?eclipse version="3.2"?>
+<!--
+    Copyright (c) 2009, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/FilterProblemResolution.java b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/FilterProblemResolution.java
index b1ed754..3c1069c 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/FilterProblemResolution.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/FilterProblemResolution.java
@@ -172,9 +172,15 @@ public class FilterProblemResolution extends WorkbenchMarkerResolution {
 	public IMarker[] findOtherMarkers(IMarker[] markers) {
 		HashSet mset = new HashSet(markers.length);
 		for (int i = 0; i < markers.length; i++) {
-			if(Util.isApiProblemMarker(markers[i]) &&
-					!fBackingMarker.equals(markers[i])) {
-				mset.add(markers[i]);
+			try {
+				if(Util.isApiProblemMarker(markers[i]) &&
+						!fBackingMarker.equals(markers[i]) &&
+						!markers[i].getType().equals(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER)) {
+					mset.add(markers[i]);
+				}
+			}
+			catch(CoreException ce) {
+				//do nothing just don't add the filter
 			}
 		}
 		int size = mset.size();
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/preferencemessages.properties b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/preferencemessages.properties
index ae2ec6d..0f3fbc9 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/preferencemessages.properties
+++ b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/preferencemessages.properties
@@ -57,7 +57,7 @@ ReportApiComponentResolutionFailureDescription=Bundle missing required constrain
 API_COMPONENT_REMOVED_API_TYPE=An API type has become non-API:
 API_COMPONENT_REMOVED_TYPE=A type has been removed:
 API_COMPONENT_REMOVED_REEXPORTED_API_TYPE=An API re-exported type has become non-API:
-API_COMPONENT_REMOVED_REEXPORTED_TYPE=A re-e&xported type has been removed:
+API_COMPONENT_REMOVED_REEXPORTED_TYPE=A re-exported type has been removed:
 
 ANNOTATION_REMOVED_FIELD=A field has been removed:
 ANNOTATION_REMOVED_METHOD=A method has been removed:
@@ -74,12 +74,12 @@ INTERFACE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy h
 INTERFACE_CHANGED_TYPE_CONVERSION=Converted to class, enum, or annotation:
 INTERFACE_REMOVED_FIELD=A field has been removed:
 INTERFACE_REMOVED_METHOD=A method has been removed:
-INTERFACE_REMOVED_TYPE_MEMBER=A member type has been &removed:
+INTERFACE_REMOVED_TYPE_MEMBER=A member type has been removed:
 INTERFACE_REMOVED_TYPE_PARAMETER=A type parameter has been removed:
 
 ENUM_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy has been reduced:
 ENUM_CHANGED_TYPE_CONVERSION=Converted to annotation, class, or interface:
-ENUM_REMOVED_FIELD=A fie&ld has been removed:
+ENUM_REMOVED_FIELD=A field has been removed:
 ENUM_REMOVED_ENUM_CONSTANT=An enum constant has been removed:
 ENUM_REMOVED_METHOD=A method has been removed:
 ENUM_REMOVED_TYPE_MEMBER=A member type has been removed:
@@ -89,7 +89,7 @@ CLASS_ADDED_RESTRICTIONS=Restrictions have been added:
 CLASS_ADDED_TYPE_PARAMETER=A type parameter has been added:
 CLASS_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy has been reduced:
 CLASS_CHANGED_NON_ABSTRACT_TO_ABSTRACT=The keyword 'abstract' has been added:
-CLASS_CHANGED_NON_FINAL_TO_FINAL=The key&word 'final' has been added:
+CLASS_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added:
 CLASS_CHANGED_TYPE_CONVERSION=Converted to annotation, enum, or interface:
 CLASS_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
 CLASS_REMOVED_FIELD=A field has been removed:
@@ -108,7 +108,7 @@ FIELD_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added:
 FIELD_CHANGED_STATIC_TO_NON_STATIC=The keyword 'static' has been removed:
 FIELD_CHANGED_NON_STATIC_TO_STATIC=The keyword 'static' has been added:
 FIELD_REMOVED_VALUE=The constant value has been removed:
-FIELD_REMOVED_TYPE_ARGUMENT=A type ar&gument has been removed:
+FIELD_REMOVED_TYPE_ARGUMENT=A type argument has been removed:
 
 METHOD_ADDED_RESTRICTIONS=The @nooverride restriction has been added:
 METHOD_ADDED_TYPE_PARAMETER=A type parameter has been added:
@@ -117,7 +117,7 @@ METHOD_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
 METHOD_CHANGED_NON_ABSTRACT_TO_ABSTRACT=The keyword 'abstract' has been added:
 METHOD_CHANGED_NON_STATIC_TO_STATIC=The keyword 'static' has been added:
 METHOD_CHANGED_STATIC_TO_NON_STATIC=The keyword 'static' has been removed:
-METHOD_CHANGED_NON_FINAL_TO_FINAL=The &keyword 'final' has been added (type tagged '@noextend'):
+METHOD_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added (type tagged '@noextend'):
 METHOD_REMOVED_ANNOTATION_DEFAULT_VALUE=The annotation default value has been removed:
 METHOD_REMOVED_TYPE_PARAMETER=A type parameter has been removed:
 
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/use/ApiUseScanTab.java b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/use/ApiUseScanTab.java
index d28caf3..f46ebf2 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/use/ApiUseScanTab.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/use/ApiUseScanTab.java
@@ -251,9 +251,7 @@ public class ApiUseScanTab extends AbstractLaunchConfigurationTab {
 		this.createhtml = SWTFactory.createCheckButton(group, Messages.ApiUseScanTab_create_html_report, null, false, 2);
 		this.createhtml.addSelectionListener(new SelectionAdapter(){
 			public void widgetSelected(SelectionEvent e) {
-				boolean enabled = ((Button)e.widget).getSelection();
-				ApiUseScanTab.this.cleanhtmllocation.setEnabled(enabled);
-				ApiUseScanTab.this.openreport.setEnabled(enabled);
+				updateReportOptions();
 				updateDialog();
 			}
 		});
@@ -352,10 +350,20 @@ public class ApiUseScanTab extends AbstractLaunchConfigurationTab {
 				break;
 			}
 		}
+		updateReportOptions();
 		updateLaunchConfigurationDialog();
 	}
 	
 	/**
+	 * Updates the report options
+	 */
+	void updateReportOptions() {
+		boolean enabled = this.createhtml.getSelection();
+		this.openreport.setEnabled(enabled);
+		this.cleanhtmllocation.setEnabled(enabled);
+	}
+	
+	/**
 	 * Sets the enabled state of all of the child of the given group
 	 * @param group
 	 * @param enabled
@@ -418,14 +426,27 @@ public class ApiUseScanTab extends AbstractLaunchConfigurationTab {
 				public int compare(Object o1, Object o2) {
 					ITargetDefinition d1 = (ITargetDefinition) o1;
 					ITargetDefinition d2 = (ITargetDefinition) o2;
-					return d1.getName().compareTo(d2.getName());
+					
+					final String name1 = d1.getName();
+					final String name2 = d2.getName();
+					if (name1 == null) {
+						if (name2 == null) {
+							return d1.getHandle().toString().compareTo(d2.getHandle().toString());
+						}
+						return -1;
+					} else if (name2 == null) {
+						return 1;
+					}
+					return name1.compareTo(name2);
 				}
 			});
 			targetHandles = new ITargetHandle[defs.size()];
 			for (int i = 0; i < defs.size(); i++) {
 				ITargetDefinition def = (ITargetDefinition) defs.get(i);
-				targetHandles[i] = def.getHandle();
-				names.add(def.getName());
+				final ITargetHandle handle = def.getHandle();
+				targetHandles[i] = handle;
+				final String name = def.getName();
+				names.add(name == null ? handle.toString() : name);
 			}
 		}
 		this.targetCombo.setItems((String[]) names.toArray(new String[names.size()]));
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiBaselineWizardPage.java b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiBaselineWizardPage.java
index 6a971e7..6f63e9a 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiBaselineWizardPage.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiBaselineWizardPage.java
@@ -643,7 +643,7 @@ public class ApiBaselineWizardPage extends WizardPage {
 	}
 	
 	/**
-	 * Cleans up the working copy if the page is cancelled
+	 * Cleans up the working copy if the page is canceled
 	 */
 	public void cancel() {
 		if(fProfile != null) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/.settings/org.eclipse.pde.prefs b/eclipse/plugins/org.eclipse.pde.api.tools/.settings/org.eclipse.pde.prefs
index 11ce83f..292d035 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/.settings/org.eclipse.pde.prefs
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/.settings/org.eclipse.pde.prefs
@@ -1,9 +1,16 @@
-#Mon Dec 14 12:08:14 CST 2009
+#Wed Jun 02 08:55:19 EDT 2010
 compilers.f.unresolved-features=1
 compilers.f.unresolved-plugins=1
 compilers.incompatible-environment=1
 compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
 compilers.p.build.missing.output=1
+compilers.p.build.output.library=2
+compilers.p.build.source.library=2
+compilers.p.build.src.includes=1
 compilers.p.deprecated=1
 compilers.p.discouraged-class=1
 compilers.p.internal=1
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/plugin.properties b/eclipse/plugins/org.eclipse.pde.api.tools/plugin.properties
index 3e8ffa8..8953214 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
+# Copyright (c) 2007, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/plugin.xml b/eclipse/plugins/org.eclipse.pde.api.tools/plugin.xml
index 118aded..49c87d4 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <!--
-    Copyright (c) 2009 IBM Corporation and others.
+    Copyright (c) 2009, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml b/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml
index 8f5c173..0d1aaa3 100755
--- a/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-	Copyright (c) IBM Corporation and others 2008, 2009 This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.
+	Copyright (c) IBM Corporation and others 2008, 2010 This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.
 	
 	All Platform Debug contexts, those for org.eclipse.debug.ui, are located in this file
 	All contexts are grouped by their relation, with all relations grouped alphabetically.
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiFilterStore.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiFilterStore.java
index 1f88535..d603c8b 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiFilterStore.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiFilterStore.java
@@ -696,6 +696,11 @@ public class ApiFilterStore implements IApiFilterStore, IResourceChangeListener
 		if(persist) {
 			persistApiFilters();
 		}
+		else {
+			//need to reset the flag during initialization if we are not going to persist
+			//the filters, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=309635
+			fNeedsSaving = false;
+		}
 	}
 	
 	/**
@@ -826,6 +831,16 @@ public class ApiFilterStore implements IApiFilterStore, IResourceChangeListener
 		return NO_FILTERS;
 	}
 	
+	/**
+	 * Collects the complete set of problem filters from the given set whose
+	 * underlying problem categories do not match any from the given array and whose
+	 * type name matches the underlying problem type name.
+	 *   
+	 * @param filters
+	 * @param typename
+	 * @param collector
+	 * @param categories
+	 */
 	private void collectFilterFor(Set filters, String typename, Set collector, int[] categories) {
 		ApiProblemFilter filter = null;
 		for (Iterator iter = filters.iterator(); iter.hasNext();) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/IApiCoreConstants.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/IApiCoreConstants.java
index 322345f..75e3d2b 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/IApiCoreConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/IApiCoreConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalMethodReference.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalMethodReference.java
index 0a41adf..66340df 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalMethodReference.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalMethodReference.java
@@ -55,7 +55,7 @@ public abstract class AbstractIllegalMethodReference extends AbstractProblemDete
 	 * @see org.eclipse.pde.api.tools.internal.builder.AbstractProblemDetector#considerReference(org.eclipse.pde.api.tools.internal.provisional.builder.IReference)
 	 */
 	public boolean considerReference(IReference reference) {
-		if (super.considerReference(reference) & fIllegalMethods.containsKey(new MethodKey(reference.getReferencedTypeName(), reference.getReferencedMemberName(), reference.getReferencedSignature(), true))) {
+		if (super.considerReference(reference) && fIllegalMethods.containsKey(new MethodKey(reference.getReferencedTypeName(), reference.getReferencedMemberName(), reference.getReferencedSignature(), true))) {
 			retainReference(reference);
 			return true;
 		}
@@ -72,7 +72,7 @@ public abstract class AbstractIllegalMethodReference extends AbstractProblemDete
 		IApiMember method = reference.getResolvedReference();
 		String componentId = (String) fMethodComponents.get(method.getHandle());
 		// TODO: would it be faster to store component objects and use identity instead of equals?
-		return componentId != null && method.getApiComponent().getSymbolicName().equals(componentId);
+		return isReferenceFromComponent(reference, componentId);
 	}
 	
 	/* (non-Javadoc)
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalTypeReference.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalTypeReference.java
index fbed0d2..7b4683b 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalTypeReference.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractIllegalTypeReference.java
@@ -54,7 +54,7 @@ public abstract class AbstractIllegalTypeReference extends AbstractProblemDetect
 	 * @see org.eclipse.pde.api.tools.internal.provisional.search.IApiProblemDetector#considerReference(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
 	 */
 	public boolean considerReference(IReference reference) {
-		if (super.considerReference(reference) & fIllegalTypes.containsKey(reference.getReferencedTypeName())) {
+		if (super.considerReference(reference) && fIllegalTypes.containsKey(reference.getReferencedTypeName())) {
 			retainReference(reference);
 			return true;
 		}
@@ -79,7 +79,7 @@ public abstract class AbstractIllegalTypeReference extends AbstractProblemDetect
 		}
 		IApiMember type = reference.getResolvedReference();
 		Object componentId = fIllegalTypes.get(type.getName());
-		return componentId != null && type.getApiComponent().getSymbolicName().equals(componentId);
+		return isReferenceFromComponent(reference, componentId);
 	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getSourceRange(org.eclipse.jdt.core.IType, org.eclipse.jface.text.IDocument, org.eclipse.pde.api.tools.internal.provisional.model.IReference)
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractProblemDetector.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractProblemDetector.java
index 3002ba9..5d33188 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractProblemDetector.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractProblemDetector.java
@@ -418,7 +418,23 @@ public abstract class AbstractProblemDetector implements IApiProblemDetector {
 		}
 		return true;
 	}
-	
+	protected boolean isReferenceFromComponent(IReference reference,
+			Object componentId) {
+		if (componentId != null) {
+			final IApiComponent apiComponent = reference.getResolvedReference().getApiComponent();
+			// API component is either component id itself or one of its fragment
+			if (apiComponent.getSymbolicName().equals(componentId)) {
+				return true;
+			}
+			try {
+				final IApiComponent host = apiComponent.getHost();
+				return host != null && host.getSymbolicName().equals(componentId);
+			} catch (CoreException e) {
+				ApiPlugin.log(e);
+			}
+		}
+		return false;
+	}
 	/**
 	 * Tries to find the given {@link IApiMethod} in the given {@link IType}. If a matching method is not
 	 * found <code>null</code> is returned 
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractTypeLeakDetector.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractTypeLeakDetector.java
index 7ccf51f..793285a 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractTypeLeakDetector.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/AbstractTypeLeakDetector.java
@@ -51,7 +51,7 @@ public abstract class AbstractTypeLeakDetector extends AbstractLeakProblemDetect
 	public boolean considerReference(IReference reference) {
 		// consider the reference if the location the reference is made from is visible:
 		// i.e. a public or protected class in an API package
-		if (super.considerReference(reference) & isNonAPIReference(reference)) {
+		if (super.considerReference(reference) && isNonAPIReference(reference)) {
 			IApiMember member = reference.getMember();
 			int modifiers = member.getModifiers();
 			if (((Flags.AccPublic | Flags.AccProtected) & modifiers) > 0) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
index 6819a39..c88ee9d 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
@@ -107,6 +107,10 @@ import com.ibm.icu.text.MessageFormat;
  */
 public class BaseApiAnalyzer implements IApiAnalyzer {
 	private static final String QUALIFIER = "qualifier"; //$NON-NLS-1$
+	/**
+	 * @since 1.1
+	 */
+	static final String[] NO_TYPES = new String[0];
 	private static class ReexportedBundleVersionInfo {
 		String componentID;
 		int kind;
@@ -323,7 +327,7 @@ public class BaseApiAnalyzer implements IApiAnalyzer {
 			IApiProblemFilter[] filters = null;
 			if(context.hasTypes()) {
 				IResource resource = null;
-				String[] types = context.getStructurallyChangedTypes();
+				String[] types = getApiUseTypes(context);
 				for (int i = 0; i < types.length; i++) {
 					if(types[i] == null) {
 						continue;
@@ -338,7 +342,7 @@ public class BaseApiAnalyzer implements IApiAnalyzer {
 						createUnusedApiFilterProblems(filters);
 					}
 				}
-				types = context.getStructuralDependentTypes();
+				/*types = context.getStructuralDependentTypes();
 				for (int i = 0; i < types.length; i++) {
 					if(types[i] == null) {
 						continue;
@@ -355,7 +359,7 @@ public class BaseApiAnalyzer implements IApiAnalyzer {
 						}
 						createUnusedApiFilterProblems(filters);
 					}
-				}
+				}*/
 				if(autoremove) {
 					removeUnusedProblemFilters(store, toremove, monitor);
 				}
@@ -892,35 +896,12 @@ public class BaseApiAnalyzer implements IApiAnalyzer {
 		} 
 		IApiTypeContainer scope = null;
 		if(context.hasTypes()) {
-			String[] deptypes = null;
-			int size = 0;
-			if (context.hasDescriptionDependents()) {
-				// only check dependents if there were description changes
-				deptypes = context.getDescriptionDependentTypes();
-				size += deptypes.length;
-			}
-			String[] structtypes = context.getStructurallyChangedTypes();
-			HashSet typenames = new HashSet(size + structtypes.length); // TODO: better sizing
-			if (deptypes != null) {
-				for (int i = 0; i < deptypes.length; i++) {
-					if(deptypes[i] == null) {
-						continue;
-					}
-					typenames.add(deptypes[i]);
-				}
-			}
-			for (int i = 0; i < structtypes.length; i++) {
-				if(structtypes[i] == null) {
-					continue;
-				}
-				typenames.add(structtypes[i]);
-			}
-			if (typenames.isEmpty()) {
-				// nothing to analyze
+			String[] typenames = getApiUseTypes(context);
+			if(typenames.length < 1) {
 				monitor.done();
 				return;
 			}
-			scope = getSearchScope(component, (String[]) typenames.toArray(new String[typenames.size()]));
+			scope = getSearchScope(component, typenames);
 		} else {
 			scope = getSearchScope(component, null); // entire component
 		}
@@ -952,6 +933,42 @@ public class BaseApiAnalyzer implements IApiAnalyzer {
 	}
 	
 	/**
+	 * Returns the collection of type names to be built
+	 * @param context
+	 * @return the complete listing of type names to build or an empty array, never <code>null</code>
+	 * @since 1.1
+	 */
+	String[] getApiUseTypes(IBuildContext context) {
+		if(context.hasTypes()) {
+			String[] deptypes = null;
+			int size = 0;
+			if (context.hasDescriptionDependents()) {
+				// only check dependents if there were description changes
+				deptypes = context.getDescriptionDependentTypes();
+				size += deptypes.length;
+			}
+			String[] structtypes = context.getStructurallyChangedTypes();
+			HashSet typenames = new HashSet(size + structtypes.length); // TODO: better sizing
+			if (deptypes != null) {
+				for (int i = 0; i < deptypes.length; i++) {
+					if(deptypes[i] == null) {
+						continue;
+					}
+					typenames.add(deptypes[i]);
+				}
+			}
+			for (int i = 0; i < structtypes.length; i++) {
+				if(structtypes[i] == null) {
+					continue;
+				}
+				typenames.add(structtypes[i]);
+			}
+			return (String[]) typenames.toArray(new String[typenames.size()]);
+		}
+		return NO_TYPES;
+	}
+	
+	/**
 	 * Compares the given type between the two API components
 	 * @param typeName the type to check in each component
 	 * @param reference 
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildContext.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildContext.java
index 7e9cbe5..6aff3dd 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildContext.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildContext.java
@@ -23,7 +23,6 @@ public class BuildContext implements IBuildContext {
 	private static final String[] NO_TYPES = new String[0];
 	
 	private StringSet structualChanges = null;
-	private StringSet structuralDependents = null;
 	private StringSet removedTypes = null;
 	private StringSet descriptionChanges = null;
 	private StringSet descriptionDepedents = null;
@@ -64,16 +63,6 @@ public class BuildContext implements IBuildContext {
 	}
 	
 	/* (non-Javadoc)
-	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#getDependentTypes()
-	 */
-	public String[] getStructuralDependentTypes() {
-		if(this.structuralDependents == null) {
-			return NO_TYPES;
-		}
-		return this.structuralDependents.values;
-	}
-	
-	/* (non-Javadoc)
 	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#hasChangedTypes()
 	 */
 	public boolean hasStructuralChanges() {
@@ -88,14 +77,10 @@ public class BuildContext implements IBuildContext {
 	public boolean hasDescriptionChanges() {
 		return (this.descriptionChanges == null ? 0 : this.descriptionChanges.elementSize) > 0;
 	}
-	
+
 	/* (non-Javadoc)
-	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#hasDependentTypes()
+	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#hasDescriptionDependents()
 	 */
-	public boolean hasStructuralDependents() {
-		return (this.structuralDependents == null ? 0 : this.structuralDependents.elementSize) > 0;
-	}
-
 	public boolean hasDescriptionDependents() {
 		return (this.descriptionDepedents == null ? 0 : this.descriptionDepedents.elementSize) > 0;
 	}
@@ -161,22 +146,6 @@ public class BuildContext implements IBuildContext {
 	 * 
 	 * @param typename the type to add a dependent of
 	 */
-	public void recordStructuralDependent(String typename) {
-		if(typename == null) {
-			return;
-		}
-		if(this.structuralDependents == null) {
-			this.structuralDependents = new StringSet(16);
-		}
-		this.structuralDependents.add(typename.replace('/', '.'));
-	}
-	
-	/**
-	 * Adds the given type name to the collection of dependent type names. Does
-	 * nothing if <code>null</code> is passed in as the type name.
-	 * 
-	 * @param typename the type to add a dependent of
-	 */
 	public void recordDescriptionDependent(String typename) {
 		if(typename == null) {
 			return;
@@ -195,9 +164,17 @@ public class BuildContext implements IBuildContext {
 			this.structualChanges.clear();
 			this.structualChanges = null;
 		}
-		if(this.structuralDependents != null) {
-			this.structuralDependents.clear();
-			this.structuralDependents = null;
+		if(this.removedTypes != null) {
+			this.removedTypes.clear();
+			this.removedTypes = null;
+		}
+		if(this.descriptionChanges != null) {
+			this.descriptionChanges.clear();
+			this.descriptionChanges = null;
+		}
+		if(this.descriptionDepedents != null) {
+			this.descriptionDepedents.clear();
+			this.descriptionDepedents = null;
 		}
 	}
 
@@ -205,7 +182,7 @@ public class BuildContext implements IBuildContext {
 	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#hasTypes()
 	 */
 	public boolean hasTypes() {
-		return hasStructuralChanges() || hasRemovedTypes() || hasDescriptionChanges() || hasDescriptionDependents() || hasStructuralDependents();
+		return hasStructuralChanges() || hasRemovedTypes() || hasDescriptionChanges() || hasDescriptionDependents();
 	}
 
 	/* (non-Javadoc)
@@ -239,16 +216,6 @@ public class BuildContext implements IBuildContext {
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#containsDependentType(java.lang.String)
-	 */
-	public boolean containsStructuralDependent(String typename) {
-		if(typename == null) {
-			return false;
-		}
-		return structuralDependents != null && structuralDependents.includes(typename.replace('/', '.'));
-	}
-
-	/* (non-Javadoc)
 	 * @see org.eclipse.pde.api.tools.internal.provisional.builder.IBuildContext#containsRemovedType(java.lang.String)
 	 */
 	public boolean containsRemovedType(String typename) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IllegalFieldReferenceDetector.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IllegalFieldReferenceDetector.java
index a029d4b..d756167 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IllegalFieldReferenceDetector.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IllegalFieldReferenceDetector.java
@@ -61,7 +61,7 @@ public class IllegalFieldReferenceDetector extends AbstractProblemDetector {
 	 * @see org.eclipse.pde.api.tools.internal.provisional.search.IApiProblemDetector#considerReference(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
 	 */
 	public boolean considerReference(IReference reference) {
-		if (super.considerReference(reference) & fIllegalFields.containsKey(new MethodKey(reference.getReferencedTypeName(), reference.getReferencedMemberName(), reference.getReferencedSignature(), true))) {
+		if (super.considerReference(reference) && fIllegalFields.containsKey(new MethodKey(reference.getReferencedTypeName(), reference.getReferencedMemberName(), reference.getReferencedSignature(), true))) {
 			retainReference(reference);
 			return true;
 		}
@@ -144,6 +144,6 @@ public class IllegalFieldReferenceDetector extends AbstractProblemDetector {
 			return false;
 		}
 		Object componentId = fFieldComponents.get(reference.getResolvedReference().getHandle());
-		return componentId != null && reference.getResolvedReference().getApiComponent().getSymbolicName().equals(componentId);
+		return isReferenceFromComponent(reference, componentId);
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java
index 6623cde..ab3e809 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java
@@ -301,14 +301,14 @@ public class IncrementalApiBuilder {
 			return;
 		}
 		if ((STRUCTURAL & kind) > 0) {
-			if(!this.context.containsStructuralChange(type) && !this.context.containsStructuralDependent(type)) {
+			if(!this.context.containsStructuralChange(type)) {
 				this.builder.cleanupCompatibilityMarkers(file);
-				this.context.recordStructuralDependent(type);
 			}
 		}
 		if ((DESCRIPTION & kind) > 0) {
 			if(!this.context.containsDescriptionChange(type) && !this.context.containsDescriptionDependent(type)) {
 				this.builder.cleanupUsageMarkers(file);
+				this.builder.cleanUnusedFilterMarkers(file);
 				this.context.recordDescriptionDependent(type);
 			}
 		}
@@ -328,11 +328,6 @@ public class IncrementalApiBuilder {
 			String typename = null;
 			for (int i = 0; i < types.length; i++) {
 				typename = types[i].getFullyQualifiedName('$');
-				if ((STRUCTURAL & kind) > 0) {
-					if (!this.context.containsStructuralChange(typename) && !this.context.containsStructuralDependent(typename)) {
-						this.context.recordStructuralDependent(typename);
-					}
-				}
 				if ((DESCRIPTION & kind) > 0) {
 					if (!this.context.containsDescriptionChange(typename) && !this.context.containsDescriptionDependent(typename)) {
 						this.context.recordDescriptionDependent(typename);
@@ -546,7 +541,7 @@ public class IncrementalApiBuilder {
 				String tname = null; 
 				for (int i = 0; i < markers.length; i++) {
 					tname = Util.getTypeNameFromMarker(markers[i]);
-					if(this.context.containsStructuralDependent(tname) || this.context.containsStructuralChange(tname)) {
+					if(this.context.containsStructuralChange(tname)) {
 						markers[i].delete();
 					}
 				}
@@ -556,7 +551,7 @@ public class IncrementalApiBuilder {
 				markers = resource.findMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
 				for (int i = 0; i < markers.length; i++) {
 					tname = Util.getTypeNameFromMarker(markers[i]);
-					if(this.context.containsStructuralDependent(tname) || this.context.containsStructuralChange(tname)) {
+					if(this.context.containsStructuralChange(tname)) {
 						markers[i].delete();
 					}
 				}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/MethodLeakDetector.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/MethodLeakDetector.java
index d66f22e..2eebd41 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/MethodLeakDetector.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/MethodLeakDetector.java
@@ -150,7 +150,7 @@ public abstract class MethodLeakDetector extends AbstractLeakProblemDetector {
 	 * @see org.eclipse.pde.api.tools.internal.provisional.search.IApiProblemDetector#considerReference(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
 	 */
 	public boolean considerReference(IReference reference) {
-		if (super.considerReference(reference) & isNonAPIReference(reference)) {
+		if (super.considerReference(reference) && isNonAPIReference(reference)) {
 			IApiMember member = reference.getMember();
 			if (member != null && matchesSourceModifiers(member) && matchesSourceApiRestrictions(member)) {
 				retainReference(reference);
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/TypeScope.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/TypeScope.java
index ad1a35e..bcfb317 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/TypeScope.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/TypeScope.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
index a3160fb..60cce86 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -3002,9 +3002,9 @@ public class ClassFileComparator {
 			// we ignore synthetic method
 			return;
 		}
-		if ((this.visibilityModifiers == VisibilityModifiers.API) && component2.hasApiDescription()) {
+		IApiDescription apiDescription = null;
+		if (((this.visibilityModifiers & VisibilityModifiers.API) != 0) && component2.hasApiDescription()) {
 			// check if this method should be removed because it is tagged as @noreference
-			IApiDescription apiDescription = null;
 			int restrictions = RestrictionModifiers.NO_RESTRICTIONS;
 			try {
 				apiDescription = this.component2.getApiDescription();
@@ -3018,7 +3018,7 @@ public class ClassFileComparator {
 				}
 			}
 			// check if this method should be removed because it is tagged as @noreference
-			if (RestrictionModifiers.isReferenceRestriction(restrictions)) {
+			if (this.visibilityModifiers == VisibilityModifiers.API && RestrictionModifiers.isReferenceRestriction(restrictions)) {
 				// such a method is not seen as an API method
 				return;
 			}
@@ -3028,6 +3028,38 @@ public class ClassFileComparator {
 		if (Flags.isFinal(this.type2.getModifiers())) {
 			restrictionsForMethodAddition |= RestrictionModifiers.NO_EXTEND;
 		}
+		if (apiDescription != null) {
+			if (this.type2.isMemberType() && Flags.isProtected(this.type2.getModifiers())) {
+				// protected member - check restriction on the enclosing type
+				IApiType enclosingType = this.type2;
+				try {
+					do {
+						if (enclosingType != null) {
+							final IApiAnnotations memberTypeAnnotations = apiDescription.resolveAnnotations(enclosingType.getHandle());
+							if (memberTypeAnnotations != null) {
+								int restrictions = memberTypeAnnotations.getRestrictions();
+								if (RestrictionModifiers.isReferenceRestriction(restrictions)) {
+									restrictionsForMethodAddition |= RestrictionModifiers.NO_REFERENCE;
+								}
+								if (RestrictionModifiers.isExtendRestriction(restrictions)) {
+									// @noextend on a class that contains a protected member means that it cannot be referenced
+									restrictionsForMethodAddition |= RestrictionModifiers.NO_EXTEND;
+									if (this.visibilityModifiers == VisibilityModifiers.API) {
+										return;
+									}
+								}
+								if (RestrictionModifiers.isImplementRestriction(restrictions)) {
+									restrictionsForMethodAddition |= RestrictionModifiers.NO_IMPLEMENT;
+								}
+							}
+						}
+						enclosingType = enclosingType.getEnclosingType();
+					} while (enclosingType != null);
+				} catch (CoreException e) {
+					reportStatus(e);
+				}
+			}
+		}
 		if (Flags.isPublic(access) || Flags.isProtected(access)) {
 			if (method.isConstructor()) {
 				this.addDelta(
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/compatible_delta_messages.properties b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/compatible_delta_messages.properties
index 35ee3ba..705a2a4 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/compatible_delta_messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/compatible_delta_messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2008, 2009 IBM Corporation and others.
+# Copyright (c) 2008, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.java
index 8a20c09..d210926 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.properties b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.properties
index 17ab466..7a2fbcf 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/Messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2008, 2009 IBM Corporation and others.
+# Copyright (c) 2008, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/ProjectTypeContainer.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/ProjectTypeContainer.java
index e1cb1f2..b9946d5 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/ProjectTypeContainer.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/ProjectTypeContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/builder/IBuildContext.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/builder/IBuildContext.java
index 79343fa..ca2c7e2 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/builder/IBuildContext.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/builder/IBuildContext.java
@@ -43,15 +43,6 @@ public interface IBuildContext {
 	public String[] getRemovedTypes();
 	
 	/**
-	 * Returns the complete collection of types dependent the structurally changed types reported from the
-	 * {@link org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder}.
-	 * If no types have been reported as dependent an empty array is returned, never <code>null</code>.
-	 * 
-	 * @return the complete collection of types dependent on structural changes or an empty array
-	 */
-	public String[] getStructuralDependentTypes();
-	
-	/**
 	 * Returns the complete collection of types dependent the description changed types reported from the
 	 * {@link org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder}.
 	 * If no types have been reported as dependent an empty array is returned, never <code>null</code>.
@@ -83,16 +74,6 @@ public interface IBuildContext {
 	public boolean hasDescriptionChanges();
 	
 	/**
-	 * Returns if the build context has any structurally dependent types. 
-	 * 
-	 * Has better performance impact than getting the collection of dependent
-	 * type names to ask for the size.
-	 * 
-	 * @return true if there are dependent type names recorded, false otherwise
-	 */
-	public boolean hasStructuralDependents();
-	
-	/**
 	 * Returns whether this build context has any type dependent on API description changes.
 	 * 
 	 * @return <code>true</code> if there are type dependent on API description changes, otherwise <code>false</code>
@@ -145,15 +126,6 @@ public interface IBuildContext {
 	public boolean containsStructuralChange(String typename);
 	
 	/**
-	 * Returns if this build context contains the given type name
-	 * in its dependent types collection
-	 * 
-	 * @param typename
-	 * @return true if this context contains the given type name, false otherwise
-	 */
-	public boolean containsStructuralDependent(String typename);
-	
-	/**
 	 * Returns if this build context contains the given type name 
 	 * in its removed types collection
 	 * 
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/ApiComparator.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/ApiComparator.java
index 85f3ebc..6c74a40 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/ApiComparator.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/ApiComparator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/CompareApiScopeVisitor.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/CompareApiScopeVisitor.java
index 3224baf..71ac287 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/CompareApiScopeVisitor.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/CompareApiScopeVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/ApiTypeContainerVisitor.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/ApiTypeContainerVisitor.java
index 7f49983..0777628 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/ApiTypeContainerVisitor.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/ApiTypeContainerVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiMember.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiMember.java
index 9bc27a0..9bd2554 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiMember.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiMember.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,7 +32,7 @@ import org.eclipse.pde.api.tools.internal.provisional.descriptors.IMemberDescrip
 public interface IApiMember extends IApiElement {
 	
 	/**
-	 * Returns a the type this member is declared in or <code>null</code>
+	 * Returns the type this member is declared in or <code>null</code>
 	 * if none.
 	 * 
 	 * @return enclosing type or <code>null</code>
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiTypeContainer.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiTypeContainer.java
index 60ef154..3011bcc 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiTypeContainer.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/model/IApiTypeContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/HTMLConvertor.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/HTMLConvertor.java
index 0a95c43..8d72540 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/HTMLConvertor.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/HTMLConvertor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,7 +31,6 @@ public abstract class HTMLConvertor {
 	public static final String HTML_HEADER = "<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"; //$NON-NLS-1$
 	/**
 	 * Meta tag for default HTML content type
-	 * iso-8859-1
 	 */
 	public static final String CONTENT_TYPE_META = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"; //$NON-NLS-1$
 	/**
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/ReferenceLookupVisitor.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/ReferenceLookupVisitor.java
index d074684..9a5d66a 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/ReferenceLookupVisitor.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/ReferenceLookupVisitor.java
@@ -13,13 +13,15 @@ package org.eclipse.pde.api.tools.internal.search;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.pde.api.tools.internal.IApiCoreConstants;
 import org.eclipse.pde.api.tools.internal.IApiXmlConstants;
 import org.eclipse.pde.api.tools.internal.builder.Reference;
 import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
@@ -230,7 +232,7 @@ public class ReferenceLookupVisitor extends UseScanVisitor {
 			doc.appendChild(root);
 			addMissingComponents(missingComponents, SearchMessages.ReferenceLookupVisitor_0, doc, root);
 			addMissingComponents(skippedComponents, SearchMessages.SkippedComponent_component_was_excluded, doc, root);
-			writer = new BufferedWriter(new FileWriter(file));
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), IApiCoreConstants.UTF_8));
 			writer.write(Util.serializeDocument(doc));
 			writer.flush();
 		}
@@ -238,12 +240,11 @@ public class ReferenceLookupVisitor extends UseScanVisitor {
 		catch(IOException ioe) {}
 		catch(CoreException ce) {}
 		finally {
-			try {
-				if(writer != null) {
+			if(writer != null) {
+				try {
 					writer.close();
-				}
-			} 
-			catch (IOException e) {}
+				} catch (IOException e) {}
+			}
 		}
 	}
 	
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseMetadata.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseMetadata.java
index 432b460..30c9456 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseMetadata.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseMetadata.java
@@ -12,10 +12,12 @@ package org.eclipse.pde.api.tools.internal.search;
 
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.pde.api.tools.internal.IApiCoreConstants;
 import org.eclipse.pde.api.tools.internal.provisional.search.IApiSearchRequestor;
 import org.eclipse.pde.api.tools.internal.provisional.search.IMetadata;
 import org.eclipse.pde.api.tools.internal.util.Util;
@@ -184,7 +186,7 @@ public class UseMetadata implements IMetadata {
 					sub.setAttribute(VALUE, archivepatterns[i]);
 				}
 			}
-			writer = new BufferedWriter(new FileWriter(file));
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), IApiCoreConstants.UTF_8));
 			writer.write(Util.serializeDocument(doc));
 			writer.flush();
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseReportConverter.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseReportConverter.java
index 5baa537..b62c594 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseReportConverter.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseReportConverter.java
@@ -11,11 +11,11 @@
 package org.eclipse.pde.api.tools.internal.search;
 
 import java.io.BufferedInputStream;
-import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -23,10 +23,10 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map.Entry;
 import java.util.StringTokenizer;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import java.util.Map.Entry;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -48,6 +48,7 @@ import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jdt.core.Signature;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.api.tools.internal.IApiCoreConstants;
 import org.eclipse.pde.api.tools.internal.IApiXmlConstants;
 import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
 import org.eclipse.pde.api.tools.internal.provisional.VisibilityModifiers;
@@ -953,8 +954,7 @@ public class UseReportConverter extends HTMLConvertor {
 			buffer.append(W3C_FOOTER);
 			
 			//write file
-			FileWriter fileWriter = new FileWriter(meta);
-			writer = new PrintWriter(new BufferedWriter(fileWriter));
+			writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(meta), IApiCoreConstants.UTF_8));
 			writer.println(buffer.toString());
 			writer.flush();
 		}
@@ -1021,8 +1021,7 @@ public class UseReportConverter extends HTMLConvertor {
 			buffer.append(W3C_FOOTER);
 			
 			//write file
-			FileWriter fileWriter = new FileWriter(missing);
-			writer = new PrintWriter(new BufferedWriter(fileWriter));
+			writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(missing), IApiCoreConstants.UTF_8));;
 			writer.println(buffer.toString());
 			writer.flush();
 		}
@@ -1166,8 +1165,7 @@ public class UseReportConverter extends HTMLConvertor {
 			buffer.append(OPEN_P).append("<a href=\"../index.html\">").append(SearchMessages.UseReportConverter_back_to_bundle_index).append(CLOSE_A).append(CLOSE_P); //$NON-NLS-1$ 
 			buffer.append(W3C_FOOTER);
 			
-			FileWriter fileWriter = new FileWriter(originhtml);
-			writer = new PrintWriter(new BufferedWriter(fileWriter));
+			writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(originhtml), IApiCoreConstants.UTF_8));;
 			writer.println(buffer.toString());
 			writer.flush();
 		}
@@ -1277,8 +1275,7 @@ public class UseReportConverter extends HTMLConvertor {
 			buffer.append(W3C_FOOTER);
 			
 			//write the file
-			FileWriter fileWriter = new FileWriter(typefile);
-			writer = new PrintWriter(new BufferedWriter(fileWriter));
+			writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(typefile), IApiCoreConstants.UTF_8));;
 			writer.print(buffer.toString());
 			writer.flush();
 		}
@@ -1510,8 +1507,7 @@ public class UseReportConverter extends HTMLConvertor {
 			buffer.append(CLOSE_BODY).append(CLOSE_HTML);  
 			
 			//write the file
-			FileWriter fileWriter = new FileWriter(htmlIndex);
-			writer = new PrintWriter(new BufferedWriter(fileWriter));
+			writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(htmlIndex), IApiCoreConstants.UTF_8));
 			writer.print(buffer.toString());
 			writer.flush();
 		} catch (IOException e) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlReferenceDescriptorWriter.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlReferenceDescriptorWriter.java
index 2461176..1125a87 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlReferenceDescriptorWriter.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlReferenceDescriptorWriter.java
@@ -14,8 +14,9 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -27,6 +28,7 @@ import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.pde.api.tools.internal.IApiCoreConstants;
 import org.eclipse.pde.api.tools.internal.IApiXmlConstants;
 import org.eclipse.pde.api.tools.internal.builder.Reference;
 import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
@@ -363,7 +365,7 @@ public class XmlReferenceDescriptorWriter {
 					}
 				}
 				root.setAttribute(IApiXmlConstants.ATTR_REFERENCE_COUNT, Integer.toString(count));
-				writer = new BufferedWriter(new FileWriter(out));
+				writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(out), IApiCoreConstants.UTF_8));
 				writer.write(Util.serializeDocument(doc));
 				writer.flush();
 			}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlSearchReporter.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlSearchReporter.java
index 3a3ca51..321b5fe 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlSearchReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/XmlSearchReporter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,8 +13,9 @@ package org.eclipse.pde.api.tools.internal.search;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -24,6 +25,7 @@ import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.pde.api.tools.internal.IApiCoreConstants;
 import org.eclipse.pde.api.tools.internal.IApiXmlConstants;
 import org.eclipse.pde.api.tools.internal.builder.Reference;
 import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
@@ -133,7 +135,7 @@ public class XmlSearchReporter implements IApiSearchReporter {
 				comp.setAttribute(IApiXmlConstants.SKIPPED_DETAILS, component.getErrorDetails());
 				root.appendChild(comp);
 			}
-			writer = new BufferedWriter(new FileWriter(file));
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), IApiCoreConstants.UTF_8));
 			writer.write(Util.serializeDocument(doc));
 			writer.flush();
 		}
@@ -141,12 +143,11 @@ public class XmlSearchReporter implements IApiSearchReporter {
 		catch(IOException ioe) {}
 		catch(CoreException ce) {}
 		finally {
-			try {
-				if(writer != null) {
+			if(writer != null) {
+				try {
 					writer.close();
-				}
-			} 
-			catch (IOException e) {}
+				} catch (IOException e) {}
+			}
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/ExcludedElements.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/ExcludedElements.java
new file mode 100644
index 0000000..9964f15
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/ExcludedElements.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.api.tools.internal.util;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class ExcludedElements {
+
+	private Set exactMatches;
+	private Set partialMatches;
+
+	public Set getExactMatches() {
+		if (this.exactMatches == null) {
+			return Collections.EMPTY_SET;
+		}
+		return this.exactMatches;
+	}
+
+	public Set getPartialMatches() {
+		if (this.partialMatches == null) {
+			return Collections.EMPTY_SET;
+		}
+		return this.partialMatches;
+	}
+
+	public boolean containsPartialMatch(String componentId) {
+		if (this.partialMatches == null) return false;
+		if (this.partialMatches.contains(componentId)) {
+			return true;
+		}
+		for (Iterator iterator = this.partialMatches.iterator(); iterator.hasNext(); ) {
+			String partialMatch = (String) iterator.next();
+			if (componentId.startsWith(partialMatch)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public boolean containsExactMatch(String key) {
+		if (this.exactMatches == null) return false;
+		return this.exactMatches.contains(key);
+	}
+
+	public void addPartialMatch(String componentid) {
+		if (this.partialMatches == null) {
+			this.partialMatches = new HashSet();
+		}
+		this.partialMatches.add(componentid);
+	}
+
+	public void addExactMatch(String match) {
+		if (this.exactMatches == null) {
+			this.exactMatches = new HashSet();
+		}
+		this.exactMatches.add(match);
+	}
+	
+	public String toString() {
+		StringBuffer buffer = new StringBuffer();
+		printSet(buffer, this.exactMatches, "exact matches"); //$NON-NLS-1$
+		printSet(buffer, this.partialMatches, "partial matches"); //$NON-NLS-1$
+		return String.valueOf(buffer);
+	}
+	
+	private void printSet(StringBuffer buffer, Set set, String title) {
+		final String lineSeparator = System.getProperty("line.separator"); //$NON-NLS-1$
+		buffer
+			.append(title)
+			.append(lineSeparator)
+			.append("================================================================") //$NON-NLS-1$
+			.append(lineSeparator);
+		if (set != null) {
+			final int max = set.size();
+			String[] allEntries = new String[max];
+			set.toArray(allEntries);
+			Arrays.sort(allEntries);
+			for (int i = 0; i < max; i++) {
+				buffer.append(allEntries[i]).append(lineSeparator);
+			}
+			buffer.append(lineSeparator);
+		}
+		buffer
+			.append("================================================================") //$NON-NLS-1$
+			.append(lineSeparator);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
index a874255..0f60647 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
@@ -2215,8 +2215,8 @@ public final class Util {
 	 * @param baseline
 	 * @return the list of bundles to be excluded
 	 */
-	public static Set initializeRegexExcludeList(String location, IApiBaseline baseline) {
-		HashSet list = new HashSet();
+	public static ExcludedElements initializeRegexExcludeList(String location, IApiBaseline baseline, boolean debug) {
+		ExcludedElements excludedElements = new ExcludedElements();
 		if (location != null) {
 			File file = new File(location);
 			if (file.exists()) {
@@ -2245,11 +2245,10 @@ public final class Util {
 							}
 							if(line.startsWith(REGULAR_EXPRESSION_START)) {
 								if(baseline != null) {
-									Util.collectRegexIds(line, list, baseline.getApiComponents());
+									Util.collectRegexIds(line, excludedElements, baseline.getApiComponents(), debug);
 								}
-							}
-							else {
-								list.add(line);
+							} else {
+								excludedElements.addExactMatch(line);
 							}
 						}
 					} 
@@ -2263,7 +2262,7 @@ public final class Util {
 				}
 			}
 		}
-		return list;
+		return excludedElements;
 	}
 
 	/**
@@ -2272,19 +2271,30 @@ public final class Util {
 	 * @param list
 	 * @param components
 	 */
-	public static void collectRegexIds(String line, Set list, IApiComponent[] components) throws Exception {
+	public static void collectRegexIds(String line, ExcludedElements excludedElements, IApiComponent[] components, boolean debug) throws Exception {
 		if (line.startsWith(REGULAR_EXPRESSION_START)) {
 			String componentname = line;
 			// regular expression
 			componentname = componentname.substring(2);
 			Pattern pattern = null;
 			try {
+				if (debug) {
+					System.out.println("Pattern to match : " + componentname); //$NON-NLS-1$
+				}
 				pattern = Pattern.compile(componentname);
 				String componentid = null;
 				for (int j = 0, max2 = components.length; j < max2; j++) {
 					componentid = components[j].getSymbolicName();
+					if (debug) {
+						System.out.println("component id : " + componentid); //$NON-NLS-1$
+					}
 					if (pattern.matcher(componentid).matches()) {
-						list.add(componentid);
+						if (debug) {
+							System.out.println(componentid + " matched the pattern " + componentname); //$NON-NLS-1$
+						}
+						excludedElements.addPartialMatch(componentid);
+					} else if (debug) {
+						System.out.println(componentid + " didn't match the pattern " + componentname); //$NON-NLS-1$
 					}
 				}
 			} catch (PatternSyntaxException e) {
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIDeprecationTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIDeprecationTask.java
index 130f0bf..b27d492 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIDeprecationTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIDeprecationTask.java
@@ -26,6 +26,7 @@ import org.eclipse.pde.api.tools.internal.provisional.VisibilityModifiers;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.ApiComparator;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.IDelta;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 
 /**
  * Ant task to retrieve all deprecation changes (addition or removal) between two api baselines
@@ -82,6 +83,13 @@ public class APIDeprecationTask extends CommonUtilsTask {
 		IApiBaseline referenceBaseline = createBaseline(REFERENCE_BASELINE_NAME, getInstallDir(referenceInstallDir), this.eeFileLocation);
 		IApiBaseline currentBaseline = createBaseline(CURRENT_BASELINE_NAME, getInstallDir(baselineInstallDir), this.eeFileLocation);
 		
+		ExcludedElements excludedElements = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation, currentBaseline, this.debug);
+
+		if (this.debug) {
+			System.out.println("===================================================================================="); //$NON-NLS-1$
+			System.out.println("Excluded elements list:"); //$NON-NLS-1$
+			System.out.println(excludedElements);
+		}
 		IDelta delta = null;
 		if (this.debug) {
 			System.out.println("Creation of both baselines : " + (System.currentTimeMillis() - time) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -127,7 +135,7 @@ public class APIDeprecationTask extends CommonUtilsTask {
 			}
 			try {
 				writer = new BufferedWriter(new FileWriter(outputFile));
-				ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(this.excludeListLocation, ExcludeListDeltaVisitor.CHECK_DEPRECATION);
+				ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(excludedElements, ExcludeListDeltaVisitor.CHECK_DEPRECATION);
 				delta.accept(visitor);
 				writer.write(visitor.getXML());
 				writer.flush();
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIFreezeTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIFreezeTask.java
index b1dc43b..b114dfe 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIFreezeTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIFreezeTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,7 @@ import org.eclipse.pde.api.tools.internal.provisional.VisibilityModifiers;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.ApiComparator;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.IDelta;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 
 /**
  * Ant task to run the API freeze check during Eclipse build.
@@ -82,6 +83,13 @@ public class APIFreezeTask extends CommonUtilsTask {
 		IApiBaseline referenceBaseline = createBaseline(REFERENCE_BASELINE_NAME, getInstallDir(referenceInstallDir), this.eeFileLocation);
 		IApiBaseline currentBaseline = createBaseline(CURRENT_BASELINE_NAME, getInstallDir(baselineInstallDir), this.eeFileLocation);
 		
+		ExcludedElements excludedElements = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation, currentBaseline, this.debug);
+
+		if (this.debug) {
+			System.out.println("===================================================================================="); //$NON-NLS-1$
+			System.out.println("Excluded elements list:"); //$NON-NLS-1$
+			System.out.println(excludedElements);
+		}
 		IDelta delta = null;
 		if (this.debug) {
 			System.out.println("Creation of both baselines : " + (System.currentTimeMillis() - time) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -127,7 +135,7 @@ public class APIFreezeTask extends CommonUtilsTask {
 			}
 			try {
 				writer = new BufferedWriter(new FileWriter(outputFile));
-				ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(this.excludeListLocation, ExcludeListDeltaVisitor.CHECK_OTHER);
+				ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(excludedElements, ExcludeListDeltaVisitor.CHECK_OTHER);
 				delta.accept(visitor);
 				writer.write(visitor.getXML());
 				writer.flush();
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java
index 803bd0c..75d4dc4 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java
@@ -49,6 +49,7 @@ import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
 import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
 import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblemFilter;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 import org.eclipse.pde.api.tools.internal.util.Util;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -419,7 +420,7 @@ public class APIToolsAnalysisTask extends CommonUtilsTask {
 	private static final Summary[] NO_SUMMARIES = new Summary[0];
 	public static final String USAGE = "usage"; //$NON-NLS-1$
 
-	private Set excludedElement;
+	private ExcludedElements excludedElements;
 	private String filters;
 	private Properties properties;
 
@@ -457,7 +458,9 @@ public class APIToolsAnalysisTask extends CommonUtilsTask {
 			Summary summary = summaries[i];
 			String contents = null;
 			String componentID = summary.componentID;
-			if (this.excludedElement != null && this.excludedElement.contains(componentID)) {
+			if (this.excludedElements != null
+					&& (this.excludedElements.containsExactMatch(componentID)
+						|| this.excludedElements.containsPartialMatch(componentID))) {
 				continue;
 			}
 			try {
@@ -505,7 +508,7 @@ public class APIToolsAnalysisTask extends CommonUtilsTask {
 				
 				for (Iterator iterator = bundlesNames.iterator(); iterator.hasNext();) {
 					String bundleName = (String) iterator.next();
-					if (this.excludedElement == null || !this.excludedElement.contains(bundleName)) {
+					if (this.excludedElements == null || !this.excludedElements.containsPartialMatch(bundleName)) {
 						Element bundle = document.createElement(IApiXmlConstants.ELEMENT_BUNDLE);
 						bundle.setAttribute(IApiXmlConstants.ATTR_NAME, bundleName);
 						report.appendChild(bundle);
@@ -568,9 +571,6 @@ public class APIToolsAnalysisTask extends CommonUtilsTask {
 				System.out.println("No exclude list location"); //$NON-NLS-1$
 			}
 		}
-		if (this.excludeListLocation != null) {
-			this.excludedElement = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation);
-		}
 		// unzip reference
 		long time = 0;
 		if (this.debug) {
@@ -588,6 +588,14 @@ public class APIToolsAnalysisTask extends CommonUtilsTask {
 		IApiBaseline referenceBaseline = createBaseline(REFERENCE_BASELINE_NAME, getInstallDir(referenceInstallDir), this.eeFileLocation);
 		IApiBaseline currentBaseline = createBaseline(CURRENT_BASELINE_NAME, getInstallDir(baselineInstallDir), this.eeFileLocation);
 		
+		if (this.excludeListLocation != null) {
+			this.excludedElements = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation, currentBaseline, this.debug);
+			if (this.debug) {
+				System.out.println("===================================================================================="); //$NON-NLS-1$
+				System.out.println("Excluded elements list:"); //$NON-NLS-1$
+				System.out.println(this.excludedElements);
+			}
+		}
 		if (this.debug) {
 			System.out.println("Creation of both baselines : " + (System.currentTimeMillis() - time) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
 			time = System.currentTimeMillis();
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
index 97cd21b..3fde81a 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
@@ -164,9 +166,11 @@ public class ApiFileGenerationTask extends Task {
 	/**
 	 * Set the extra manifest files' locations.
 	 * 
-	 * <br><br>This is a list of extra MANIFEST.MF files' locations that can be set to provide more api
-	 * packages to scan. They are separated by the platform path separator. Each entry must exist.
-	 * <br><br>They should be specified using absolute paths.
+	 * <p>This is a list of extra MANIFEST.MF files' locations that can be set to provide more api
+	 * packages to scan. They are separated by the platform path separator. Each entry must exist.</p>
+	 * <p>If the path is not absolute, it will be resolved relative to the current working directory.</p>
+	 * <p>Jar files can be specified instead of MANIFEST.MF file. If a jar file is specified, its MANIFEST.MF file
+	 * will be read if it exists.</p>
 	 *
 	 * @param manifests the given extra manifest files' locations
 	 */
@@ -299,10 +303,21 @@ public class ApiFileGenerationTask extends Task {
 					Set currentApiPackages = null;
 					if (currentManifest.exists()) {
 						BufferedInputStream inputStream = null;
+						ZipFile zipFile = null;
 						try {
-							inputStream = new BufferedInputStream(new FileInputStream(currentManifest));
-							manifestMap = ManifestElement.parseBundleManifest(inputStream, null);
-							currentApiPackages = collectApiPackageNames(manifestMap);
+							if (isZipJarFile(currentManifest.getName())) {
+								zipFile = new ZipFile(currentManifest);
+								final ZipEntry entry = zipFile.getEntry("META-INF/MANIFEST.MF"); //$NON-NLS-1$
+								if (entry != null) {
+									inputStream = new BufferedInputStream(zipFile.getInputStream(entry));
+								}
+							} else {
+								inputStream = new BufferedInputStream(new FileInputStream(currentManifest));
+							}
+							if (inputStream != null) {
+								manifestMap = ManifestElement.parseBundleManifest(inputStream, null);
+								currentApiPackages = collectApiPackageNames(manifestMap);
+							}
 						} catch (FileNotFoundException e) {
 							ApiPlugin.log(e);
 						} catch (IOException e) {
@@ -314,7 +329,17 @@ public class ApiFileGenerationTask extends Task {
 								try {
 									inputStream.close();
 								} 
-								catch(IOException e) {}
+								catch(IOException e) {
+									// ignore
+								}
+							}
+							if (zipFile != null) {
+								try {
+									zipFile.close();
+								} 
+								catch(IOException e) {
+									// ignore
+								}
 							}
 						}
 					}
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CommonUtilsTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CommonUtilsTask.java
index 4b4b389..8754e92 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CommonUtilsTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CommonUtilsTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,6 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
@@ -26,6 +25,7 @@ import org.eclipse.pde.api.tools.internal.model.ApiModelFactory;
 import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 import org.eclipse.pde.api.tools.internal.util.TarException;
 import org.eclipse.pde.api.tools.internal.util.Util;
 
@@ -220,10 +220,10 @@ public abstract class CommonUtilsTask extends Task {
 	 * @param excludeListLocation
 	 * @return the set of project names to be excluded
 	 */
-	protected static Set initializeExcludedElement(String excludeListLocation) {
-		return Util.initializeRegexExcludeList(excludeListLocation, null);
+	protected static ExcludedElements initializeExcludedElement(String excludeListLocation, IApiBaseline baseline, boolean debug) {
+		return Util.initializeRegexExcludeList(excludeListLocation, baseline, debug);
 	}
-	
+
 	/**
 	 * Saves the report with the given name in the report location in a child directory with 
 	 * the componentID name
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CompareTask.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CompareTask.java
index 2ecfeb6..2c6132e 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CompareTask.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/CompareTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,6 +31,7 @@ import org.eclipse.pde.api.tools.internal.provisional.comparator.ApiScope;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.IDelta;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
 import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 import org.eclipse.pde.api.tools.internal.util.Util;
 import org.eclipse.pde.api.tools.internal.util.UtilMessages;
 
@@ -88,6 +89,13 @@ public class CompareTask extends CommonUtilsTask {
 		
 		IDelta delta = null;
 		
+		ExcludedElements excludedElements = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation, currentBaseline, this.debug);
+		
+		if (this.debug) {
+			System.out.println("===================================================================================="); //$NON-NLS-1$
+			System.out.println("Excluded elements list:"); //$NON-NLS-1$
+			System.out.println(excludedElements);
+		}
 		ApiScope scope = new ApiScope();
 		if (this.componentsList != null) {
 			// needs to set up individual components
@@ -165,7 +173,8 @@ public class CompareTask extends CommonUtilsTask {
 				outputFile.delete();
 			}
 			writer = new BufferedWriter(new FileWriter(outputFile));
-			ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(this.excludeListLocation, ExcludeListDeltaVisitor.CHECK_ALL);
+
+			ExcludeListDeltaVisitor visitor = new ExcludeListDeltaVisitor(excludedElements, ExcludeListDeltaVisitor.CHECK_ALL);
 			delta.accept(visitor);
 			writer.write(visitor.getXML());
 			writer.flush();
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ExcludeListDeltaVisitor.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ExcludeListDeltaVisitor.java
index d25930e..a5700f3 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ExcludeListDeltaVisitor.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ExcludeListDeltaVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jdt.core.Flags;
@@ -24,6 +23,7 @@ import org.eclipse.pde.api.tools.internal.comparator.DeltaXmlVisitor;
 import org.eclipse.pde.api.tools.internal.provisional.RestrictionModifiers;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.DeltaProcessor;
 import org.eclipse.pde.api.tools.internal.provisional.comparator.IDelta;
+import org.eclipse.pde.api.tools.internal.util.ExcludedElements;
 import org.eclipse.pde.api.tools.internal.util.Util;
 
 /**
@@ -34,22 +34,18 @@ public class ExcludeListDeltaVisitor extends DeltaXmlVisitor {
 	public static final int CHECK_OTHER = 0x02;
 	public static final int CHECK_ALL = CHECK_DEPRECATION | CHECK_OTHER;
 
-	private Set excludedElement;
-	private String excludeListLocation;
+	private ExcludedElements excludedElements;
 	private List nonExcludedElements;
-	
+
 	private int flags;
 
-	public ExcludeListDeltaVisitor(String excludeListLocation, int flags) throws CoreException {
+	public ExcludeListDeltaVisitor(ExcludedElements excludedElements, int flags) throws CoreException {
 		super();
-		this.excludeListLocation = excludeListLocation;
+		this.excludedElements = excludedElements;
 		this.nonExcludedElements = new ArrayList();
 		this.flags = flags;
 	}
 	private boolean checkExclude(IDelta delta) {
-		if (this.excludedElement == null) {
-			this.excludedElement = CommonUtilsTask.initializeExcludedElement(this.excludeListLocation);
-		}
 		return isExcluded(delta);
 	}
 	public String getPotentialExcludeList() {
@@ -68,7 +64,7 @@ public class ExcludeListDeltaVisitor extends DeltaXmlVisitor {
 		StringBuffer buffer = new StringBuffer();
 		String componentId = delta.getComponentVersionId();
 		if (componentId != null) {
-			if (this.excludedElement.contains(componentId)) {
+			if (this.excludedElements.containsPartialMatch(componentId)) {
 				return true;
 			}
 			buffer.append(componentId).append(':');
@@ -107,7 +103,7 @@ public class ExcludeListDeltaVisitor extends DeltaXmlVisitor {
 				break;
 		}
 		String excludeListKey = String.valueOf(buffer);
-		if (this.excludedElement.contains(excludeListKey)) {
+		if (this.excludedElements.containsExactMatch(excludeListKey)) {
 			return true;
 		}
 		this.nonExcludedElements.add(excludeListKey);
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java
index 5d9e9ec..36e4f47 100644
--- a/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java
+++ b/eclipse/plugins/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.build/data/env.properties b/eclipse/plugins/org.eclipse.pde.build/data/env.properties
index 99da84b..88799f5 100644
--- a/eclipse/plugins/org.eclipse.pde.build/data/env.properties
+++ b/eclipse/plugins/org.eclipse.pde.build/data/env.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  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:
+# Copyright (c) 2006, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 CDC-1.0/Foundation-1.0.javacSource=1.3
diff --git a/eclipse/plugins/org.eclipse.pde.build/plugin.xml b/eclipse/plugins/org.eclipse.pde.build/plugin.xml
index 7905f6b..dfff868 100644
--- a/eclipse/plugins/org.eclipse.pde.build/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.build/plugin.xml
@@ -1,5 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
+<?eclipse version="3.0"?><!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
    <extension-point id="fetchFactories" name="%fetchFactories.name" schema="schema/fetchFactories.exsd"/>
 <!-- Tasks -->
diff --git a/eclipse/plugins/org.eclipse.pde.build/scripts/genericTargets.xml b/eclipse/plugins/org.eclipse.pde.build/scripts/genericTargets.xml
index 0c7ce03..50dda73 100644
--- a/eclipse/plugins/org.eclipse.pde.build/scripts/genericTargets.xml
+++ b/eclipse/plugins/org.eclipse.pde.build/scripts/genericTargets.xml
@@ -1,11 +1,11 @@
 <!--
-     Copyright (c) 2003, 2009 IBM Corporation and others.
-     All rights reserved. This program and the accompanying materials
-     are made available under the terms of the Eclipse Public License v1.0
-     which accompanies this distribution, and is available at
-     http://www.eclipse.org/legal/epl-v10.html
-    
-     Contributors:
+    Copyright (c) 2003, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
          IBM Corporation - initial API and implementation
  -->
 <project name="Generic Build Targets" default="noDefault">
diff --git a/eclipse/plugins/org.eclipse.pde.build/scripts/productBuild/productBuild.xml b/eclipse/plugins/org.eclipse.pde.build/scripts/productBuild/productBuild.xml
index 6d18ff3..12131e4 100644
--- a/eclipse/plugins/org.eclipse.pde.build/scripts/productBuild/productBuild.xml
+++ b/eclipse/plugins/org.eclipse.pde.build/scripts/productBuild/productBuild.xml
@@ -1,11 +1,11 @@
 <!--
-     Copyright (c) 2006, 2009 IBM Corporation and others.
-     All rights reserved. This program and the accompanying materials
-     are made available under the terms of the Eclipse Public License v1.0
-     which accompanies this distribution, and is available at
-     http://www.eclipse.org/legal/epl-v10.html
-    
-     Contributors:
+    Copyright (c) 2006, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
          IBM Corporation - initial API and implementation
  -->
 <project name="Build a Product" default="main">
@@ -65,6 +65,7 @@
 		includeLaunchers="${includeLaunchers}"
 		buildPropertiesFile="${generatedBuildProperties}"
 		nestedInclusions="${nestedInclusions}"
+		filterP2Base="${filterP2Base}"
 	/>
 </target>
 
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java
index cc162b6..8ba53f9 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.build;
@@ -51,7 +51,7 @@ public interface IAntScript {
 	public void println();
 
 	/**
-	 * Print an ant call task as defined by <a href="http://ant.apache.org/manual/CoreTasks/antcall.html">AntCall</a>}.
+	 * Print an ant call task as defined by <a href="http://ant.apache.org/manual/Tasks/antcall.html">AntCall</a>}.
 	 * @param target the target executed by the call. This value can not be <code>null</code>.
 	 * @param inheritAll If true, pass all properties to the new Ant project.
 	 * @param params Specifies as key / value pairs, the properties to set before running the specified target. This value can be <code>null</code>
@@ -128,7 +128,7 @@ public interface IAntScript {
 	public void printTargetEnd();
 
 	/**
-	 * Print an <a href="http://ant.apache.org/manual/CoreTasks/echo.html">echo</a> task
+	 * Print an <a href="http://ant.apache.org/manual/Tasks/echo.html">echo</a> task
 	 * @param file - file to write the message to (or null)
 	 * @param message - the message to echo
 	 * @param level - the level to report the message (ie, "error", "warning", "info"), "warning" is the default if null is passed.
@@ -137,7 +137,7 @@ public interface IAntScript {
 	public void printEchoTask(String file, String message, String level);
 
 	/**
-	 * Print the beginning of a <a href="http://ant.apache.org/manual/CoreTasks/macrodef.html">macro definition</a>
+	 * Print the beginning of a <a href="http://ant.apache.org/manual/Tasks/macrodef.html">macro definition</a>
 	 * @param macroName
 	 * @param attributes
 	 * @since 3.6
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
index a02fefe..36aea25 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build;
@@ -618,14 +618,18 @@ public abstract class AbstractScriptGenerator implements IXMLConstants, IPDEBuil
 			if (agent != null) {
 				IProfileRegistry registry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME);
 				Path profilePath = new Path(profileFile.getPath());
-				IProfile profile = registry.getProfile(profilePath.removeFileExtension().lastSegment());
-				if (profile != null) {
-					String cache = profile.getProperty(IProfile.PROP_CACHE);
-					if (cache != null)
-						result.add(new File(cache).toURI());
-					String sharedCache = profile.getProperty(IProfile.PROP_SHARED_CACHE);
-					if (sharedCache != null)
-						result.add(new File(cache).toURI());
+				try {
+					IProfile profile = registry.getProfile(profilePath.removeFileExtension().lastSegment());
+					if (profile != null) {
+						String cache = profile.getProperty(IProfile.PROP_CACHE);
+						if (cache != null)
+							result.add(new File(cache).toURI());
+						String sharedCache = profile.getProperty(IProfile.PROP_SHARED_CACHE);
+						if (sharedCache != null)
+							result.add(new File(cache).toURI());
+					}
+				} catch (IllegalStateException e) {
+					//unable to read profile, may be read only
 				}
 
 				//download cache
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java
index 94f4fa7..61e8776 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java
@@ -1,13 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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 G&H Softwareentwicklung
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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 G&H Softwareentwicklung
  * GmbH - internationalization implementation (bug 150933) Prosyst - create
  * proper OSGi bundles (bug 174157)
- ******************************************************************************/
+ *******************************************************************************/
 package org.eclipse.pde.internal.build;
 
 import java.io.File;
@@ -934,7 +936,10 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 
 		if (BuildDirector.p2Gathering) {
 			//TODO permissions
-			fileSets.add(new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), false, null, "**/**", null, null, null, productFile != null ? Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) : null, null, null)); //$NON-NLS-1$
+			FileSet[] permissions = generatePermissions(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), true);
+			String toExcludeFromArchive = Utils.getStringFromCollection(this.addedByPermissions, ","); //$NON-NLS-1$
+			fileSets.add(new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), false, null, "**/**", null, toExcludeFromArchive, null, productFile != null ? Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) : null, null, null)); //$NON-NLS-1$
+			fileSets.addAll(Arrays.asList(permissions));
 		} else {
 			for (int i = 0; i < plugins.length; i++) {
 				Object[] shape = shapeAdvisor.getFinalShape(plugins[i]);
@@ -954,7 +959,7 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 						fileSets.add(new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + elt.toStringReplacingAny(".", ANY_STRING), false, null, "**/**", null, null, null, elt.toStringReplacingAny(".", ANY_STRING), null, null)); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 					}
 				} else {
-					FileSet[] permissions = generatePermissions(true);
+					FileSet[] permissions = generatePermissions(rootFolder, true);
 					String toExcludeFromArchive = Utils.getStringFromCollection(this.addedByPermissions, ","); //$NON-NLS-1$
 					fileSets.add(new ZipFileSet(rootFolder, false, null, "**/**", null, toExcludeFromArchive, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX), null, null)); //$NON-NLS-1$
 					fileSets.addAll(Arrays.asList(permissions));
@@ -967,13 +972,17 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 		}
 	}
 
-	protected FileSet[] generatePermissions(boolean zip) {
+	protected Collection getArchiveRootFileProviders() {
+		return rootFileProviders != null ? rootFileProviders : Collections.EMPTY_LIST;
+	}
+
+	protected FileSet[] generatePermissions(String root, boolean zip) {
 		String configInfix = configInfo.toString("."); //$NON-NLS-1$
 		String prefixPermissions = ROOT_PREFIX + configInfix + '.' + PERMISSIONS + '.';
 		String commonPermissions = ROOT_PREFIX + PERMISSIONS + '.';
 		ArrayList fileSets = new ArrayList();
 
-		for (Iterator iter = rootFileProviders.iterator(); iter.hasNext();) {
+		for (Iterator iter = getArchiveRootFileProviders().iterator(); iter.hasNext();) {
 			Properties featureProperties = getFeatureBuildProperties((BuildTimeFeature) iter.next());
 			for (Iterator iter2 = featureProperties.entrySet().iterator(); iter2.hasNext();) {
 				Map.Entry permission = (Map.Entry) iter2.next();
@@ -985,17 +994,17 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 					if (instruction.startsWith(prefixPermissions)) {
 						addedByPermissions.add(values[i]);
 						if (zip)
-							fileSets.add(new ZipFileSet(rootFolder + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(prefixPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+							fileSets.add(new ZipFileSet(root + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(prefixPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 						else
-							fileSets.add(new TarFileSet(rootFolder + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(prefixPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+							fileSets.add(new TarFileSet(root + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(prefixPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 						continue;
 					}
 					if (instruction.startsWith(commonPermissions)) {
 						addedByPermissions.add(values[i]);
 						if (zip)
-							fileSets.add(new ZipFileSet(rootFolder + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(commonPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+							fileSets.add(new ZipFileSet(root + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(commonPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 						else
-							fileSets.add(new TarFileSet(rootFolder + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(commonPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+							fileSets.add(new TarFileSet(root + (isFile ? '/' + values[i] : ""), isFile, null, isFile ? null : values[i] + "/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) + (isFile ? '/' + values[i] : ""), null, instruction.substring(commonPermissions.length()))); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 						continue;
 					}
 				}
@@ -1009,7 +1018,10 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 		List fileSets = new ArrayList();
 
 		if (BuildDirector.p2Gathering) {
-			fileSets.add(new TarFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), false, null, "**/**", null, null, null, productFile != null ? Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) : null, null, null)); //$NON-NLS-1$
+			FileSet[] permissions = generatePermissions(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), false);
+			String toExcludeFromArchive = Utils.getStringFromCollection(this.addedByPermissions, ","); //$NON-NLS-1$
+			fileSets.add(new TarFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE), false, null, "**/**", null, toExcludeFromArchive, null, productFile != null ? Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX) : null, null, null)); //$NON-NLS-1$
+			fileSets.addAll(Arrays.asList(permissions));
 		} else {
 			//FileSet[] filesPlugins = new FileSet[plugins.length];
 			for (int i = 0; i < plugins.length; i++) {
@@ -1023,7 +1035,7 @@ public class AssembleConfigScriptGenerator extends AbstractScriptGenerator {
 			}
 
 			if (rootFileProviders.size() > 0) {
-				FileSet[] permissionSets = generatePermissions(false);
+				FileSet[] permissionSets = generatePermissions(rootFolder, false);
 				fileSets.add(new TarFileSet(rootFolder, false, null, "**/**", null, null, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX), null, null)); //$NON-NLS-1$
 				fileSets.add(Arrays.asList(permissionSets));
 			}
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java
index 1b25d19..9098bc0 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build;
 
 import java.io.File;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BrandingIron.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BrandingIron.java
index 3700f9d..3e6247d 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BrandingIron.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BrandingIron.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildScriptGenerator.java
index 017b2b4..50f9029 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *      Ben Pryor - Bug 148288
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BundleHelper.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BundleHelper.java
index da8770f..fe1d4d1 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BundleHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BundleHelper.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
index ced692e..850ad6b 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build;
 
 import java.io.*;
@@ -170,8 +172,15 @@ public class FeatureGenerator extends AbstractScriptGenerator {
 		if (nestedInclusions == null || nestedInclusions.equalsIgnoreCase(FALSE))
 			return false;
 
+		if (product != null) {
+			//will need to generate a .eclipseproduct file
+			if (buildProperties == null)
+				buildProperties = new Properties();
+			buildProperties.put(IBuildPropertiesConstants.PROPERTY_GENERATE_ECLIPSEPRODUCT, TRUE);
+		}
+
 		//make sure there's actually something to nest
-		if ((pluginList == null || pluginList.length == 0) && (fragmentList == null || fragmentList.length == 0) && (featureList == null || featureList.length == 0) && (buildProperties != null || buildProperties.size() == 0))
+		if ((pluginList == null || pluginList.length == 0) && (fragmentList == null || fragmentList.length == 0) && (featureList == null || featureList.length == 0) && (buildProperties == null || buildProperties.size() == 0))
 			return false;
 
 		// use the product-id to generate a name if nestedRequirements==true
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureWriter.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureWriter.java
index ee91ba5..090572e 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureWriter.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureWriter.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * 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 - Initial API and implementation
- ******************************************************************************/
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build;
 
 import java.io.IOException;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FetchScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FetchScriptGenerator.java
index f91888a..adef92f 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FetchScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FetchScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java
index b8eedfa..c111e14 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
@@ -62,6 +62,7 @@ public interface IBuildPropertiesConstants {
 	public static final String PROPERTY_JAVAC_CUSTOM_ENCODINGS_PREFIX = "javacCustomEncodings."; //$NON-NLS-1$
 	public static final String PROPERTY_JAVAC_WARNINGS_PREFIX = "javacWarnings."; //$NON-NLS-1$
 	public static final String PROPERTY_JAVAC_ERRORS_PREFIX = "javacErrors."; //$NON-NLS-1$
+	public static final String PROPERTY_PROJECT_SETTINGS = "javacProjectSettings"; //$NON-NLS-1$
 
 	public static final String DEFAULT_MATCH_ALL = "*"; //$NON-NLS-1$
 	public static final String DEFAULT_FINAL_SHAPE = "*"; //$NON-NLS-1$
@@ -141,4 +142,6 @@ public interface IBuildPropertiesConstants {
 
 	public static final String PROPERTY_PACKAGER_MODE = "packagerMode"; //$NON-NLS-1$
 	public static final String PROPERTY_PACKAGER_AS_NORMALIZER = "packagerAsNormalizer"; //$NON-NLS-1$
+
+	public static final String PROPERTY_GENERATE_ECLIPSEPRODUCT = "generateEclipseProduct"; //$NON-NLS-1$
 }
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java
index 0e0ca9f..711a150 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
@@ -146,4 +146,8 @@ public interface IPDEBuildConstants {
 	//container feature used in building .product files
 	public final static String CONTAINER_FEATURE = "org.eclipse.pde.build.container.feature"; //$NON-NLS-1$
 	public final static String UI_CONTAINER_FEATURE = "org.eclipse.pde.container.feature"; //$NON-NLS-1$
+
+	public final static String PDE_CORE_PREFS = ".settings/org.eclipse.pde.core.prefs"; //$NON-NLS-1$
+	public final static String JDT_CORE_PREFS = ".settings/org.eclipse.jdt.core.prefs"; //$NON-NLS-1$
+	public final static String BUNDLE_ROOT_PATH = "BUNDLE_ROOT_PATH"; //$NON-NLS-1$
 }
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IXMLConstants.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IXMLConstants.java
index 4b7c555..27af8e1 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IXMLConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IXMLConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
@@ -170,6 +170,7 @@ public interface IXMLConstants {
 	public static final String PROPERTY_GENERATE_API_DESCRIPTION = "generateAPIDescription"; //$NON-NLS-1$
 	public static final String PROPERTY_BINARY_FOLDERS = "binary.folders"; //$NON-NLS-1$
 	public static final String PROPERTY_LAUNCHER_JAR = "equinoxLauncherJar"; //$NON-NLS-1$
+	public static final String PROPERTY_EXTRA_MANIFESTS = "extraManifests"; //$NON-NLS-1$
 
 	//Jar processor properties
 	public static final String PROPERTY_SIGN_ALIAS = "sign.alias"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Messages.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Messages.java
index 41f1cbb..99513f5 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Messages.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Messages.java
@@ -1,12 +1,13 @@
-/**********************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build;
 
 import org.eclipse.osgi.util.NLS;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java
index 16fb63f..b205aa4 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.pde.internal.build;
 
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java
index 808f2a5..c9a34da 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
index 8bb6309..e415127 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build;
 
 import java.io.*;
@@ -98,6 +100,35 @@ public class ProductGenerator extends AbstractScriptGenerator {
 
 	}
 
+	public void generateEclipseProduct() throws CoreException {
+		initialize();
+
+		if (productFile == null)
+			return;
+
+		String location = DEFAULT_PRODUCT_ROOT_FILES_DIR + "/ANY.ANY.ANY"; //$NON-NLS-1$
+		String rootLocation = root + location;
+		File rootDir = new File(rootLocation);
+		if ((!rootDir.exists() && !rootDir.mkdirs()) || rootDir.isFile())
+			return; //we will fail trying to create the files,
+
+		if (buildProperties == null)
+			buildProperties = new Properties();
+
+		String fileList = buildProperties.getProperty(ROOT, ""); //$NON-NLS-1$
+		fileList += (fileList.length() > 0) ? ',' + location : location;
+		buildProperties.put(ROOT, fileList);
+
+		//need to actually write the property changes out to disk
+		try {
+			Utils.writeProperties(buildProperties, new File(root, IPDEBuildConstants.PROPERTIES_FILE), ""); //$NON-NLS-1$
+		} catch (IOException e) {
+			return;
+		}
+
+		createEclipseProductFile(rootLocation);
+	}
+
 	public boolean generateP2Info() throws CoreException {
 		initialize();
 
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java
index 5aba9a7..fa79f4c 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build;
@@ -84,7 +84,7 @@ public final class Utils implements IPDEBuildConstants, IBuildPropertiesConstant
 
 	public static VersionRange createVersionRange(String versionId) {
 		VersionRange range = null;
-		if (versionId == null || GENERIC_VERSION_NUMBER.equals(versionId))
+		if (versionId == null || versionId.length() == 0 || GENERIC_VERSION_NUMBER.equals(versionId))
 			range = VersionRange.emptyRange;
 		else {
 			int qualifierIdx = versionId.indexOf(IBuildPropertiesConstants.PROPERTY_QUALIFIER);
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/AntScript.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/AntScript.java
index b9416b2..04cdc3c 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/AntScript.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/AntScript.java
@@ -1,12 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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 Prosyst - create proper
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  * OSGi bundles (bug 174157)
- ******************************************************************************/
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.ant;
 
 import java.io.*;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/JavacTask.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/JavacTask.java
index b1c02f6..6ba0f9d 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/JavacTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/JavacTask.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
@@ -37,6 +37,7 @@ public class JavacTask implements ITask {
 	protected String errorProperty;
 	protected String[] excludes;
 	protected String compilerAdapter;
+	protected String warningProperties;
 	private boolean adapterUseLog = false;
 	private boolean adapterUseArgFile = false;
 
@@ -96,6 +97,17 @@ public class JavacTask implements ITask {
 			script.println("/>"); //$NON-NLS-1$
 		}
 
+		if (warningProperties != null) {
+			script.printTab();
+			script.print("<compilerarg"); //$NON-NLS-1$
+			script.printAttribute("line", "-properties '" + warningProperties + "'", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			if (compilerAdapter != null && adapterUseArgFile)
+				script.printAttribute("compiler", compilerAdapter, true); //$NON-NLS-1$
+			else
+				script.printAttribute("compiler", IXMLConstants.JDT_COMPILER_ADAPTER, true); //$NON-NLS-1$
+			script.println("/>"); //$NON-NLS-1$
+		}
+
 		if (compileArgsFile != null) {
 			script.printTabs();
 			script.print("<compilerarg"); //$NON-NLS-1$
@@ -269,4 +281,8 @@ public class JavacTask implements ITask {
 		this.adapterUseArgFile = useFile;
 
 	}
+
+	public void setWarningProperties(String warningProperties) {
+		this.warningProperties = warningProperties;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/AbstractBuildScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/AbstractBuildScriptGenerator.java
index 428b497..a865894 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/AbstractBuildScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/AbstractBuildScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build.builder;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/BuildDirector.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/BuildDirector.java
index 29f261d..12b728e 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/BuildDirector.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/BuildDirector.java
@@ -1,12 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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 G&H Softwareentwicklung
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  * GmbH - internationalization implementation (bug 150933)
- ******************************************************************************/
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.builder;
 
 import java.util.*;
@@ -555,21 +556,24 @@ public class BuildDirector extends AbstractBuildScriptGenerator {
 	}
 
 	protected void collectElementToAssemble(BuildTimeFeature featureToCollect) throws CoreException {
-		if (assemblyData == null)
+		if (assemblyData == null || featureToCollect == null)
 			return;
 
-		/* collect binary features */
-		if (featureToCollect != null && featureToCollect.isBinary()) {
+		String binIncludes = getBuildProperties(featureToCollect).getProperty(PROPERTY_BIN_INCLUDES);
+
+		/* collect binary features, and any feature defining bin.includes */
+		if (featureToCollect.isBinary() || (binIncludes != null && binIncludes.length() > 0)) {
 			basicCollectElementToAssemble(featureToCollect);
 			return;
 		}
 
-		// don't collect the generated containers
-		if (featureToCollect.getId().equals(CONTAINER_FEATURE) || featureToCollect.getId().equals(UI_CONTAINER_FEATURE))
+		//at this point, we have a non-binary feature with empty bin includes
+		//when building p2, containers (features without bin.includes) need to be collected, 
+		//with the exception of the pde generated containers.
+		if (!BuildDirector.p2Gathering)
 			return;
 
-		// don't collect if bin.includes is empty, except if we are publishing p2 metadata
-		if (!BuildDirector.p2Gathering && getBuildProperties(featureToCollect).get(PROPERTY_BIN_INCLUDES) == null)
+		if (featureToCollect.getId().equals(CONTAINER_FEATURE) || featureToCollect.getId().equals(UI_CONTAINER_FEATURE))
 			return;
 
 		basicCollectElementToAssemble(featureToCollect);
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java
index a9c0818..da058e9 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.builder;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
index e8d8ac2..353af8a 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/DevClassPathHelper.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/DevClassPathHelper.java
index f46df25..881fd5b 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/DevClassPathHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/DevClassPathHelper.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java
index 5e8969d..3b40dfe 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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
  *     G&H Softwareentwicklung GmbH - internationalization implementation (bug 150933)
  *******************************************************************************/
@@ -400,8 +400,9 @@ public class FeatureBuildScriptGenerator extends AbstractScriptGenerator {
 	 *  
 	 */
 	private void generateRootFilesAndPermissions() throws CoreException {
-		String product = generateProductFiles ? director.getProduct() : null;
-		if (product != null && !BuildDirector.p2Gathering) {
+		boolean generateEclipseProduct = Boolean.valueOf(getBuildProperties().getProperty(IBuildPropertiesConstants.PROPERTY_GENERATE_ECLIPSEPRODUCT)).booleanValue();
+		String product = (generateProductFiles || generateEclipseProduct) ? director.getProduct() : null;
+		if (product != null) {
 			ProductGenerator generator = new ProductGenerator();
 			generator.setProduct(product);
 			generator.setBuildSiteFactory(siteFactory);
@@ -410,7 +411,10 @@ public class FeatureBuildScriptGenerator extends AbstractScriptGenerator {
 			generator.setWorkingDirectory(getWorkingDirectory());
 			generator.setAssemblyInfo(director.getAssemblyData());
 			try {
-				generator.generate();
+				if (!BuildDirector.p2Gathering && generateProductFiles)
+					generator.generate();
+				else if (generateEclipseProduct)
+					generator.generateEclipseProduct();
 			} catch (CoreException e) {
 				//problem with the .product file
 				//TODO Log warning/error
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
index c26a16e..3ec78ac 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
@@ -13,8 +13,7 @@ import java.io.*;
 import java.util.*;
 import java.util.jar.JarFile;
 import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
+import org.eclipse.osgi.service.resolver.*;
 import org.eclipse.osgi.util.ManifestElement;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.build.Constants;
@@ -114,6 +113,7 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator {
 	private String customCallbacksBuildpath = null;
 	private String customCallbacksFailOnError = null;
 	private String customCallbacksInheritAll = null;
+	private String warningProperties = null;
 	// array of extensions of recognized source files (eg- *.java, *.aj, etc)
 	private String[] sourceFileExtensions;
 	//This list is initialized by the generateBuildJarsTarget
@@ -226,6 +226,16 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator {
 				}
 			}
 		}
+
+		String projectWarningSettings = getBuildProperties().getProperty(PROPERTY_PROJECT_SETTINGS);
+		if (Boolean.valueOf(projectWarningSettings).booleanValue()) {
+			//find default prefs file
+			if (new File(model.getLocation(), JDT_CORE_PREFS).exists())
+				warningProperties = JDT_CORE_PREFS;
+		} else if (projectWarningSettings != null && !FALSE.equalsIgnoreCase(projectWarningSettings)) {
+			if (new File(model.getLocation(), projectWarningSettings).exists())
+				warningProperties = projectWarningSettings;
+		}
 	}
 
 	protected static boolean findAndReplaceDot(String[] classpathInfo) {
@@ -558,6 +568,7 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator {
 		script.printAttribute("project", Utils.getPropertyFormat(PROPERTY_PROJECT_LOCATION), true); //$NON-NLS-1$
 		script.printAttribute("binary", Utils.getPropertyFormat(PROPERTY_BINARY_FOLDERS), true); //$NON-NLS-1$
 		script.printAttribute("target", Utils.getPropertyFormat(PROPERTY_TARGET_FOLDER), true); //$NON-NLS-1$
+		script.printAttribute("extramanifests", Utils.getPropertyFormat(PROPERTY_EXTRA_MANIFESTS), true); //$NON-NLS-1$
 		script.println("/>"); //$NON-NLS-1$
 		script.printTargetEnd();
 	}
@@ -591,11 +602,32 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator {
 				}
 			}
 		}
+
 		Map params = new HashMap();
 		params.put(PROPERTY_PROJECT_NAME, Utils.getPropertyFormat(PROPERTY_BUNDLE_ID) + "_" + Utils.getPropertyFormat(PROPERTY_BUNDLE_VERSION)); //$NON-NLS-1$
 		params.put(PROPERTY_PROJECT_LOCATION, Utils.getPropertyFormat(PROPERTY_BASEDIR));
 		params.put(PROPERTY_BINARY_FOLDERS, binaryFolders.toString());
 		params.put(PROPERTY_TARGET_FOLDER, target);
+
+		HostSpecification host = model.getHost();
+		if (host != null && host.getSupplier() != null) {
+			BundleDescription hostBundle = host.getSupplier().getSupplier();
+			String hostLocation = hostBundle.getLocation();
+			String modelLocation = model.getLocation();
+			if (hostLocation != null && modelLocation != null) {
+				IPath location = null;
+				if (new File(hostLocation).isFile()) {
+					location = Utils.makeRelative(new Path(hostLocation), new Path(modelLocation));
+				} else {
+					IPath hostPath = new Path(hostLocation);
+					location = Utils.makeRelative(hostPath.append(JarFile.MANIFEST_NAME), new Path(modelLocation));
+				}
+				if (location.isAbsolute())
+					params.put(PROPERTY_EXTRA_MANIFESTS, location.toString());
+				else
+					params.put(PROPERTY_EXTRA_MANIFESTS, Utils.getPropertyFormat(PROPERTY_BASEDIR) + '/' + location.toString());
+			}
+		}
 		script.printAntCallTask(TARGET_API_GENERATION, true, params);
 	}
 
@@ -1475,6 +1507,8 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator {
 			javac.setCompileArgs(Utils.getPropertyFormat(PROPERTY_JAVAC_COMPILERARG));
 			javac.setSrcdir(sources);
 			javac.setLogExtension(Utils.getPropertyFormat(PROPERTY_LOG_EXTENSION));
+			if (warningProperties != null)
+				javac.setWarningProperties(Utils.getPropertyFormat(PROPERTY_BASEDIR) + '/' + warningProperties);
 			if (generateErrorPropertyAttribute)
 				javac.setErrorProperty(PROPERTY_COMPILATION_ERROR);
 			generateCompilerSettings(javac, entry, classpath);
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/SourceGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/SourceGenerator.java
index 748b811..3694a90 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/SourceGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/SourceGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/CVSFetchTaskFactory.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/CVSFetchTaskFactory.java
index 50a9e13..c95350d 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/CVSFetchTaskFactory.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/CVSFetchTaskFactory.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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 - adaption to new fetch script builder API
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
index 34992eb..2cd5588 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
index d00d68e..a36eb4d 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/messages.properties b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/messages.properties
index e994792..bcf2158 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/messages.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
+# Copyright (c) 2003, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java
index f1a6b09..0e1d2a6 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageConfigScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageConfigScriptGenerator.java
index 7005f23..0ffaef8 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageConfigScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageConfigScriptGenerator.java
@@ -1,18 +1,17 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.packager;
 
 import java.io.*;
-import java.util.ArrayList;
-import java.util.Properties;
+import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.service.resolver.BundleDescription;
 import org.eclipse.osgi.util.NLS;
@@ -25,6 +24,20 @@ import org.eclipse.pde.internal.build.site.BuildTimeFeature;
 public class PackageConfigScriptGenerator extends AssembleConfigScriptGenerator {
 
 	private Properties packagingProperties;
+	private Collection archiveRootProviders = Collections.EMPTY_LIST;
+
+	public void initialize(String directoryName, String feature, Config configurationInformation, Collection elementList, Collection featureList, Collection allFeaturesList, Collection rootProviders) throws CoreException {
+		/* package scripts require the root file providers for creating the file archive, but don't want them for other rootfile
+		 * stuff done by the assembly scripts, so keep them separate here */
+		super.initialize(directoryName, feature, configurationInformation, elementList, featureList, allFeaturesList, new ArrayList(0));
+		archiveRootProviders = rootProviders != null ? rootProviders : Collections.EMPTY_LIST;
+	}
+
+	protected Collection getArchiveRootFileProviders() {
+		if (archiveRootProviders.size() > 0)
+			return archiveRootProviders;
+		return super.getArchiveRootFileProviders();
+	}
 
 	private String getFinalName(BundleDescription bundle, String shape) {
 		final String JAR = "jar"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java
index d3d78eb..74e301b 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.packager;
@@ -45,7 +45,7 @@ public class PackageScriptGenerator extends AssembleScriptGenerator {
 	}
 
 	protected Collection[] getConfigInfos(Config aConfig) {
-		return new Collection[] {assemblageInformation.getBinaryPlugins(aConfig), assemblageInformation.getBinaryFeatures(aConfig), assemblageInformation.getFeatures(aConfig), new HashSet(0)};
+		return new Collection[] {assemblageInformation.getBinaryPlugins(aConfig), assemblageInformation.getBinaryFeatures(aConfig), assemblageInformation.getFeatures(aConfig), BuildDirector.p2Gathering ? assemblageInformation.getRootFileProviders(aConfig) : new HashSet(0)};
 	}
 
 	protected void generateP2ConfigFileTargetCall() {
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java
index bd1a736..3b6e885 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build.packager;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/FeatureRootAdvice.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/FeatureRootAdvice.java
index 03a51db..7a89675 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/FeatureRootAdvice.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/FeatureRootAdvice.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherBundleAction.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherBundleAction.java
index fc10970..f56bd55 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherBundleAction.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherBundleAction.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherFeatureAction.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherFeatureAction.java
index 4b36539..08a3ae0 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherFeatureAction.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/GatherFeatureAction.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher;
 
 import java.io.File;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/AssembledConfigAdvice.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/AssembledConfigAdvice.java
index b5ee6ad..a8cda03 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/AssembledConfigAdvice.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/AssembledConfigAdvice.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher.compatibility;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/GeneratorApplication.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/GeneratorApplication.java
index ebf89da..d6965ff 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/GeneratorApplication.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/GeneratorApplication.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher.compatibility;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/IncrementalGenerator.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/IncrementalGenerator.java
index bd5159b..f6035cf 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/IncrementalGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/IncrementalGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileParentAction.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileParentAction.java
index 086cb79..0434fd3 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileParentAction.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileParentAction.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher.compatibility;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileTouchpointAdvice.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileTouchpointAdvice.java
index 650e5b2..b5e2687 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileTouchpointAdvice.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/publisher/compatibility/RootFileTouchpointAdvice.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher.compatibility;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java
index abb9dd1..5af68c2 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSiteContentProvider.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSiteContentProvider.java
index 5e50fb7..db66f1e 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSiteContentProvider.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSiteContentProvider.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *      IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.site;
@@ -64,9 +64,27 @@ public class BuildTimeSiteContentProvider implements IPDEBuildConstants {
 			} else if (new File(location[i], JarFile.MANIFEST_NAME).exists() || new File(location[i], Constants.PLUGIN_FILENAME_DESCRIPTOR).exists() || new File(location[i], Constants.FRAGMENT_FILENAME_DESCRIPTOR).exists()) {
 				collectedElements.add(location[i]);
 			} else if (location[i].isDirectory()) {
-				collectedElements.addAll(Arrays.asList(location[i].listFiles()));
-			} else if (location[i].isFile() && location[i].getName().endsWith(".jar")) //$NON-NLS-1$
+				//at this point Manifest, plugin.xml, feature.xml and fragment.xml don't exist here
+				//consider a project with "flexible root"
+				if (new File(location[i], PDE_CORE_PREFS).exists()) {
+					try {
+						Properties properties = AbstractScriptGenerator.readProperties(location[i].getAbsolutePath(), PDE_CORE_PREFS, IStatus.OK);
+						String root = properties.getProperty(BUNDLE_ROOT_PATH);
+						if (root != null) {
+							File actualRoot = new File(location[i], root);
+							if (actualRoot.exists())
+								collectedElements.add(actualRoot);
+						}
+					} catch (CoreException e) {
+						// nope
+					}
+				} else {
+					//a "workspace"
+					collectedElements.addAll(Arrays.asList(location[i].listFiles()));
+				}
+			} else if (location[i].isFile() && location[i].getName().endsWith(".jar")) {//$NON-NLS-1$
 				collectedElements.add(location[i]);
+			}
 		}
 		return collectedElements;
 	}
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/P2Utils.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/P2Utils.java
index 332fbdd..c0af792 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/P2Utils.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/P2Utils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
index fc48eab..9fbb943 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
@@ -218,8 +218,9 @@ public class PDEState implements IPDEBuildConstants, IBuildPropertiesConstants {
 	public boolean addBundle(File bundleLocation) {
 		Dictionary manifest;
 		manifest = loadManifest(bundleLocation);
-		if (manifest == null)
-			return false;
+		if (manifest == null) {
+			return addFlexibleRoot(bundleLocation);
+		}
 		try {
 			hasQualifier(bundleLocation, manifest);
 		} catch (BundleException e) {
@@ -228,6 +229,21 @@ public class PDEState implements IPDEBuildConstants, IBuildPropertiesConstants {
 		return addBundle(manifest, bundleLocation);
 	}
 
+	private boolean addFlexibleRoot(File bundleLocation) {
+		if (!new File(bundleLocation, PDE_CORE_PREFS).exists())
+			return false;
+
+		try {
+			Properties properties = AbstractScriptGenerator.readProperties(bundleLocation.getAbsolutePath(), PDE_CORE_PREFS, IStatus.OK);
+			String root = properties.getProperty(BUNDLE_ROOT_PATH);
+			if (root != null)
+				return addBundle(new File(bundleLocation, root));
+		} catch (CoreException e) {
+			//ignore
+		}
+		return false;
+	}
+
 	private String updateVersionNumber(Dictionary manifest) {
 		String newVersion = null;
 		String oldVersion = null;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginPathFinder.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginPathFinder.java
index 0b257b1..e7f270b 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginPathFinder.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginPathFinder.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.site;
 
 import java.io.*;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/QualifierReplacer.java b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/QualifierReplacer.java
index ef31cb1..313de83 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/QualifierReplacer.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/QualifierReplacer.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * 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
- ******************************************************************************/
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.site;
 
 import com.ibm.icu.util.Calendar;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
index 8c78c5a..fb1bfae 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.build.generator;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/FeaturesAndBundlesTask.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/FeaturesAndBundlesTask.java
index 8c9986b..5672f53 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/FeaturesAndBundlesTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/FeaturesAndBundlesTask.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher;
 
 import java.io.File;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/GatherFeatureTask.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/GatherFeatureTask.java
index 03b55fd..1f78117 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/GatherFeatureTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/GatherFeatureTask.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.publisher;
 
 import java.io.File;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/BuildScriptGeneratorTask.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/BuildScriptGeneratorTask.java
index 2a35ae5..4ac8159 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/BuildScriptGeneratorTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/BuildScriptGeneratorTask.java
@@ -1,11 +1,13 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of 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
- ******************************************************************************/
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.build.tasks;
 
 import java.io.File;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/Config.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/Config.java
index 85fd2f7..091425f 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/Config.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/Config.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/FeatureGeneratorTask.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/FeatureGeneratorTask.java
index e16bcbe..78ab9e1 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/FeatureGeneratorTask.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/FeatureGeneratorTask.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
@@ -161,4 +161,8 @@ public class FeatureGeneratorTask extends Task {
 		if (nested != null && !nested.startsWith(ANT_PREFIX))
 			generator.setNestedInclusions(nested);
 	}
+
+	public void setFilterP2Base(boolean value) {
+		generator.setFilterP2Base(value);
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/GenericVersionReplacer.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/GenericVersionReplacer.java
index 146aab1..4a6bf7f 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/GenericVersionReplacer.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/GenericVersionReplacer.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of 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.pde.internal.build.tasks;
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/ManifestModifier.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/ManifestModifier.java
index 5764d53..307f783 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/ManifestModifier.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/ManifestModifier.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/SimpleBuildLogger.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/SimpleBuildLogger.java
index 67ed6c9..be6d9e6 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/SimpleBuildLogger.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/SimpleBuildLogger.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of 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
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/TaskMessages.java b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/TaskMessages.java
index f3045cd..55716cb 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/TaskMessages.java
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/TaskMessages.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/messages.properties b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/messages.properties
index 6ecd5eb..158b9a7 100644
--- a/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/messages.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2005, 2009 IBM Corporation and others.
+# Copyright (c) 2005, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.build/templates/headless-build/build.properties b/eclipse/plugins/org.eclipse.pde.build/templates/headless-build/build.properties
index 1404821..45a1813 100644
--- a/eclipse/plugins/org.eclipse.pde.build/templates/headless-build/build.properties
+++ b/eclipse/plugins/org.eclipse.pde.build/templates/headless-build/build.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.core/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.pde.core/META-INF/MANIFEST.MF
index 290f9d9..fe0250e 100644
--- a/eclipse/plugins/org.eclipse.pde.core/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.pde.core/META-INF/MANIFEST.MF
@@ -13,14 +13,14 @@ Export-Package:
  org.eclipse.pde.core.project,
  org.eclipse.pde.internal.core;x-friends:="org.eclipse.pde.ui,org.eclipse.pde.runtime,org.eclipse.pde.launching",
  org.eclipse.pde.internal.core.build;x-friends:="org.eclipse.pde.ui",
- org.eclipse.pde.internal.core.builders;x-friends:="org.eclipse.pde.ui",
+ org.eclipse.pde.internal.core.builders;x-friends:="org.eclipse.pde.ui,org.eclipse.pde.launching",
  org.eclipse.pde.internal.core.bundle;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.content;x-internal:=true,
  org.eclipse.pde.internal.core.converter;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.exports;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.feature;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.ibundle;x-friends:="org.eclipse.pde.ui",
- org.eclipse.pde.internal.core.ifeature;x-friends:="org.eclipse.pde.ui",
+ org.eclipse.pde.internal.core.ifeature;x-friends:="org.eclipse.pde.ui,org.eclipse.pde.launching",
  org.eclipse.pde.internal.core.importing;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.importing.provisional;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.iproduct;x-friends:="org.eclipse.pde.ui",
@@ -34,7 +34,7 @@ Export-Package:
  org.eclipse.pde.internal.core.search;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.site;x-friends:="org.eclipse.pde.ui",
  org.eclipse.pde.internal.core.target;x-friends:="org.eclipse.pde.ui",
- org.eclipse.pde.internal.core.target.provisional;x-friends:="org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui",
+ org.eclipse.pde.internal.core.target.provisional;x-friends:="org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui,org.eclipse.pde.launching",
  org.eclipse.pde.internal.core.text;
   x-friends:="org.eclipse.pde.ui,
    org.eclipse.pde.ds.core,
diff --git a/eclipse/plugins/org.eclipse.pde.core/macosx/Info.plist b/eclipse/plugins/org.eclipse.pde.core/macosx/Info.plist
index 79b95d9..f2d4eca 100644
--- a/eclipse/plugins/org.eclipse.pde.core/macosx/Info.plist
+++ b/eclipse/plugins/org.eclipse.pde.core/macosx/Info.plist
@@ -6,7 +6,7 @@
 	<key>CFBundleExecutable</key>
 		<string>eclipse</string>
 	<key>CFBundleGetInfoString</key>
-		<string>Eclipse 3.3 for Mac OS X, Copyright IBM Corp. and others 2002, 2007. All rights reserved.</string>
+		<string>Eclipse 3.6 for Mac OS X, Copyright IBM Corp. and others 2002, 2010. All rights reserved.</string>
 	<key>CFBundleIconFile</key>
 		<string>Eclipse.icns</string>
 	<key>CFBundleIdentifier</key>
@@ -18,11 +18,39 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>3.3</string>
+		<string>3.6</string>
 	<key>CFBundleSignature</key>
 		<string>????</string>
 	<key>CFBundleVersion</key>
-		<string>3.3</string>
+		<string>3.6</string>
+	<key>CFBundleLocalizations</key>
+		<array>
+			<string>ar</string>
+			<string>cs</string>
+			<string>da</string>
+			<string>el</string>
+			<string>en</string>
+			<string>es</string>
+			<string>de</string>
+			<string>fi</string>
+			<string>fr</string>
+			<string>hu</string>
+			<string>it</string>
+			<string>iw</string>
+			<string>ja</string>
+			<string>ko</string>
+			<string>nl</string>
+			<string>no</string>
+			<string>pl</string>
+			<string>pt_BR</string>
+			<string>pt</string>
+			<string>ru</string>
+			<string>sv</string>
+			<string>tr</string>
+			<string>zh_HK</string>
+			<string>zh_TW</string>
+			<string>zh</string>
+		</array>
 		
 	<key>Eclipse</key>
 		<array>
diff --git a/eclipse/plugins/org.eclipse.pde.core/plugin.properties b/eclipse/plugins/org.eclipse.pde.core/plugin.properties
index 9eb3cef..bd102fd 100644
--- a/eclipse/plugins/org.eclipse.pde.core/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.core/plugin.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2000, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.core/plugin.xml b/eclipse/plugins/org.eclipse.pde.core/plugin.xml
index a7b072d..9819d4b 100644
--- a/eclipse/plugins/org.eclipse.pde.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.core/plugin.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?><!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -335,6 +335,24 @@
          </describer>
       </content-type>
     </extension>
+    <!-- Make sure that the web-tools don't create the document:
+         https://bugs.eclipse.org/bugs/show_bug.cgi?id=307524 -->
+    <extension point="org.eclipse.core.filebuffers.documentCreation">
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.pluginManifest"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.fragmentManifest"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.featureManifest"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.siteManifest"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.productFile"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.targetFile"/>
+      <factory class="org.eclipse.pde.internal.core.content.DefaultDocumentFactory"
+               contentTypeId="org.eclipse.pde.schema"/>
+    </extension>
    <extension
          point="org.eclipse.pde.core.bundleImporters">
       <importer
diff --git a/eclipse/plugins/org.eclipse.pde.core/schema/bundleImporters.exsd b/eclipse/plugins/org.eclipse.pde.core/schema/bundleImporters.exsd
index 97b516f..8b5e9c3 100644
--- a/eclipse/plugins/org.eclipse.pde.core/schema/bundleImporters.exsd
+++ b/eclipse/plugins/org.eclipse.pde.core/schema/bundleImporters.exsd
@@ -8,7 +8,7 @@
       <documentation>
          &lt;strong&gt;EXPERIMENTAL&lt;/strong&gt;. This extension point has been added as part of a work in progress. There is no guarantee that this API will work or that it will remain the same in future releases. Please do not use this API without consulting with the PDE team.
 &lt;p&gt;
-A bundle importer is capable of creating a project in the workspace based on specific entries contained in a bundle manifest. An importer can register for one or more bundle headers, identified by name. By default, a bundle importer is registered for the &apos;Eclipse-SourceReferences&apos; header.
+A bundle importer is capable of creating a project in the workspace based on a bundle manifest. For example, the CVS bundle importer leverages the &apos;Eclipse-SourceReferences&apos; header to import projects from CVS.
 &lt;/p&gt;
       </documentation>
    </annotation>
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleClasspathEntry.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleClasspathEntry.java
index c97962d..1f11a96 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleClasspathEntry.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleClasspathEntry.java
@@ -14,7 +14,8 @@ import org.eclipse.core.runtime.IPath;
 
 /**
  * Specifies the origin of source, class files, and/or archive for an entry
- * on the Bundle-Classpath header.
+ * on the Bundle-Classpath header. Instances of this class can be created
+ * via {@link IBundleProjectService#newBundleClasspathEntry(IPath, IPath, IPath)}.
  * 
  * @since 3.6
  * @noimplement This interface is not intended to be implemented by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java
index e4dcadd..a83c0b2 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java
@@ -22,7 +22,8 @@ import org.osgi.framework.Version;
 
 /**
  * Describes a project representing an OSGi bundle. Used to create or modify
- * artifacts associated with a bundle project.
+ * artifacts associated with a bundle project. A bundle project description can be
+ * created for an {@link IProject} via {@link IBundleProjectService#getDescription(IProject)}.
  * 
  * @since 3.6
  * @noimplement This interface is not intended to be implemented by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IHostDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IHostDescription.java
index acd6813..c849cb0 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IHostDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IHostDescription.java
@@ -13,7 +13,8 @@ package org.eclipse.pde.core.project;
 import org.eclipse.osgi.service.resolver.VersionRange;
 
 /**
- * Describes a fragment host.
+ * Describes a fragment host. Instances of this class can be created
+ * via {@link IBundleProjectService#newHost(String, VersionRange)}.
  * 
  * @since 3.6
  * @noimplement This interface is not intended to be implemented by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageExportDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageExportDescription.java
index 7555ea2..437f233 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageExportDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageExportDescription.java
@@ -13,7 +13,8 @@ package org.eclipse.pde.core.project;
 import org.osgi.framework.Version;
 
 /**
- * Describes a package export.
+ * Describes a package export. Instances of this class can be created
+ * via {@link IBundleProjectService#newPackageExport(String, Version, boolean, String[])}.
  * 
  * @since 3.6
  * @noextend This interface is not intended to be extended by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageImportDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageImportDescription.java
index 6a6bfba..fc66ea2 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageImportDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IPackageImportDescription.java
@@ -13,7 +13,8 @@ package org.eclipse.pde.core.project;
 import org.eclipse.osgi.service.resolver.VersionRange;
 
 /**
- * Describes a package import.
+ * Describes a package import. Instances of this class can be created
+ * via {@link IBundleProjectService#newPackageImport(String, VersionRange, boolean)}.
  * 
  * @since 3.6
  * @noimplement This interface is not intended to be implemented by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IRequiredBundleDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IRequiredBundleDescription.java
index 1c43b18..815549a 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IRequiredBundleDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IRequiredBundleDescription.java
@@ -13,7 +13,8 @@ package org.eclipse.pde.core.project;
 import org.eclipse.osgi.service.resolver.VersionRange;
 
 /**
- * Describes a required bundle.
+ * Describes a required bundle. Instances of this class can be created
+ * via {@link IBundleProjectService#newRequiredBundle(String, VersionRange, boolean, boolean)}.
  * 
  * @since 3.6
  * @noimplement This interface is not intended to be implemented by clients.
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
index f2364db..3607161 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core;
@@ -14,6 +14,7 @@ import java.util.*;
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.service.resolver.*;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
 
 public class BundleValidationOperation implements IWorkspaceRunnable {
@@ -53,8 +54,16 @@ public class BundleValidationOperation implements IWorkspaceRunnable {
 		Map map = new HashMap();
 		BundleDescription[] bundles = fState.getBundles();
 		for (int i = 0; i < bundles.length; i++) {
-			if (!bundles[i].isResolved()) {
-				map.put(bundles[i], fState.getResolverErrors(bundles[i]));
+			BundleDescription desc = bundles[i];
+			if (!desc.isResolved()) {
+				map.put(desc, fState.getResolverErrors(desc));
+			} else if (desc.isSingleton()) {
+				BundleDescription[] dups = fState.getBundles(desc.getSymbolicName());
+				if (dups.length > 1) {
+					// more than 1 singleton present
+					IStatus errorStatus = new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(PDECoreMessages.BundleValidationOperation_multiple_singletons, new String[] {Integer.toString(dups.length), desc.getSymbolicName()}));
+					map.put(desc, new Object[] {errorStatus});
+				}
 			}
 		}
 		return map;
@@ -65,7 +74,22 @@ public class BundleValidationOperation implements IWorkspaceRunnable {
 	}
 
 	public boolean hasErrors() {
-		return fState.getHighestBundleId() > -1 && fState.getBundles().length > fState.getResolvedBundles().length;
+		if (fState.getHighestBundleId() > -1) {
+			BundleDescription[] bundles = fState.getBundles();
+			for (int i = 0; i < bundles.length; i++) {
+				BundleDescription desc = bundles[i];
+				if (!desc.isResolved()) {
+					return true;
+				} else if (desc.isSingleton()) {
+					BundleDescription[] dups = fState.getBundles(desc.getSymbolicName());
+					if (dups.length > 1) {
+						// more than one singleton
+						return true;
+					}
+				}
+			}
+		}
+		return false;
 	}
 
 }
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java
index d56b5d5..0658ee7 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java
@@ -262,6 +262,20 @@ public class ClasspathHelper {
 					else {
 						if (libraries.length == 0) {
 							IPath[] paths = findLibrary(DOT, project, classpathMap, build);
+							if (paths.length == 0) {
+								// No mapping for default library, if there are source folders just add their corresponding output folders to the build path.
+								// This likely indicates an error in the build.properties, but to be friendly we should add the output folders so running/debugging
+								// works (see bug 237025)
+								if (!classpathMap.isEmpty()) {
+									Iterator iterator = classpathMap.values().iterator();
+									List collect = new ArrayList();
+									while (iterator.hasNext()) {
+										ArrayList list = (ArrayList) iterator.next();
+										collect.addAll(list);
+									}
+									paths = (IPath[]) collect.toArray(new IPath[collect.size()]);
+								}
+							}
 							for (int j = 0; j < paths.length; j++)
 								addPath(result, project, paths[j]);
 						} else {
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalModelManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalModelManager.java
index 92375ce..8bf48cc 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalModelManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalModelManager.java
@@ -11,10 +11,10 @@
 package org.eclipse.pde.internal.core;
 
 import java.io.File;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.*;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.pde.core.plugin.IPluginBase;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.internal.core.target.AbstractTargetHandle;
 import org.eclipse.pde.internal.core.target.provisional.NameVersionDescriptor;
@@ -63,38 +63,6 @@ public class ExternalModelManager extends AbstractModelManager {
 				}
 			}
 		}
-		// enable pooled bundles properly (only if part of the profile)
-		String pooled = pref.getString(ICoreConstants.POOLED_BUNDLES);
-		if (pooled != null && pooled.trim().length() > 0) {
-			if (ICoreConstants.VALUE_SAVED_NONE.equals(pooled)) {
-				// all pooled bundles are disabled
-				for (int i = 0; i < fModels.length; i++) {
-					if (AbstractTargetHandle.BUNDLE_POOL.isPrefixOf(new Path(fModels[i].getInstallLocation()))) {
-						fModels[i].setEnabled(false);
-					}
-				}
-			} else {
-				StringTokenizer tokenizer = new StringTokenizer(pooled, ","); //$NON-NLS-1$
-				Set enabled = new HashSet();
-				while (tokenizer.hasMoreTokens()) {
-					String id = tokenizer.nextToken();
-					if (tokenizer.hasMoreTokens()) {
-						String ver = tokenizer.nextToken();
-						if (ICoreConstants.VALUE_SAVED_NONE.equals(ver)) { // indicates null version
-							ver = null;
-						}
-						enabled.add(new NameVersionDescriptor(id, ver));
-					}
-				}
-				for (int i = 0; i < fModels.length; i++) {
-					if (AbstractTargetHandle.BUNDLE_POOL.isPrefixOf(new Path(fModels[i].getInstallLocation()))) {
-						IPluginBase base = fModels[i].getPluginBase();
-						NameVersionDescriptor desc = new NameVersionDescriptor(base.getId(), base.getVersion());
-						fModels[i].setEnabled(enabled.contains(desc));
-					}
-				}
-			}
-		}
 	}
 
 	public void setModels(IPluginModelBase[] models) {
@@ -111,24 +79,55 @@ public class ExternalModelManager extends AbstractModelManager {
 		if (tokenizer.countTokens() == 0)
 			return base;
 
-		File[] extraLocations = new File[tokenizer.countTokens()];
-		for (int i = 0; i < extraLocations.length; i++) {
+		List extraLocations = new ArrayList(tokenizer.countTokens());
+		boolean addPool = false;
+		while (tokenizer.hasMoreTokens()) {
 			String location = tokenizer.nextToken();
-			File dir = new File(location, "plugins"); //$NON-NLS-1$
-			if (!dir.exists() || !dir.isDirectory())
-				dir = new File(location);
-			extraLocations[i] = dir;
+			if (AbstractTargetHandle.BUNDLE_POOL.isPrefixOf(new Path(location))) {
+				addPool = true;
+			} else {
+				File dir = new File(location, "plugins"); //$NON-NLS-1$
+				if (!dir.exists() || !dir.isDirectory())
+					dir = new File(location);
+				extraLocations.add(dir);
+			}
 		}
-		URL[] additional = PluginPathFinder.scanLocations(extraLocations);
+		URL[] additional = PluginPathFinder.scanLocations((File[]) extraLocations.toArray(new File[extraLocations.size()]));
+		URL[] result = append(base, additional);
 
-		if (additional.length == 0)
-			return base;
+		// add pooled bundles (only if part of the profile)
+		if (addPool) {
+			String pooled = pref.getString(ICoreConstants.POOLED_URLS);
+			if (pooled != null && pooled.trim().length() > 0) {
+				if (ICoreConstants.VALUE_SAVED_NONE.equals(pooled)) {
+					// none
+				} else {
+					tokenizer = new StringTokenizer(pooled, ","); //$NON-NLS-1$
+					List urls = new ArrayList(tokenizer.countTokens());
+					while (tokenizer.hasMoreTokens()) {
+						String fileName = tokenizer.nextToken();
+						try {
+							urls.add(AbstractTargetHandle.BUNDLE_POOL.append("plugins").append(fileName).toFile().toURL()); //$NON-NLS-1$
+						} catch (MalformedURLException e) {
+							PDECore.log(e);
+						}
+					}
+					additional = (URL[]) urls.toArray(new URL[urls.size()]);
+					result = append(result, additional);
+				}
+			}
+		}
 
+		return result;
+	}
+
+	private URL[] append(URL[] base, URL[] additional) {
+		if (additional.length == 0) {
+			return base;
+		}
 		URL[] result = new URL[base.length + additional.length];
 		System.arraycopy(base, 0, result, 0, base.length);
 		System.arraycopy(additional, 0, result, base.length, additional.length);
-
 		return result;
 	}
-
 }
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/FeatureModelManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/FeatureModelManager.java
index 7c5e27f..1f9b3bb 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/FeatureModelManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/FeatureModelManager.java
@@ -110,11 +110,22 @@ public class FeatureModelManager {
 		return (IFeatureModel[]) valid.toArray(new IFeatureModel[valid.size()]);
 	}
 
+	/**
+	 * @return all models in the workspace model manager
+	 */
 	public IFeatureModel[] getWorkspaceModels() {
 		init();
 		return fWorkspaceManager.getFeatureModels();
 	}
 
+	/**
+	 * @return all models in the external model manager
+	 */
+	public IFeatureModel[] getExternalModels() {
+		init();
+		return fExternalManager.getModels();
+	}
+
 	public IFeatureModel getFeatureModel(IProject project) {
 		init();
 		return fWorkspaceManager.getFeatureModel(project);
@@ -218,10 +229,6 @@ public class FeatureModelManager {
 		}
 	}
 
-	/**
-	 * @param e
-	 * @return
-	 */
 	private synchronized IFeatureModelDelta processEvent(IModelProviderEvent e) {
 		FeatureModelDelta delta = new FeatureModelDelta();
 		/*
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
index 763b88a..09c4379 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
@@ -37,8 +37,20 @@ public interface ICoreConstants {
 	String GROUP_PLUGINS_VIEW = "group_plugins"; //$NON-NLS-1$
 	String ADDITIONAL_LOCATIONS = "additional_locations"; //$NON-NLS-1$
 	String TARGET_PLATFORM_REALIZATION = "target_platform_realization"; //$NON-NLS-1$
+
+	/**
+	 * This preference was only used during 3.5, it has been replaced in 3.6
+	 * with POOLED_URLS.
+	 * 
+	 * @deprecated
+	 */
 	String POOLED_BUNDLES = "pooled_bundles"; //$NON-NLS-1$
 	/**
+	 * Comma separated list of bundle URLs used from the bundle pool.
+	 * @since 3.6
+	 */
+	String POOLED_URLS = "pooled_urls"; //$NON-NLS-1$
+	/**
 	 * List of feature ids and versions that are available in the target platform.  Features
 	 * are comma separated, with each entry taking the form of [id]@[version]
 	 * 
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/JavadocLocationManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/JavadocLocationManager.java
index 43821ad..9d2529f 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/JavadocLocationManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/JavadocLocationManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -103,8 +103,12 @@ public class JavadocLocationManager {
 						}
 					}
 					buffer.append(path);
-					if (archive)
+					if (archive) {
 						buffer.insert(0, "jar:"); //$NON-NLS-1$
+						if (buffer.indexOf("!") == -1) { //$NON-NLS-1$
+							buffer.append("!/"); //$NON-NLS-1$
+						}
+					}
 					processPlugins(buffer.toString(), children[i].getChildren());
 				}
 			}
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
index 4e924ff..46925f8 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEAuxiliaryState.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEAuxiliaryState.java
index 4e56ead..2d15ff5 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEAuxiliaryState.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEAuxiliaryState.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECore.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECore.java
index b1ee007..c8c2ea9 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECore.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECore.java
@@ -14,8 +14,7 @@ import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
 import java.util.Hashtable;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.jdt.launching.JavaRuntime;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
@@ -237,11 +236,6 @@ public class PDECore extends Plugin {
 	public SearchablePluginsManager getSearchablePluginsManager() {
 		if (fSearchablePluginsManager == null) {
 			fSearchablePluginsManager = new SearchablePluginsManager();
-			try {
-				getWorkspace().addSaveParticipant(inst.getBundle().getSymbolicName(), fSearchablePluginsManager);
-			} catch (CoreException e) {
-				log(e);
-			}
 		}
 		return fSearchablePluginsManager;
 	}
@@ -263,6 +257,38 @@ public class PDECore extends Plugin {
 
 		fTargetPlatformService = context.registerService(ITargetPlatformService.class.getName(), TargetPlatformService.getDefault(), new Hashtable());
 		fBundleProjectService = context.registerService(IBundleProjectService.class.getName(), BundleProjectService.getDefault(), new Hashtable());
+
+		// use save participant to clean orphaned profiles.
+		ResourcesPlugin.getWorkspace().addSaveParticipant(PLUGIN_ID, new ISaveParticipant() {
+			public void saving(ISaveContext saveContext) throws CoreException {
+				ITargetPlatformService tps = (ITargetPlatformService) acquireService(ITargetPlatformService.class.getName());
+				if (tps instanceof TargetPlatformService) {
+					((TargetPlatformService) tps).cleanOrphanedTargetDefinitionProfiles();
+				}
+				if (fSearchablePluginsManager != null) {
+					fSearchablePluginsManager.saving(saveContext);
+				}
+			}
+
+			public void rollback(ISaveContext saveContext) {
+				if (fSearchablePluginsManager != null) {
+					fSearchablePluginsManager.rollback(saveContext);
+				}
+			}
+
+			public void prepareToSave(ISaveContext saveContext) throws CoreException {
+				if (fSearchablePluginsManager != null) {
+					fSearchablePluginsManager.prepareToSave(saveContext);
+				}
+			}
+
+			public void doneSaving(ISaveContext saveContext) {
+				if (fSearchablePluginsManager != null) {
+					fSearchablePluginsManager.doneSaving(saveContext);
+				}
+			}
+		});
+
 	}
 
 	public BundleContext getBundleContext() {
@@ -271,11 +297,6 @@ public class PDECore extends Plugin {
 
 	public void stop(BundleContext context) throws CoreException {
 
-		ITargetPlatformService tps = (ITargetPlatformService) acquireService(ITargetPlatformService.class.getName());
-		if (tps instanceof TargetPlatformService) {
-			((TargetPlatformService) tps).cleanOrphanedTargetDefinitionProfiles();
-		}
-
 		if (fPreferenceManager != null) {
 			fPreferenceManager.savePluginPreferences();
 		}
@@ -293,7 +314,6 @@ public class PDECore extends Plugin {
 			fTargetProfileManager = null;
 		}
 		if (fSearchablePluginsManager != null) {
-			getWorkspace().removeSaveParticipant(inst.getBundle().getSymbolicName());
 			fSearchablePluginsManager.shutdown();
 			fSearchablePluginsManager = null;
 		}
@@ -318,6 +338,8 @@ public class PDECore extends Plugin {
 			fBundleProjectService.unregister();
 			fBundleProjectService = null;
 		}
+
+		ResourcesPlugin.getWorkspace().removeSaveParticipant(PLUGIN_ID);
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java
index d591b74..2f649e5 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -220,12 +220,24 @@ public class PDECoreMessages extends NLS {
 
 	public static String BundleManifestSourceLocationManager_problemProcessBundleManifestHeaderAttributeMissing;
 
+	public static String BundleValidationOperation_multiple_singletons;
+
 	public static String ManifestConsistencyChecker_buildPropertiesSubtask;
 
 	public static String BuildErrorReporter_missingEntry;
 	public static String BuildErrorReporter_missingFolder;
 	public static String BuildErrorReporter_emptyEntry;
 	public static String BuildErrorReporter_binIncludesMissing;
+	public static String BuildErrorReporter_buildEntryInvalidWhenNoProjectSettings;
+
+	public static String BuildErrorReporter_buildEntryMissingProjectSpecificSettings;
+
+	public static String BuildErrorReporter_buildEntryMissingValidPath;
+
+	public static String BuildErrorReporter_buildEntryMissingValidRelativePath;
+
+	public static String BuildErrorReporter_BuildEntryNotRequiredMatchesDefault;
+
 	public static String BuildErrorReporter_sourceMissing;
 
 	public static String BuildErrorReporter_srcIncludesSourceFolder;
@@ -293,13 +305,28 @@ public class PDECoreMessages extends NLS {
 
 	public static String SearchablePluginsManager_createProjectTaskName;
 
+	public static String SourceEntryErrorReporter_0;
+	public static String SourceEntryErrorReporter_1;
+	public static String SourceEntryErrorReporter_10;
+	public static String SourceEntryErrorReporter_2;
+	public static String SourceEntryErrorReporter_3;
+	public static String SourceEntryErrorReporter_4;
+	public static String SourceEntryErrorReporter_5;
+	public static String SourceEntryErrorReporter_6;
+	public static String SourceEntryErrorReporter_7;
+	public static String SourceEntryErrorReporter_8;
+	public static String SourceEntryErrorReporter_9;
+
 	public static String SourceEntryErrorReporter_DifferentTargetLibrary;
 	public static String SourceEntryErrorReporter_DupeOutputFolder;
 	public static String SourceEntryErrorReporter_DupeSourceFolder;
 	public static String SourceEntryErrorReporter_ExtraOutputFolder;
 	public static String SourceEntryErrorReporter_InvalidOutputFolder;
 	public static String SourceEntryErrorReporter_InvalidSourceFolder;
+	public static String SourceEntryErrorReporter_MissingLibrary;
+
 	public static String SourceEntryErrorReporter_MissingOutputEntry;
+	public static String SourceEntryErrorReporter_MissingOutputLibForClassFolder;
 
 	public static String SourceLocationManager_problemProcessingBundleManifestSourceHeader;
 
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEPreferencesManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEPreferencesManager.java
index 46ca041..7f2a2ff 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEPreferencesManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEPreferencesManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
index 909c782..3dd9c22 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
@@ -54,17 +54,6 @@ public class PluginModelManager implements IModelProviderListener {
 					IJavaProject[] projects = null;
 					IClasspathContainer[] containers = null;
 					synchronized (fProjects) {
-						// exclude any closed/deleted projects since this happens asynchronously
-						ListIterator projectIter = fProjects.listIterator();
-						ListIterator containerIter = fContainers.listIterator();
-						while (projectIter.hasNext()) {
-							IJavaProject jp = (IJavaProject) projectIter.next();
-							containerIter.next(); // advance container pointer as well
-							if (!jp.getProject().isAccessible()) {
-								projectIter.remove(); // remove corresponding entries
-								containerIter.remove();
-							}
-						}
 						projects = (IJavaProject[]) fProjects.toArray(new IJavaProject[fProjects.size()]);
 						containers = (IClasspathContainer[]) fContainers.toArray(new IClasspathContainer[fContainers.size()]);
 						fProjects.clear();
@@ -257,7 +246,7 @@ public class PluginModelManager implements IModelProviderListener {
 			}
 			// trigger a classpath update for all workspace plug-ins affected by the
 			// processed batch of changes
-			updateAffectedEntries(stateDelta);
+			updateAffectedEntries(stateDelta, e);
 			fireStateDelta(stateDelta);
 
 		}
@@ -272,8 +261,9 @@ public class PluginModelManager implements IModelProviderListener {
 	 * 
 	 * @param delta  a state delta containing a list of bundles affected by the processed
 	 * 				changes
+	 * @param event event that triggered this update
 	 */
-	private void updateAffectedEntries(StateDelta delta) {
+	private void updateAffectedEntries(StateDelta delta, IModelProviderEvent event) {
 		Map map = new HashMap();
 		if (delta == null) {
 			// if the delta is null, then the entire target changed.
@@ -339,8 +329,19 @@ public class PluginModelManager implements IModelProviderListener {
 				containers[index] = (IClasspathContainer) entry.getValue();
 				index++;
 			}
-			fUpdateJob.add(projects, containers);
-			fUpdateJob.schedule();
+			int types = event.getEventTypes();
+			if (types == IModelProviderEvent.MODELS_CHANGED) {
+				// when a model (manifest) is changed schedule a job to avoid blocking
+				// the UI thread (@see bug 276135)
+				fUpdateJob.add(projects, containers);
+				fUpdateJob.schedule();
+			} else {
+				// else update synchronously
+				try {
+					JavaCore.setClasspathContainer(PDECore.REQUIRED_PLUGINS_CONTAINER_PATH, projects, containers, null);
+				} catch (JavaModelException e) {
+				}
+			}
 		}
 	}
 
@@ -525,6 +526,23 @@ public class PluginModelManager implements IModelProviderListener {
 
 		// Create default target platform definition if required
 		initDefaultTargetPlatformDefinition();
+
+		// re-load the target if the corrupt POOLED_BUNDLES preference was being used
+		PDEPreferencesManager pref = PDECore.getDefault().getPreferencesManager();
+		String pooled = pref.getString(ICoreConstants.POOLED_BUNDLES);
+		if (pooled != null && pooled.trim().length() > 0) {
+			if (!ICoreConstants.VALUE_SAVED_NONE.equals(pooled.trim())) {
+				ITargetPlatformService service = (ITargetPlatformService) PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
+				if (service != null) {
+					try {
+						ITargetHandle handle = service.getWorkspaceTargetHandle();
+						LoadTargetDefinitionJob.load(handle.getTargetDefinition());
+					} catch (CoreException e) {
+						PDECore.log(e);
+					}
+				}
+			}
+		}
 	}
 
 	/**
@@ -1064,6 +1082,7 @@ public class PluginModelManager implements IModelProviderListener {
 	 * @param project
 	 */
 	public void bundleRootChanged(IProject project) {
+		fWorkspaceManager.initialize();
 		fWorkspaceManager.removeModel(project);
 		if (fWorkspaceManager.isInterestingProject(project)) {
 			fWorkspaceManager.createModel(project, false);
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
index 8c30752..24f652c 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
@@ -62,6 +62,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
 		prefs.putInt(CompilerFlags.P_UNKNOWN_RESOURCE, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_UNKNOWN_IDENTIFIER, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_NOT_EXTERNALIZED, CompilerFlags.IGNORE);
+
 		prefs.putInt(CompilerFlags.P_BUILD, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_BUILD_MISSING_OUTPUT, CompilerFlags.IGNORE);
 		prefs.putInt(CompilerFlags.P_BUILD_SOURCE_LIBRARY, CompilerFlags.WARNING);
@@ -69,6 +70,8 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
 		prefs.putInt(CompilerFlags.P_BUILD_SRC_INCLUDES, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_BUILD_BIN_INCLUDES, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_BUILD_JAVA_COMPLIANCE, CompilerFlags.WARNING);
+		prefs.putInt(CompilerFlags.P_BUILD_JAVA_COMPILER, CompilerFlags.IGNORE);
+		prefs.putInt(CompilerFlags.P_BUILD_ENCODINGS, CompilerFlags.IGNORE);
 
 		prefs.putInt(CompilerFlags.P_INCOMPATIBLE_ENV, CompilerFlags.WARNING);
 		prefs.putInt(CompilerFlags.P_MISSING_EXPORT_PKGS, CompilerFlags.IGNORE);
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java
index 2a0cec5..946a063 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
index 5edcf06..5212dff 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,6 +37,7 @@ public class TargetPreferenceModifyListener extends PreferenceModifyListener {
 				node.remove(ICoreConstants.NL);
 				node.remove(ICoreConstants.PLATFORM_PATH);
 				node.remove(ICoreConstants.POOLED_BUNDLES);
+				node.remove(ICoreConstants.POOLED_URLS);
 				node.remove(ICoreConstants.PROGRAM_ARGS);
 				node.remove(ICoreConstants.OS);
 				for (int i = 0; i < 4; i++) {
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java
index b404238..0e31467 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java
@@ -20,7 +20,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.jdt.core.*;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
@@ -44,7 +43,7 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 
 	private static final String DEF_SOURCE_ENTRY = PROPERTY_SOURCE_PREFIX + '.';
 	private static final String[] RESERVED_NAMES = new String[] {"meta-inf", "osgi-inf", ICoreConstants.BUILD_FILENAME_DESCRIPTOR, ICoreConstants.PLUGIN_FILENAME_DESCRIPTOR, "plugin.properties"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	private static final String JAVAC_WARNINGS_ENTRY = PROPERTY_JAVAC_WARNINGS_PREFIX + '.';
+
 	private static final String ASSERT_IDENTIFIER = "assertIdentifier"; //$NON-NLS-1$
 	private static final String ENUM_IDENTIFIER = "enumIdentifier"; //$NON-NLS-1$
 
@@ -106,12 +105,14 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 	protected ArrayList fProblemList = new ArrayList();
 	protected int fBuildSeverity;
 	protected int fClasspathSeverity;
-	protected int fJavaComplSeverity;
+	protected int fJavaComplianceSeverity;
+	protected int fJavaCompilerSeverity;
 	protected int fSrcInclSeverity;
 	protected int fBinInclSeverity;
 	protected int fMissingOutputLibSeverity;
 	protected int fSrcLibSeverity;
 	protected int fOututLibSeverity;
+	protected int fEncodingSeverity;
 
 	public BuildErrorReporter(IFile buildFile) {
 		super(buildFile);
@@ -120,9 +121,11 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 		fMissingOutputLibSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_MISSING_OUTPUT);
 		fSrcLibSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_SOURCE_LIBRARY);
 		fOututLibSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_OUTPUT_LIBRARY);
-		fJavaComplSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_JAVA_COMPLIANCE);
+		fJavaComplianceSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_JAVA_COMPLIANCE);
+		fJavaCompilerSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_JAVA_COMPILER);
 		fSrcInclSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_SRC_INCLUDES);
 		fBinInclSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_BIN_INCLUDES);
+		fEncodingSeverity = CompilerFlags.getFlag(fFile.getProject(), CompilerFlags.P_BUILD_ENCODINGS);
 	}
 
 	public void validate(IProgressMonitor monitor) {
@@ -151,7 +154,9 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 		IBuildEntry javacSource = null;
 		IBuildEntry javacTarget = null;
 		IBuildEntry jreCompilationProfile = null;
-		IBuildEntry javacWarnings = null;
+		IBuildEntry javaProjectWarnings = null;
+		ArrayList javacWarnings = new ArrayList();
+		ArrayList javacErrors = new ArrayList();
 		ArrayList sourceEntries = new ArrayList(1);
 		ArrayList sourceEntryKeys = new ArrayList(1);
 		ArrayList outputEntries = new ArrayList(1);
@@ -173,10 +178,14 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 				javacSource = entries[i];
 			else if (name.equals(PROPERTY_JAVAC_TARGET))
 				javacTarget = entries[i];
-			else if (name.equals(JAVAC_WARNINGS_ENTRY))
-				javacWarnings = entries[i];
+			else if (name.equals(PROPERTY_PROJECT_SETTINGS))
+				javaProjectWarnings = entries[i];
 			else if (name.equals(PROPERTY_JRE_COMPILATION_PROFILE))
 				jreCompilationProfile = entries[i];
+			else if (name.startsWith(PROPERTY_JAVAC_WARNINGS_PREFIX))
+				javacWarnings.add(entries[i]);
+			else if (name.startsWith(PROPERTY_JAVAC_ERRORS_PREFIX))
+				javacErrors.add(entries[i]);
 			else if (name.startsWith(PROPERTY_SOURCE_PREFIX))
 				sourceEntries.add(entries[i]);
 			else if (name.startsWith(PROPERTY_OUTPUT_PREFIX))
@@ -214,12 +223,12 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 		validateSourceFoldersInSrcIncludes(srcIncludes);
 
 		try {
-			if (fProject.hasNature(JavaCore.NATURE_ID)) {
-				IJavaProject jp = JavaCore.create(fProject);
+			IJavaProject jp = JavaCore.create(fProject);
+			if (jp.exists()) {
 				IClasspathEntry[] cpes = jp.getRawClasspath();
 				validateMissingLibraries(sourceEntryKeys, cpes);
 				validateSourceEntries(sourceEntries, cpes);
-				SourceEntryErrorReporter srcEntryErrReporter = new SourceEntryErrorReporter(fFile);
+				SourceEntryErrorReporter srcEntryErrReporter = new SourceEntryErrorReporter(fFile, build);
 				srcEntryErrReporter.initialize(sourceEntries, outputEntries, cpes, fProject);
 				srcEntryErrReporter.validate();
 				ArrayList problems = srcEntryErrReporter.getProblemList();
@@ -231,170 +240,267 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 
 			}
 		} catch (JavaModelException e) {
-		} catch (CoreException e) {
 		}
 
 		validateMissingSourceInBinIncludes(binIncludes, sourceEntryKeys, build);
 		validateBinIncludes(binIncludes);
-		try {
-			validateExecutionEnvironment(javacSource, javacTarget, javacWarnings, jreCompilationProfile);
-		} catch (CoreException e) {
-		}
-		//validateDefaultEncoding(sourceEntries, encodingEntries);
+		validateExecutionEnvironment(javacSource, javacTarget, jreCompilationProfile, javacWarnings, javacErrors, getSourceLibraries(sourceEntries));
+		validateJavaCompilerSettings(javaProjectWarnings);
 	}
 
-//	private void validateDefaultEncoding(ArrayList sourceEntries, Map encodingEntries) {
-//		String defaultEncoding = System.getProperty("file.encoding"); //$NON-NLS-1$
-//		for (int i = 0; i < sourceEntries.size(); i++) {
-//			try {
-//				String name = ((IBuildEntry) sourceEntries.get(i)).getName();
-//				String library = name.substring(name.indexOf('.') + 1, name.length());
-//				String encoding = fProject.getDefaultCharset(false);
-//				String encodingId = PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX + library;
-//				String libraryEncoding = (String) encodingEntries.get(encodingId);
-//				if (encoding != null && !defaultEncoding.equalsIgnoreCase(encoding) && libraryEncoding == null) {
-//					prepareError(encodingId, encoding, NLS.bind(PDECoreMessages.BuildErrorReporter_defaultEncodingMissing, new Object[] {defaultEncoding, encoding}), PDEMarkerFactory.B_ADDDITION, PDEMarkerFactory.CAT_OTHER);
-//				}
-//			} catch (CoreException e) {
-//				PDECore.logException(e);
-//			}
-//		}
-//	}
+	/**
+	 * Given a list of source library entries, returns the list of library names.
+	 * 
+	 * @param sourceEntries list of IBuildEntry source entries
+	 * @return list of library names
+	 */
+	private List getSourceLibraries(List sourceEntries) {
+		List libraries = new ArrayList();
+		for (Iterator iterator = sourceEntries.iterator(); iterator.hasNext();) {
+			IBuildEntry sourceEntry = (IBuildEntry) iterator.next();
+			String libName = sourceEntry.getName().substring(PROPERTY_SOURCE_PREFIX.length());
+			libraries.add(libName);
+		}
+		return libraries;
+	}
 
 	/**
-	 * Matches the javacSource, javacTarget, javacWarnings and jre.compilation.prile entries in build.properties with the 
-	 * project specific Java Compiler properties and reports the errors founds.
+	 * Matches the javacSource, javacTarget, javacWarnings, javacErrors and jre.compilation.prile entries in build.properties with the 
+	 * project specific Java Compiler properties and reports the errors found.
 	 * 
 	 * @param javacSourceEntry
 	 * @param javacTargetEntry
-	 * @param javacWarningsEntry
 	 * @param jreCompilationProfileEntry
+	 * @param javacWarningsEntries
+	 * @param javacErrorsEntries 
+	 * @param libraryNames list of library names (javacWarnings/javacErrors require an entry for each source library)
 	 */
-	private void validateExecutionEnvironment(IBuildEntry javacSourceEntry, IBuildEntry javacTargetEntry, IBuildEntry javacWarningsEntry, IBuildEntry jreCompilationProfileEntry) throws CoreException {
+	private void validateExecutionEnvironment(IBuildEntry javacSourceEntry, IBuildEntry javacTargetEntry, IBuildEntry jreCompilationProfileEntry, ArrayList javacWarningsEntries, ArrayList javacErrorsEntries, List libraryNames) {
 		// if there is no source to compile, don't worry about compiler settings
 		IJavaProject project = JavaCore.create(fProject);
-		IClasspathEntry[] classpath = project.getRawClasspath();
-		boolean source = false;
-		for (int i = 0; i < classpath.length; i++) {
-			IClasspathEntry cpe = classpath[i];
-			if (cpe.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-				source = true;
+		if (project.exists()) {
+			IClasspathEntry[] classpath = null;
+			try {
+				classpath = project.getRawClasspath();
+			} catch (JavaModelException e) {
+				PDECore.log(e);
+				return;
 			}
-		}
-		if (!source) {
-			return;
-		}
-
-		ProjectScope projectContext = new ProjectScope(fProject);
-		IEclipsePreferences node = projectContext.getNode(JavaCore.PLUGIN_ID);
-		String projectComplianceLevel = node.get(JavaCore.COMPILER_COMPLIANCE, ""); //$NON-NLS-1$
-
-		if (projectComplianceLevel.length() > 0) { //project has specific properties enabled 
-			IPluginModelBase model = PluginRegistry.findModel(fProject);
-			String[] execEnvs = null;
-			if (model != null) {
-				BundleDescription bundleDesc = model.getBundleDescription();
-				if (bundleDesc != null) {
-					execEnvs = bundleDesc.getExecutionEnvironments();
+			boolean source = false;
+			for (int i = 0; i < classpath.length; i++) {
+				IClasspathEntry cpe = classpath[i];
+				if (cpe.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+					source = true;
 				}
 			}
-
-			if (execEnvs == null || execEnvs.length == 0) {
+			if (!source) {
 				return;
 			}
 
-			//PDE Build uses top most entry to build the plug-in
-			String execEnv = execEnvs[0];
+			String projectComplianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, false);
 
-			String projectSourceCompatibility = node.get(JavaCore.COMPILER_SOURCE, null);
-			String projectClassCompatibility = node.get(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, null);
-			if (projectComplianceLevel.equals(findMatchingEE(projectSourceCompatibility, projectClassCompatibility, false)) && execEnv.equals(findMatchingEE(projectSourceCompatibility, projectClassCompatibility, true))) {
-				return; //The project compliance settings matches the manifest
-			}
+			if (projectComplianceLevel != null) {
 
-			//project compliance does not matches EE
-			String projectJavaCompatibility = findMatchingEE(projectSourceCompatibility, projectClassCompatibility, true);
-			String message = null;
-			if (projectJavaCompatibility != null) {
-				if (jreCompilationProfileEntry == null) {
-					message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JRE_COMPILATION_PROFILE, PDECoreMessages.BuildErrorReporter_CompilercomplianceLevel);
-					prepareError(PROPERTY_JRE_COMPILATION_PROFILE, projectJavaCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
-				} else {
-					if (!projectJavaCompatibility.equalsIgnoreCase(jreCompilationProfileEntry.getTokens()[0])) {
-						message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JRE_COMPILATION_PROFILE, PDECoreMessages.BuildErrorReporter_CompilercomplianceLevel);
-						prepareError(PROPERTY_JRE_COMPILATION_PROFILE, projectJavaCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
+				IPluginModelBase model = PluginRegistry.findModel(fProject);
+				String[] execEnvs = null;
+				if (model != null) {
+					BundleDescription bundleDesc = model.getBundleDescription();
+					if (bundleDesc != null) {
+						execEnvs = bundleDesc.getExecutionEnvironments();
 					}
 				}
-			} else {
-				if (javacSourceEntry == null) {
-					message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_SOURCE, PDECoreMessages.BuildErrorReporter_SourceCompatibility);
-					prepareError(PROPERTY_JAVAC_SOURCE, projectSourceCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
-				} else {
-					if (!projectSourceCompatibility.equalsIgnoreCase(javacSourceEntry.getTokens()[0])) {
-						message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_SOURCE, PDECoreMessages.BuildErrorReporter_SourceCompatibility);
-						prepareError(PROPERTY_JAVAC_SOURCE, projectSourceCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
-					}
+
+				if (execEnvs == null || execEnvs.length == 0) {
+					return;
 				}
-				if (javacTargetEntry == null) {
-					message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_TARGET, PDECoreMessages.BuildErrorReporter_GeneratedClassFilesCompatibility);
-					prepareError(PROPERTY_JAVAC_TARGET, projectClassCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
+
+				//PDE Build uses top most entry to build the plug-in
+				String execEnv = execEnvs[0];
+
+				String projectSourceCompatibility = project.getOption(JavaCore.COMPILER_SOURCE, false);
+				String projectClassCompatibility = project.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, false);
+				if (projectComplianceLevel.equals(findMatchingEE(projectSourceCompatibility, projectClassCompatibility, false)) && execEnv.equals(findMatchingEE(projectSourceCompatibility, projectClassCompatibility, true))) {
+					return; //The project compliance settings matches the BREE
+				}
+
+				Map defaultComplianceOptions = new HashMap();
+				JavaCore.setComplianceOptions(projectComplianceLevel, defaultComplianceOptions);
+
+				//project compliance does not match the BREE
+				String projectJavaCompatibility = findMatchingEE(projectSourceCompatibility, projectClassCompatibility, true);
+				String message = null;
+				if (projectJavaCompatibility != null) {
+					if (jreCompilationProfileEntry == null) {
+						message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JRE_COMPILATION_PROFILE, PDECoreMessages.BuildErrorReporter_CompilercomplianceLevel);
+						prepareError(PROPERTY_JRE_COMPILATION_PROFILE, projectJavaCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+					} else {
+						if (!projectJavaCompatibility.equalsIgnoreCase(jreCompilationProfileEntry.getTokens()[0])) {
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JRE_COMPILATION_PROFILE, PDECoreMessages.BuildErrorReporter_CompilercomplianceLevel);
+							prepareError(PROPERTY_JRE_COMPILATION_PROFILE, projectJavaCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						}
+					}
 				} else {
-					if (!projectClassCompatibility.equalsIgnoreCase(javacTargetEntry.getTokens()[0])) {
-						message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_TARGET, PDECoreMessages.BuildErrorReporter_GeneratedClassFilesCompatibility);
-						prepareError(PROPERTY_JAVAC_TARGET, projectClassCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
+					// Check source level setting
+					if (projectSourceCompatibility.equals(defaultComplianceOptions.get(JavaCore.COMPILER_SOURCE))) {
+						if (javacSourceEntry != null) {
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_BuildEntryNotRequiredMatchesDefault, PROPERTY_JAVAC_SOURCE, PDECoreMessages.BuildErrorReporter_SourceCompatibility);
+							prepareError(PROPERTY_JAVAC_SOURCE, null, message, PDEMarkerFactory.B_REMOVAL, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						}
+					} else {
+						if (javacSourceEntry == null) {
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_SOURCE, PDECoreMessages.BuildErrorReporter_SourceCompatibility);
+							prepareError(PROPERTY_JAVAC_SOURCE, projectSourceCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						} else {
+							if (!projectSourceCompatibility.equalsIgnoreCase(javacSourceEntry.getTokens()[0])) {
+								message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_SOURCE, PDECoreMessages.BuildErrorReporter_SourceCompatibility);
+								prepareError(PROPERTY_JAVAC_SOURCE, projectSourceCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+							}
+						}
+					}
+
+					// Check target level setting
+					if (projectClassCompatibility.equals(defaultComplianceOptions.get(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM))) {
+						if (javacTargetEntry != null) {
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_BuildEntryNotRequiredMatchesDefault, PROPERTY_JAVAC_TARGET, PDECoreMessages.BuildErrorReporter_GeneratedClassFilesCompatibility);
+							prepareError(PROPERTY_JAVAC_TARGET, null, message, PDEMarkerFactory.B_REMOVAL, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						}
+					} else {
+						if (javacTargetEntry == null) {
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_TARGET, PDECoreMessages.BuildErrorReporter_GeneratedClassFilesCompatibility);
+							prepareError(PROPERTY_JAVAC_TARGET, projectClassCompatibility, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						} else {
+							if (!projectClassCompatibility.equalsIgnoreCase(javacTargetEntry.getTokens()[0])) {
+								message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_TARGET, PDECoreMessages.BuildErrorReporter_GeneratedClassFilesCompatibility);
+								prepareError(PROPERTY_JAVAC_TARGET, projectClassCompatibility, message, PDEMarkerFactory.B_REPLACE, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+							}
+						}
 					}
 				}
-			}
 
-			boolean warnForJavacWarnings = message != null || javacSourceEntry != null || javacTargetEntry != null || jreCompilationProfileEntry != null;
-			if (warnForJavacWarnings == false) {
-				return;
+				boolean warnForJavacWarnings = message != null || javacSourceEntry != null || javacTargetEntry != null || jreCompilationProfileEntry != null;
+				if (warnForJavacWarnings == false) {
+					return;
+				}
+
+				checkJavaComplianceSettings(projectComplianceLevel, javacWarningsEntries, javacErrorsEntries, libraryNames);
 			}
+		}
+	}
+
+	/**
+	 * Matches the javacWarnings and javacErrors entries in build.properties with the 
+	 * project specific Java compliance properties and reports the errors found.  Since java
+	 * compiler settings are set on a per project basis, any special javacWarnings/javacErrors
+	 * must be set for each library.
+	 * 
+	 * @param complianceLevel the compliance level to check settings against, used to get default values
+	 * @param javacWarningsEntries list of build entries with the java compiler warnings prefix javacWarnings.
+	 * @param javacErrorsEntries list of build entries with the java compiler errors prefix javacErrors.
+	 * @param libraryNames list of String library names
+	 */
+	private void checkJavaComplianceSettings(String complianceLevel, ArrayList javacWarningsEntries, ArrayList javacErrorsEntries, List libraryNames) {
+		List complianceWarnSettings = new ArrayList(3);
+		List complianceErrorSettings = new ArrayList(3);
+
+		IJavaProject project = JavaCore.create(fProject);
+		if (project.exists()) {
+
+			Map defaultComplianceOptions = new HashMap();
+			JavaCore.setComplianceOptions(complianceLevel, defaultComplianceOptions);
 
 			//look for assertIdentifier and enumIdentifier entries in javacWarnings. If any is present let it be, if not warn.
-			String assertIdentifier = node.get(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, ""); //$NON-NLS-1$
-			String enumIdentifier = node.get(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, ""); //$NON-NLS-1$
-			String assertToken = ""; //$NON-NLS-1$
-			String enumToken = ""; //$NON-NLS-1$
-
-			if (JavaCore.IGNORE.equalsIgnoreCase(assertIdentifier)) {
-				assertToken = '-' + ASSERT_IDENTIFIER;
-			}
-			if (JavaCore.IGNORE.equalsIgnoreCase(enumIdentifier)) {
-				enumToken = '-' + ENUM_IDENTIFIER;
-			}
-			String warningToken = join(assertToken, enumToken);
-			if (javacWarningsEntry == null) {
-				if (warningToken.length() > 0) {
-					message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_WARNINGS_PREFIX, PDECoreMessages.BuildErrorReporter_DisallowIdentifiers);
-					prepareError(JAVAC_WARNINGS_ENTRY, warningToken, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
-				}
-			} else {
-				if (javacWarningsEntry.contains(ASSERT_IDENTIFIER) || javacWarningsEntry.contains('+' + ASSERT_IDENTIFIER) || javacWarningsEntry.contains('-' + ASSERT_IDENTIFIER)) {
-					//assertIdentifier entry already present
-					assertToken = ""; //$NON-NLS-1$
+			String assertIdentifier = project.getOption(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, false);
+			String defaultAssert = (String) defaultComplianceOptions.get(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER);
+			if (assertIdentifier != null && !assertIdentifier.equalsIgnoreCase(defaultAssert)) {
+				if (JavaCore.ERROR.equalsIgnoreCase(assertIdentifier)) {
+					complianceErrorSettings.add(ASSERT_IDENTIFIER);
+				} else if (JavaCore.WARNING.equalsIgnoreCase(assertIdentifier)) {
+					complianceWarnSettings.add(ASSERT_IDENTIFIER);
 				}
-				if (javacWarningsEntry.contains(ENUM_IDENTIFIER) || javacWarningsEntry.contains('+' + ENUM_IDENTIFIER) || javacWarningsEntry.contains('-' + ENUM_IDENTIFIER)) {
-					//enumIdentifier entry already present
-					enumToken = ""; //$NON-NLS-1$
+			}
+
+			String enumIdentifier = project.getOption(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, false);
+			String defaultEnum = (String) defaultComplianceOptions.get(JavaCore.COMPILER_PB_ENUM_IDENTIFIER);
+			if (enumIdentifier != null && !enumIdentifier.equalsIgnoreCase(defaultEnum)) {
+				if (JavaCore.ERROR.equalsIgnoreCase(enumIdentifier)) {
+					complianceErrorSettings.add(ENUM_IDENTIFIER);
+				} else if (JavaCore.WARNING.equalsIgnoreCase(enumIdentifier)) {
+					complianceWarnSettings.add(ENUM_IDENTIFIER);
 				}
-				warningToken = join(assertToken, enumToken);
-				if (warningToken.length() > 0) {
-					message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_WARNINGS_PREFIX, PDECoreMessages.BuildErrorReporter_DisallowIdentifiers);
-					prepareError(JAVAC_WARNINGS_ENTRY, warningToken, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplSeverity, PDEMarkerFactory.CAT_EE);
+			}
+
+			// If a warnings entry is required, make sure there is one for each library with the correct content
+			if (complianceWarnSettings.size() > 0) {
+				for (Iterator iterator = libraryNames.iterator(); iterator.hasNext();) {
+					String libName = (String) iterator.next();
+					IBuildEntry matchingEntry = null;
+					for (Iterator iterator2 = javacWarningsEntries.iterator(); iterator2.hasNext();) {
+						IBuildEntry candidate = (IBuildEntry) iterator2.next();
+						if (candidate.getName().equals(PROPERTY_JAVAC_WARNINGS_PREFIX + libName)) {
+							matchingEntry = candidate;
+							break;
+						}
+					}
+					if (matchingEntry == null) {
+						String missingTokens = ""; //$NON-NLS-1$
+						for (Iterator iterator2 = complianceWarnSettings.iterator(); iterator2.hasNext();) {
+							String currentIdentifier = (String) iterator2.next();
+							missingTokens = join(missingTokens, '-' + currentIdentifier);
+						}
+						String message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_WARNINGS_PREFIX + libName);
+						prepareError(PROPERTY_JAVAC_WARNINGS_PREFIX + libName, missingTokens, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+					} else {
+						String missingTokens = ""; //$NON-NLS-1$
+						for (Iterator iterator2 = complianceWarnSettings.iterator(); iterator2.hasNext();) {
+							String currentIdentifier = (String) iterator2.next();
+							if (!matchingEntry.contains(currentIdentifier) && !matchingEntry.contains('+' + currentIdentifier) && !matchingEntry.contains('-' + currentIdentifier)) {
+								join(missingTokens, '-' + currentIdentifier);
+							}
+						}
+						if (missingTokens.length() > 0) {
+							String message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_WARNINGS_PREFIX + libName);
+							prepareError(PROPERTY_JAVAC_WARNINGS_PREFIX + libName, missingTokens, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						}
+					}
 				}
 			}
-		}
-	}
 
-	private String join(String token1, String token2) {
-		StringBuffer result = new StringBuffer(token1);
-		if (token2.length() > 0) {
-			if (result.length() > 0)
-				result.append(',');
-			result.append(token2);
+			// If a warnings entry is required, make sure there is one for each library with the correct content
+			if (complianceErrorSettings.size() > 0) {
+				for (Iterator iterator = libraryNames.iterator(); iterator.hasNext();) {
+					String libName = (String) iterator.next();
+					IBuildEntry matchingEntry = null;
+					for (Iterator iterator2 = javacErrorsEntries.iterator(); iterator2.hasNext();) {
+						IBuildEntry candidate = (IBuildEntry) iterator2.next();
+						if (candidate.getName().equals(PROPERTY_JAVAC_ERRORS_PREFIX + libName)) {
+							matchingEntry = candidate;
+							break;
+						}
+					}
+					if (matchingEntry == null) {
+						String missingTokens = ""; //$NON-NLS-1$
+						for (Iterator iterator2 = complianceErrorSettings.iterator(); iterator2.hasNext();) {
+							String currentIdentifier = (String) iterator2.next();
+							missingTokens = join(missingTokens, '-' + currentIdentifier);
+						}
+						String message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry, PROPERTY_JAVAC_ERRORS_PREFIX + libName);
+						prepareError(PROPERTY_JAVAC_ERRORS_PREFIX + libName, missingTokens, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+					} else {
+						String missingTokens = ""; //$NON-NLS-1$
+						for (Iterator iterator2 = complianceErrorSettings.iterator(); iterator2.hasNext();) {
+							String currentIdentifier = (String) iterator2.next();
+							if (!matchingEntry.contains(currentIdentifier) && !matchingEntry.contains('+' + currentIdentifier) && !matchingEntry.contains('-' + currentIdentifier)) {
+								missingTokens = join(missingTokens, '-' + currentIdentifier);
+							}
+						}
+						if (missingTokens.length() > 0) {
+							String message = NLS.bind(PDECoreMessages.BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken, PROPERTY_JAVAC_ERRORS_PREFIX + libName);
+							prepareError(PROPERTY_JAVAC_ERRORS_PREFIX + libName, missingTokens, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaComplianceSeverity, PDEMarkerFactory.CAT_EE);
+						}
+					}
+				}
+			}
 		}
-		return result.toString();
 	}
 
 	private String findMatchingEE(String srcCompatibility, String clsCompatibility, boolean ee) {
@@ -560,8 +666,22 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 	private void validateMissingSourceInBinIncludes(IBuildEntry binIncludes, ArrayList sourceEntryKeys, IBuild build) {
 		if (binIncludes == null)
 			return;
+		List pluginLibraryNames = new ArrayList(1);
+		IPluginModelBase pluginModel = PluginRegistry.findModel(fProject);
+		if (pluginModel != null) {
+			IPluginLibrary[] pluginLibraries = pluginModel.getPluginBase().getLibraries();
+			for (int i = 0; i < pluginLibraries.length; i++) {
+				pluginLibraryNames.add(pluginLibraries[i].getName());
+			}
+		}
+		if (!pluginLibraryNames.contains(".")) { //$NON-NLS-1$
+			pluginLibraryNames.add("."); //$NON-NLS-1$)
+		}
 		for (int i = 0; i < sourceEntryKeys.size(); i++) {
 			String key = (String) sourceEntryKeys.get(i);
+			if (!pluginLibraryNames.contains(key)) {
+				return; // do not report error for folders if the library itself does not exists on plug-in classpath
+			}
 			// We don't want to flag source.. = . as in  bug 146042 comment 1
 			if (DEF_SOURCE_ENTRY.equals(key)) {
 				IBuildEntry entry = build.getEntry(DEF_SOURCE_ENTRY);
@@ -597,6 +717,17 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 	}
 
 	private void validateMissingLibraries(ArrayList sourceEntryKeys, IClasspathEntry[] cpes) {
+		boolean srcFolderExists = false;
+		// no need to flag anything if the project contains no source folders.
+		for (int j = 0; j < cpes.length; j++) {
+			if (cpes[j].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+				srcFolderExists = true;
+				break;
+			}
+		}
+		if (!srcFolderExists)
+			return;
+
 		IPluginModelBase model = PluginRegistry.findModel(fProject);
 		if (model == null)
 			return;
@@ -604,12 +735,8 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 			IBundleModel bm = ((IBundlePluginModelBase) model).getBundleModel();
 			IManifestHeader mh = bm.getBundle().getManifestHeader(Constants.BUNDLE_CLASSPATH);
 			if ((mh == null || mh.getValue() == null)) {
-				for (int i = 0; i < cpes.length; i++) {
-					if (cpes[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-						if (!sourceEntryKeys.contains(DEF_SOURCE_ENTRY))
-							prepareError(DEF_SOURCE_ENTRY, null, PDECoreMessages.BuildErrorReporter_sourceMissing, PDEMarkerFactory.NO_RESOLUTION, fSrcInclSeverity, PDEMarkerFactory.CAT_OTHER);
-						break;
-					}
+				if (!sourceEntryKeys.contains(DEF_SOURCE_ENTRY)) {
+					prepareError(DEF_SOURCE_ENTRY, null, PDECoreMessages.BuildErrorReporter_sourceMissing, PDEMarkerFactory.NO_RESOLUTION, fSrcLibSeverity, PDEMarkerFactory.CAT_OTHER);
 				}
 			}
 		}
@@ -617,15 +744,10 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 		for (int i = 0; i < libraries.length; i++) {
 			String libname = libraries[i].getName();
 			if (libname.equals(".")) { //$NON-NLS-1$
-				// no need to flag anything if the project contains no source folders.
-				for (int j = 0; j < cpes.length; j++) {
-					if (cpes[j].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-						if (!sourceEntryKeys.contains(DEF_SOURCE_ENTRY))
-							prepareError(DEF_SOURCE_ENTRY, null, PDECoreMessages.BuildErrorReporter_sourceMissing, PDEMarkerFactory.NO_RESOLUTION, fSrcInclSeverity, PDEMarkerFactory.CAT_OTHER);
-						break;
-					}
+				if (!sourceEntryKeys.contains(DEF_SOURCE_ENTRY)) {
+					prepareError(DEF_SOURCE_ENTRY, null, PDECoreMessages.BuildErrorReporter_sourceMissing, PDEMarkerFactory.NO_RESOLUTION, fSrcLibSeverity, PDEMarkerFactory.CAT_OTHER);
+					continue;
 				}
-				continue;
 			} else if (fProject.findMember(libname) != null) {
 				// non "." library entries that exist in the workspace
 				// don't have to be referenced in the build properties
@@ -702,11 +824,13 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 		List sourceFolderList = new ArrayList(0);
 		try {
 			IJavaProject javaProject = JavaCore.create(fProject);
-			IClasspathEntry[] classPathEntries = javaProject.getResolvedClasspath(true);
+			if (javaProject.exists()) {
+				IClasspathEntry[] classPathEntries = javaProject.getResolvedClasspath(true);
 
-			for (int index = 0; index < classPathEntries.length; index++) {
-				if (classPathEntries[index].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-					sourceFolderList.add(classPathEntries[index].getPath());
+				for (int index = 0; index < classPathEntries.length; index++) {
+					if (classPathEntries[index].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+						sourceFolderList.add(classPathEntries[index].getPath());
+					}
 				}
 			}
 		} catch (JavaModelException e) { //do nothing
@@ -786,6 +910,97 @@ public class BuildErrorReporter extends ErrorReporter implements IBuildPropertie
 
 	}
 
+	/**
+	 * Checks that if the project has java compiler settings that build.properties contains a use project settings
+	 * entry so that the compiler picks up the settings using the .pref file.
+	 * 
+	 * @param useJavaProjectSettings a build entry for using the project's compiler warning preferences file
+	 */
+	private void validateJavaCompilerSettings(IBuildEntry useJavaProjectSettings) {
+		// Check if the project has compiler warnings set
+		IJavaProject project = JavaCore.create(fProject);
+		if (project.exists()) {
+			Map options = project.getOptions(false);
+			// If project specific options are turned on, all options will be stored.  Only need to check if at least one compiler option is set. Currently using the second option on the property page.
+			if (options.containsKey(JavaCore.COMPILER_PB_INDIRECT_STATIC_ACCESS)) {
+				if (useJavaProjectSettings != null) {
+					boolean entryCorrect = false;
+					String[] tokens = useJavaProjectSettings.getTokens();
+					if (tokens != null && tokens.length == 1) {
+						if (Boolean.TRUE.toString().equalsIgnoreCase(tokens[0])) {
+							// True is valid if the bundle root is the default (the project)
+							entryCorrect = fProject.equals(PDEProject.getBundleRoot(fProject));
+						} else {
+							IPath prefFile = null;
+							prefFile = new Path(tokens[0]);
+							if (prefFile.isAbsolute()) {
+								entryCorrect = prefFile.toFile().exists();
+							} else {
+								IContainer root = PDEProject.getBundleRoot(fProject);
+								entryCorrect = root.getFile(prefFile).exists();
+							}
+						}
+					}
+					if (!entryCorrect) {
+						String token = null;
+						String message = null;
+						IContainer root = PDEProject.getBundleRoot(fProject);
+						if (fProject.equals(root)) {
+							// Default project root, just use 'true'
+							token = Boolean.TRUE.toString();
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_buildEntryMissingValidPath, PROPERTY_PROJECT_SETTINGS);
+						} else {
+							// Non default bundle root, make a relative path
+							IPath prefFile = fProject.getFullPath().append(".settings").append(JavaCore.PLUGIN_ID + ".prefs"); //$NON-NLS-1$ //$NON-NLS-2$
+							prefFile = prefFile.makeRelativeTo(root.getFullPath());
+							token = prefFile.toString();
+							message = NLS.bind(PDECoreMessages.BuildErrorReporter_buildEntryMissingValidRelativePath, PROPERTY_PROJECT_SETTINGS);
+						}
+						prepareError(PROPERTY_PROJECT_SETTINGS, token, message, PDEMarkerFactory.B_REPLACE, fJavaCompilerSeverity, PDEMarkerFactory.CAT_EE);
+					}
+				} else {
+					String token = null;
+					IContainer root = PDEProject.getBundleRoot(fProject);
+					if (fProject.equals(root)) {
+						// Default project root, just use 'true'
+						token = Boolean.TRUE.toString();
+					} else {
+						// Non default bundle root, make a relative path
+						IPath prefFile = fProject.getFullPath().append(".settings").append(JavaCore.PLUGIN_ID + ".prefs"); //$NON-NLS-1$ //$NON-NLS-2$
+						prefFile = prefFile.makeRelativeTo(root.getFullPath());
+						token = prefFile.toString();
+					}
+					String message = NLS.bind(PDECoreMessages.BuildErrorReporter_buildEntryMissingProjectSpecificSettings, PROPERTY_PROJECT_SETTINGS);
+					prepareError(PROPERTY_PROJECT_SETTINGS, token, message, PDEMarkerFactory.B_JAVA_ADDDITION, fJavaCompilerSeverity, PDEMarkerFactory.CAT_EE);
+				}
+			} else if (useJavaProjectSettings != null) {
+				String message = NLS.bind(PDECoreMessages.BuildErrorReporter_buildEntryInvalidWhenNoProjectSettings, PROPERTY_PROJECT_SETTINGS);
+				prepareError(PROPERTY_PROJECT_SETTINGS, null, message, PDEMarkerFactory.B_REMOVAL, fJavaCompilerSeverity, PDEMarkerFactory.CAT_EE);
+			}
+		}
+	}
+
+	/**
+	 * Joins the given tokens into a single string with a comma separator.  If either of
+	 * the tokens are null or of length 0, the other string will be returned
+	 * 
+	 * @param token1 first string
+	 * @param token2 second string
+	 * @return concatenated string
+	 */
+	private String join(String token1, String token2) {
+		StringBuffer result = new StringBuffer();
+		if (token1 != null && token1.length() > 0) {
+			result.append(token1);
+		}
+		if (token2 != null && token2.length() > 0) {
+			if (result.length() > 0)
+				result.append(',');
+			result.append(token2);
+		}
+		return result.toString();
+	}
+
 	private BuildModel prepareTextBuildModel(IProgressMonitor monitor) {
 		try {
 			IDocument doc = createDocument(fFile);
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
index 55dcc2a..4e1f9b4 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
@@ -53,7 +53,6 @@ public class BundleErrorReporter extends JarManifestErrorReporter {
 			return;
 
 		validateFragmentHost();
-		validateRequiredHeader(Constants.BUNDLE_NAME);
 		validateBundleVersion();
 		validateRequiredExecutionEnvironment();
 
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
index 6954ac2..2857899 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
@@ -60,6 +60,8 @@ public class CompilerFlags {
 	public static final String P_BUILD_SRC_INCLUDES = "compilers.p.build.src.includes"; //$NON-NLS-1$
 	public static final String P_BUILD_BIN_INCLUDES = "compilers.p.build.bin.includes"; //$NON-NLS-1$
 	public static final String P_BUILD_JAVA_COMPLIANCE = "compilers.p.build.java.compliance"; //$NON-NLS-1$
+	public static final String P_BUILD_JAVA_COMPILER = "compilers.p.build.java.compiler"; //$NON-NLS-1$
+	public static final String P_BUILD_ENCODINGS = "compilers.p.build.encodings"; //$NON-NLS-1$
 	public static final String P_INCOMPATIBLE_ENV = "compilers.incompatible-environment"; //$NON-NLS-1$
 	public static final String P_MISSING_EXPORT_PKGS = "compilers.p.missing-packages"; //$NON-NLS-1$
 	public static final String P_DEPRECATED = "compilers.p.deprecated"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureErrorReporter.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureErrorReporter.java
index 76c9fe6..5882eb1 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureErrorReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureErrorReporter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/SourceEntryErrorReporter.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/SourceEntryErrorReporter.java
index 528ec14..e779e1a 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/SourceEntryErrorReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/SourceEntryErrorReporter.java
@@ -11,18 +11,25 @@
 package org.eclipse.pde.internal.core.builders;
 
 import java.util.*;
+import java.util.Map.Entry;
 import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.*;
 import org.eclipse.jdt.core.*;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.core.build.IBuild;
 import org.eclipse.pde.core.build.IBuildEntry;
+import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.internal.core.PDECore;
 import org.eclipse.pde.internal.core.PDECoreMessages;
+import org.eclipse.pde.internal.core.project.PDEProject;
 
 public class SourceEntryErrorReporter extends BuildErrorReporter {
 
-	public SourceEntryErrorReporter(IFile file) {
+	private static final String DEF_OUTPUT_ENTRY = PROPERTY_OUTPUT_PREFIX + '.';
+
+	public SourceEntryErrorReporter(IFile file, IBuild model) {
 		super(file);
+		fBuild = model;
 	}
 
 	class ProjectFolder {
@@ -131,8 +138,146 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 
 	}
 
+	/**
+	 * Represents a default or custom encoding property for a resource
+	 * within a library.
+	 */
+	class EncodingEntry {
+
+		private String fEncoding;
+		private IResource fResource;
+
+		/**
+		 * Constructs an encoding entry for the given resource.
+		 * 
+		 * @param resource resource
+		 * @param encoding the encoding identifier
+		 */
+		EncodingEntry(IResource resource, String encoding) {
+			fEncoding = encoding;
+			fResource = resource;
+		}
+
+		/**
+		 * Returns the explicit encoding for this entry.
+		 * 
+		 * @return explicit encoding
+		 */
+		public String getEncoding() {
+			return fEncoding;
+		}
+
+		/**
+		 * Returns the resource this encoding is associated with.
+		 * 
+		 * @return associated resource 
+		 */
+		public IResource getResource() {
+			return fResource;
+		}
+
+		/* (non-Javadoc)
+		 * @see java.lang.Object#toString()
+		 */
+		public String toString() {
+			return getValue();
+		}
+
+		/* (non-Javadoc)
+		 * @see java.lang.Object#equals(java.lang.Object)
+		 */
+		public boolean equals(Object obj) {
+			if (obj instanceof EncodingEntry) {
+				EncodingEntry other = (EncodingEntry) obj;
+				return other.fEncoding.equals(fEncoding) && other.fResource.equals(fResource);
+			}
+			return false;
+		}
+
+		/* (non-Javadoc)
+		 * @see java.lang.Object#hashCode()
+		 */
+		public int hashCode() {
+			return fEncoding.hashCode() + fResource.hashCode();
+		}
+
+		/**
+		 * Returns the generated value of this entry for the build.properties file.
+		 * 
+		 * @return value to enter into build.properties
+		 */
+		String getValue() {
+			StringBuffer buf = new StringBuffer();
+			IContainer root = PDEProject.getBundleRoot(fResource.getProject());
+			buf.append(fResource.getFullPath().makeRelativeTo(root.getFullPath()).makeAbsolute());
+			buf.append('[');
+			buf.append(fEncoding);
+			buf.append(']');
+			return buf.toString();
+		}
+
+	}
+
+	/**
+	 * Visits a source folder gathering encodings.
+	 */
+	class Visitor implements IResourceVisitor {
+
+		String[] fLibs = null;
+
+		Visitor(SourceFolder folder) {
+			ArrayList list = folder.getLibs();
+			fLibs = (String[]) list.toArray(new String[list.size()]);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.core.resources.IResourceVisitor#visit(org.eclipse.core.resources.IResource)
+		 */
+		public boolean visit(IResource resource) throws CoreException {
+			String encoding = null;
+			switch (resource.getType()) {
+				case IResource.FOLDER :
+					encoding = ((IFolder) resource).getDefaultCharset(false);
+					break;
+				case IResource.FILE :
+					IFile file = (IFile) resource;
+					// only worry about .java files
+					if (file.getFileExtension() != null && file.getFileExtension().equals("java")) { //$NON-NLS-1$
+						encoding = file.getCharset(false);
+					}
+					break;
+			}
+			if (encoding != null) {
+				EncodingEntry entry = new EncodingEntry(resource, encoding);
+				for (int i = 0; i < fLibs.length; i++) {
+					String lib = fLibs[i];
+					List encodings = (List) fCustomEncodings.get(lib);
+					if (encodings == null) {
+						encodings = new ArrayList();
+						fCustomEncodings.put(lib, encodings);
+					}
+					encodings.add(entry);
+				}
+			}
+			return true;
+		}
+
+	}
+
 	private HashMap fSourceFolderMap = new HashMap(4);
 	private HashMap fOutputFolderMap = new HashMap(4);
+	private IBuild fBuild = null;
+
+	/**
+	 * Maps library name to default encoding for that library (or not present if there is no
+	 * explicit default encoding specified). 
+	 */
+	Map fDefaultLibraryEncodings = new HashMap();
+
+	/**
+	 * Maps library name to custom {@link EncodingEntry}'s for this library.
+	 */
+	Map fCustomEncodings = new HashMap();
 
 	public void initialize(ArrayList sourceEntries, ArrayList outputEntries, IClasspathEntry[] cpes, IProject project) {
 
@@ -144,13 +289,27 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 		} catch (JavaModelException e) {
 		}
 
+		List pluginLibraryNames = new ArrayList(1);
+		IPluginModelBase pluginModel = PluginRegistry.findModel(fProject);
+		if (pluginModel != null) {
+			IPluginLibrary[] pluginLibraries = pluginModel.getPluginBase().getLibraries();
+			for (int i = 0; i < pluginLibraries.length; i++) {
+				pluginLibraryNames.add(pluginLibraries[i].getName());
+			}
+		}
+		if (!pluginLibraryNames.contains(".")) { //$NON-NLS-1$
+			pluginLibraryNames.add("."); //$NON-NLS-1$)
+		}
 		for (int i = 0; i < cpes.length; i++) {
 			if (cpes[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-				IPath sourcePath = cpes[i].getPath().removeFirstSegments(1).addTrailingSeparator();
+				IPath sourcePath = getPath(cpes[i]);
+				if (sourcePath == null)
+					continue;
+
 				IPath outputLocation = cpes[i].getOutputLocation();
 				if (outputLocation == null)
 					outputLocation = defaultOutputLocation;
-				IPath outputPath = outputLocation.removeFirstSegments(1).addTrailingSeparator();
+				IPath outputPath = getPath(outputLocation);
 
 				OutputFolder outputFolder = (OutputFolder) fOutputFolderMap.get(outputPath);
 				if (outputFolder == null) {
@@ -170,20 +329,21 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 				IPackageFragmentRoot[] roots = javaProject.findPackageFragmentRoots(entry);
 				IPath outputPath = null;
 				if (roots.length == 1) { // should only be one entry for a library
-					if (roots[0].getResource() != null) { // in the workspace
-						outputPath = entry.getPath().removeFirstSegments(1).addTrailingSeparator();
-					} else { // external
-						outputPath = entry.getPath();
+					if (!roots[0].isArchive()) {
+						outputPath = getPath(entry);
+						OutputFolder outputFolder = new OutputFolder(outputPath, true);
+						fOutputFolderMap.put(outputPath, outputFolder);
 					}
 				}
-				OutputFolder outputFolder = new OutputFolder(outputPath, true);
-				fOutputFolderMap.put(outputPath, outputFolder);
 			}
 		}
 
 		for (Iterator iterator = sourceEntries.iterator(); iterator.hasNext();) {
 			IBuildEntry sourceEntry = (IBuildEntry) iterator.next();
 			String libName = sourceEntry.getName().substring(PROPERTY_SOURCE_PREFIX.length());
+			if (!pluginLibraryNames.contains(libName)) {
+				prepareError(sourceEntry.getName(), null, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_MissingLibrary, libName), PDEMarkerFactory.B_REMOVAL, fSrcLibSeverity, PDEMarkerFactory.CAT_OTHER);
+			}
 			String[] tokens = sourceEntry.getTokens();
 			for (int i = 0; i < tokens.length; i++) {
 				IPath path = new Path(tokens[i]).addTrailingSeparator();
@@ -200,6 +360,9 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 		for (Iterator iterator = outputEntries.iterator(); iterator.hasNext();) {
 			IBuildEntry outputEntry = (IBuildEntry) iterator.next();
 			String libName = outputEntry.getName().substring(PROPERTY_OUTPUT_PREFIX.length());
+			if (!pluginLibraryNames.contains(libName)) {
+				prepareError(outputEntry.getName(), null, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_MissingLibrary, libName), PDEMarkerFactory.B_REMOVAL, fOututLibSeverity, PDEMarkerFactory.CAT_OTHER);
+			}
 			String[] tokens = outputEntry.getTokens();
 			for (int i = 0; i < tokens.length; i++) {
 				IPath path = new Path(tokens[i]).addTrailingSeparator();
@@ -218,6 +381,23 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 		}
 	}
 
+	private IPath getPath(Object entry) {
+		IPath path = null;
+		if (entry instanceof IClasspathEntry) {
+			IClasspathEntry cpes = (IClasspathEntry) entry;
+			path = cpes.getPath();
+		} else if (entry instanceof IPath) {
+			path = (IPath) entry;
+		}
+		if (path.matchingFirstSegments(fProject.getFullPath()) > 0) {
+			path = path.removeFirstSegments(1);
+		}
+		if (path != null) {
+			return path.addTrailingSeparator();
+		}
+		return null;
+	}
+
 	public void validate() {
 
 		for (Iterator iterator = fOutputFolderMap.keySet().iterator(); iterator.hasNext();) {
@@ -239,6 +419,19 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 							message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_InvalidOutputFolder, outputPath.toString());
 						prepareError(PROPERTY_OUTPUT_PREFIX + libName, outputFolder.getToken(), message, PDEMarkerFactory.B_REMOVAL, fOututLibSeverity, PDEMarkerFactory.CAT_OTHER);
 					}
+				} else {
+					if (outputFolderLibs.size() == 0) {
+						//class folder does not have an output.<library> entry
+						IPluginModelBase model = PluginRegistry.findModel(fProject);
+						IPluginLibrary[] libs = model.getPluginBase().getLibraries();
+						String message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_MissingOutputLibForClassFolder, outputPath.toString());
+						if (libs.length > 0) {
+							prepareError(PROPERTY_OUTPUT_PREFIX, null, message, PDEMarkerFactory.NO_RESOLUTION, fOututLibSeverity, PDEMarkerFactory.CAT_OTHER);
+						} else {
+							prepareError(DEF_OUTPUT_ENTRY, outputPath.toString(), message, PDEMarkerFactory.B_ADDITION, fOututLibSeverity, PDEMarkerFactory.CAT_OTHER);
+						}
+
+					}
 				}
 			} else {
 				String srcFolderLibName = null;
@@ -286,17 +479,45 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 
 		HashMap missingOutputEntryErrors = new HashMap(4);
 		class MissingOutputEntry {
-			public StringBuffer fSsrcFolders = new StringBuffer();
-			public StringBuffer fOutputFolders = new StringBuffer();
+			private List fSrcFolders = new ArrayList(1);
+			private List fOutputFolders = new ArrayList(1);
+
+			public String getOutputList() {
+				return generateList(fOutputFolders);
+			}
+
+			public String getSourceList() {
+				return generateList(fSrcFolders);
+			}
+
+			private String generateList(List strings) {
+				StringBuffer buffer = new StringBuffer();
+				Iterator iterator = strings.iterator();
+				while (iterator.hasNext()) {
+					String next = (String) iterator.next();
+					buffer.append(next);
+					if (iterator.hasNext()) {
+						buffer.append(',');
+						buffer.append(' ');
+					}
+				}
+				return buffer.toString();
+			}
 
-			public String get(StringBuffer field) {
-				if (field.charAt(field.length() - 1) == ',') {
-					field.deleteCharAt(field.length() - 1);
+			public void addSrcFolder(String sourcePath) {
+				if (!fSrcFolders.contains(sourcePath)) {
+					fSrcFolders.add(sourcePath);
+				}
+			}
+
+			public void addOutputFolder(String outputPath) {
+				if (!fOutputFolders.contains(outputPath)) {
+					fOutputFolders.add(outputPath);
 				}
-				return field.toString().trim();
 			}
 		}
 
+		List toValidate = new ArrayList(); // list of source folders to perform encoding validation on
 		for (Iterator iterator = fSourceFolderMap.keySet().iterator(); iterator.hasNext();) {
 			IPath sourcePath = (IPath) iterator.next();
 			SourceFolder sourceFolder = (SourceFolder) fSourceFolderMap.get(sourcePath);
@@ -325,13 +546,9 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 					if (errorEntry == null)
 						errorEntry = new MissingOutputEntry();
 
-					if (errorEntry.fSsrcFolders.indexOf(sourcePath.toString() + ',') < 0) {
-						errorEntry.fSsrcFolders.append(' ' + sourcePath.toString() + ',');
-					}
+					errorEntry.addSrcFolder(sourcePath.toString());
+					errorEntry.addOutputFolder(outputFolder.getToken());
 
-					if (errorEntry.fOutputFolders.indexOf(outputFolder.getToken() + ',') < 0) {
-						errorEntry.fOutputFolders.append(' ' + outputFolder.getToken() + ',');
-					}
 					missingOutputEntryErrors.put(libName, errorEntry);
 				}
 
@@ -339,15 +556,192 @@ public class SourceEntryErrorReporter extends BuildErrorReporter {
 					String message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_DupeSourceFolder, sourcePath.toString(), PROPERTY_SOURCE_PREFIX + sourceFolder.getDupeLibName());
 					prepareError(PROPERTY_SOURCE_PREFIX + sourceFolder.getDupeLibName(), sourceFolder.getToken(), message, PDEMarkerFactory.NO_RESOLUTION, fSrcLibSeverity, PDEMarkerFactory.CAT_OTHER);
 				}
+
+				toValidate.add(sourceFolder);
 			}
 		}
 
 		for (Iterator iter = missingOutputEntryErrors.keySet().iterator(); iter.hasNext();) {
 			String libName = (String) iter.next();
 			MissingOutputEntry errorEntry = (MissingOutputEntry) missingOutputEntryErrors.get(libName);
-			String message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_MissingOutputEntry, errorEntry.get(errorEntry.fSsrcFolders), PROPERTY_OUTPUT_PREFIX + libName);
-			prepareError(PROPERTY_OUTPUT_PREFIX + libName, errorEntry.get(errorEntry.fOutputFolders), message, PDEMarkerFactory.B_ADDITION, fMissingOutputLibSeverity, PDEMarkerFactory.CAT_OTHER);
+			String message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_MissingOutputEntry, errorEntry.getSourceList(), PROPERTY_OUTPUT_PREFIX + libName);
+			prepareError(PROPERTY_OUTPUT_PREFIX + libName, errorEntry.getOutputList(), message, PDEMarkerFactory.B_ADDITION, fMissingOutputLibSeverity, PDEMarkerFactory.CAT_OTHER);
+		}
+
+		// validate workspace encodings with those specified in build.properties
+
+		if (fEncodingSeverity == CompilerFlags.ERROR || fEncodingSeverity == CompilerFlags.WARNING) {
+			// build map of expected encodings
+			Iterator iterator = toValidate.iterator();
+			while (iterator.hasNext()) {
+				SourceFolder sourceFolder = (SourceFolder) iterator.next();
+				IPath sourcePath = sourceFolder.getPath();
+				IContainer container = fProject;
+				if (!sourcePath.isEmpty() && !sourcePath.isRoot()) {
+					container = container.getFolder(sourcePath);
+				}
+				try {
+					ArrayList list = sourceFolder.getLibs();
+					String[] libs = (String[]) list.toArray(new String[list.size()]);
+					String encoding = getExplicitEncoding(container);
+					if (encoding != null) {
+						for (int i = 0; i < libs.length; i++) {
+							fDefaultLibraryEncodings.put(libs[i], encoding);
+						}
+					}
+					container.accept(new Visitor(sourceFolder));
+				} catch (CoreException e) {
+					// Can't validate if unable to retrieve encoding
+					PDECore.log(e);
+				}
+
+			}
+
+			// Compare to encodings specified in build.properties (if any)
+			IBuildEntry[] entries = fBuild.getBuildEntries();
+			for (int i = 0; i < entries.length; i++) {
+				IBuildEntry entry = entries[i];
+				String name = entry.getName();
+				if (name.startsWith(PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX)) {
+					String lib = name.substring(PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX.length());
+					String[] tokens = entry.getTokens();
+					if (tokens.length > 0) {
+						if (tokens.length == 1) {
+							// compare
+							String specified = tokens[0];
+							String expected = (String) fDefaultLibraryEncodings.remove(lib);
+							if (expected != null) {
+								if (!specified.equals(expected)) {
+									prepareError(name, specified, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_0, new String[] {expected, specified, lib}), PDEMarkerFactory.NO_RESOLUTION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+								}
+							} else {
+								// encoding is specified, but workspace does not specify one
+								prepareError(name, null, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_1, new String[] {specified, lib}), PDEMarkerFactory.B_REMOVAL, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+							}
+						} else {
+							// syntax error
+							fDefaultLibraryEncodings.remove(lib);
+							prepareError(name, null, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_2, lib), PDEMarkerFactory.NO_RESOLUTION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+						}
+					}
+				} else if (name.startsWith(PROPERTY_JAVAC_CUSTOM_ENCODINGS_PREFIX)) {
+					IContainer bundleRoot = PDEProject.getBundleRoot(fProject);
+					String lib = name.substring(PROPERTY_JAVAC_CUSTOM_ENCODINGS_PREFIX.length());
+					String[] tokens = entry.getTokens();
+					if (tokens.length > 0) {
+						List encodings = new ArrayList();
+						for (int j = 0; j < tokens.length; j++) {
+							String special = tokens[j];
+							int index = special.indexOf('[');
+							if (index >= 0 && special.endsWith("]")) { //$NON-NLS-1$
+								String path = special.substring(0, index);
+								String encoding = special.substring(index + 1, special.length() - 1);
+								IResource member = bundleRoot.findMember(path);
+								if (member == null) {
+									// error - missing resource
+									String message = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_3, new String[] {encoding, path});
+									prepareError(name, special, message, PDEMarkerFactory.B_REMOVAL, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+								} else {
+									encodings.add(new EncodingEntry(member, encoding));
+								}
+							} else {
+								// syntax error - invalid
+								String message = PDECoreMessages.SourceEntryErrorReporter_4;
+								prepareError(name, special, message, PDEMarkerFactory.NO_RESOLUTION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+							}
+						}
+						// compare with workspace encodings
+						List workspace = (List) fCustomEncodings.remove(lib);
+						if (workspace == null) {
+							prepareError(name, null, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_5, lib), PDEMarkerFactory.B_REMOVAL, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+						} else {
+							Map map = new HashMap();
+							Iterator iter = workspace.iterator();
+							while (iter.hasNext()) {
+								EncodingEntry ee = (EncodingEntry) iter.next();
+								map.put(ee.getResource(), ee.getEncoding());
+							}
+							iter = encodings.iterator();
+							while (iter.hasNext()) {
+								EncodingEntry ee = (EncodingEntry) iter.next();
+								String specified = ee.getEncoding();
+								String expected = (String) map.remove(ee.getResource());
+								if (expected == null) {
+									prepareError(name, ee.getValue(), NLS.bind(PDECoreMessages.SourceEntryErrorReporter_6, new String[] {expected, ee.getResource().getProjectRelativePath().toString()}), PDEMarkerFactory.B_REMOVAL, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+								} else {
+									if (!specified.equals(expected)) {
+										prepareError(name, ee.getValue(), NLS.bind(PDECoreMessages.SourceEntryErrorReporter_7, new String[] {expected, ee.getResource().getProjectRelativePath().toString(), specified}), PDEMarkerFactory.NO_RESOLUTION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+									}
+								}
+							}
+							// anything left in the workspace map?
+							if (!map.isEmpty()) {
+								iter = map.entrySet().iterator();
+								while (iter.hasNext()) {
+									Entry en = (Entry) iter.next();
+									IResource res = (IResource) en.getKey();
+									String expected = (String) en.getValue();
+									EncodingEntry missing = new EncodingEntry(res, expected);
+									String m = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_8, new String[] {expected, res.getProjectRelativePath().toString()});
+									prepareError(name, missing.getValue(), m, PDEMarkerFactory.B_ADDITION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+								}
+							}
+						}
+					}
+
+				}
+			}
+
+			// check for unspecified default encodings
+			Iterator iter = fDefaultLibraryEncodings.entrySet().iterator();
+			while (iter.hasNext()) {
+				Entry entry = (Entry) iter.next();
+				String lib = (String) entry.getKey();
+				String expected = (String) entry.getValue();
+				prepareError(PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX + lib, expected, NLS.bind(PDECoreMessages.SourceEntryErrorReporter_9, new String[] {expected, lib}), PDEMarkerFactory.B_ADDITION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+			}
+
+			// check for unspecified custom encodings
+			iter = fCustomEncodings.entrySet().iterator();
+			while (iter.hasNext()) {
+				Entry entry = (Entry) iter.next();
+				String lib = (String) entry.getKey();
+				List encodings = (List) entry.getValue();
+				Iterator iterator2 = encodings.iterator();
+				while (iterator2.hasNext()) {
+					EncodingEntry encoding = (EncodingEntry) iterator2.next();
+					String m = NLS.bind(PDECoreMessages.SourceEntryErrorReporter_10, new String[] {encoding.getEncoding(), encoding.getResource().getProjectRelativePath().toString()});
+					prepareError(PROPERTY_JAVAC_CUSTOM_ENCODINGS_PREFIX + lib, encoding.getValue(), m, PDEMarkerFactory.B_ADDITION, fEncodingSeverity, PDEMarkerFactory.CAT_OTHER);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Returns any explicit encoding set on the given container or one of its parents
+	 * up to and including its project.
+	 * 
+	 * @param container container
+	 * @return any explicit encoding or <code>null</code> if none
+	 * @throws CoreException
+	 */
+	private String getExplicitEncoding(IContainer container) throws CoreException {
+		String encoding = container.getDefaultCharset(false);
+		if (encoding == null) {
+			IContainer parent = container.getParent();
+			if (parent != null) {
+				switch (parent.getType()) {
+					case IResource.FOLDER :
+						return getExplicitEncoding(parent);
+					case IResource.PROJECT :
+						return getExplicitEncoding(parent);
+					default :
+						// don't consider workspace encoding
+						return null;
+				}
+			}
 		}
+		return encoding;
 	}
 
 	private String join(ProjectFolder[] folders) {
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/content/DefaultDocumentFactory.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/content/DefaultDocumentFactory.java
new file mode 100644
index 0000000..b15618f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/content/DefaultDocumentFactory.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Markus Schorn - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.core.content;
+
+import org.eclipse.core.filebuffers.*;
+import org.eclipse.jface.text.IDocument;
+
+public class DefaultDocumentFactory implements IDocumentFactory {
+
+	/**
+	 * Just ensures, that the default document is created.
+	 * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=307524
+	 */
+	public IDocument createDocument() {
+		return FileBuffers.getTextFileBufferManager().createEmptyDocument(null, LocationKind.LOCATION);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
index c5d4383..9125405 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
@@ -787,7 +787,24 @@ public class FeatureExportOperation extends Job {
 	}
 
 	protected String[] getPaths() {
-		return TargetPlatformHelper.getFeaturePaths();
+		Map map = new HashMap(); // merge workspace and external features using workspace over external
+		FeatureModelManager fmm = PDECore.getDefault().getFeatureModelManager();
+		IFeatureModel[] models = fmm.getExternalModels();
+		for (int i = 0; i < models.length; i++) {
+			map.put(models[i].getFeature().getId(), models[i].getInstallLocation());
+		}
+		// remove anything that we have in the workspace models
+		models = fmm.getWorkspaceModels();
+		String[] locations = new String[models.length];
+		for (int i = 0; i < models.length; i++) {
+			map.remove(models[i].getFeature().getId());
+			locations[i] = models[i].getInstallLocation();
+		}
+		// add all workspace models
+		String[] paths = new String[map.size() + models.length];
+		paths = (String[]) map.values().toArray(paths);
+		System.arraycopy(locations, 0, paths, map.size(), models.length);
+		return paths;
 	}
 
 	protected void cleanup(String[] config, IProgressMonitor monitor) {
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
index 50790c0..4dd7378 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
@@ -191,11 +191,12 @@ public class ProductExportOperation extends FeatureExportOperation {
 			String[] config = configurations[i];
 			File vm = jreInfo != null ? jreInfo.getJVMLocation(config[0]) : null;
 
-			if (config[0].equals("macosx") && vm.getPath().startsWith(MAC_JAVA_FRAMEWORK)) { //$NON-NLS-1$
-				continue;
-			}
-
 			if (vm != null) {
+
+				if (config[0].equals("macosx") && vm.getPath().startsWith(MAC_JAVA_FRAMEWORK)) { //$NON-NLS-1$
+					continue;
+				}
+
 				String rootPrefix = IBuildPropertiesConstants.ROOT_PREFIX + config[0] + "." + config[1] + //$NON-NLS-1$
 						"." + config[2]; //$NON-NLS-1$
 				properties.put(rootPrefix + ".folder.jre", "absolute:" + vm.getAbsolutePath()); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureChild.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureChild.java
index 84eabf7..d76565b 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureChild.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureChild.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureData.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureData.java
index 2940926..6948a21 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureData.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureData.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureImport.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureImport.java
index dbe11fb..9f2687d 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureImport.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureImport.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureChild.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureChild.java
index 81ec81a..232a50f 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureChild.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureChild.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.ifeature;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureEntry.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureEntry.java
index 954261f..cf795c8 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureEntry.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureEntry.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.ifeature;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureImport.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureImport.java
index a980924..96f94d1 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureImport.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ifeature/IFeatureImport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
index d1d6fd2..dabeb93 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
@@ -89,6 +89,11 @@ Builders_Manifest_deprecated_attribute = Attribute ''{0}'' is deprecated
 Builders_Manifest_deprecated_element = Element ''{0}'' is deprecated
 Builders_Manifest_internal_rootElement = Access to extension point ''{0}'' is discouraged 
 BuildErrorReporter_binIncludesMissing=An entry for {0} is required in bin.includes
+BuildErrorReporter_buildEntryInvalidWhenNoProjectSettings=The ''{0}'' build entry should not be set when there are no project specific compiler settings
+BuildErrorReporter_buildEntryMissingProjectSpecificSettings=The ''{0}'' build entry should be set when there are project specific compiler settings
+BuildErrorReporter_buildEntryMissingValidPath=The ''{0}'' build entry does not contain ''true'' or a path to an existing properties file
+BuildErrorReporter_buildEntryMissingValidRelativePath=The ''{0}'' build entry does not contain a path to an existing properties file
+BuildErrorReporter_BuildEntryNotRequiredMatchesDefault=The ''{0}'' build entry is not required because it matches the default value
 BuildErrorReporter_entiresMustRefDirs={0}: entries ending in / must reference directories
 Builders_Manifest_deprecated_rootElement = The extension point ''{0}'' is deprecated
 BuildErrorReporter_classpathEntryMissing={0} is not included in any "source.*" build entry
@@ -117,8 +122,8 @@ Builders_Convert_illegalValue = Illegal value for ''{0}'' attribute
 BuildErrorReporter_emptyEntry=Build entries must contain at least one value
 BuildErrorReporter_GeneratedClassFilesCompatibility=Generated .class files compatibility
 BuildErrorReporter_missingFile=The file "{0}" does not exist in the workspace
-BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken=The ''{0}'' build entry does not match the ''{1}'' project setting
-BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry=There is no ''{0}'' build entry and the project specific ''{1}'' setting has been set
+BuildErrorReporter_ProjectSpecificJavaComplianceDifferentToken=The ''{0}'' build entry does not match the current project Java compliance settings
+BuildErrorReporter_ProjectSpecificJavaComplianceMissingEntry=There is no ''{0}'' build entry and the project has Java compliance preferences set
 BuildErrorReporter_SourceCompatibility=Source compatibility
 
 BundleErrorReporter_lineTooLong = The line is too long
@@ -182,6 +187,7 @@ BundleErrorReporter_unecessaryDependencyDueToFragmentHost=The ''{0}'' dependency
 BundleErrorReporter_localization_properties_file_not_exist=no valid properties files exist in the localization directory specified
 BundleErrorReporter_illegalManifestVersion=The bundle manifest version is invalid. Valid ranges are 1-2.
 BundleManifestSourceLocationManager_problemProcessBundleManifestHeaderAttributeMissing=Problem processing bundle manifest header in source bundle {0}, plugin name and version must both be specified.
+BundleValidationOperation_multiple_singletons={0} versions of singleton ''{1}'' exist
 
 ManifestConsistencyChecker_0=Cleaning {0}
 ManifestConsistencyChecker_buildPropertiesSubtask=Verifying build.properties
@@ -233,13 +239,27 @@ XMLTextChangeListener_editNames_addAttribute=Add "{0}" attribute to "{1}" node
 
 SearchablePluginsManager_createProjectTaskName=Creating {0} project
 
+SourceEntryErrorReporter_0=Workspace encoding ({0}) does not match specified default encoding ({1}) for library "{2}".
+SourceEntryErrorReporter_1=Default encoding ({0}) for library "{1}" should be removed as the workspace does not specify an explicit encoding.
+SourceEntryErrorReporter_10=Custom encoding ({0}) should be specified for "{1}" to match workspace settings.
+SourceEntryErrorReporter_2=Only one default encoding can be specified for library "{0}".
+SourceEntryErrorReporter_3=Custom encoding ({0}) should be removed for file or folder that does not exist: "{1}"
+SourceEntryErrorReporter_4=Syntax error: expecting '<path>[encoding]'
+SourceEntryErrorReporter_5=Custom encodings should be removed for library "{0}" as the workspace settings does not specify any explicit encodings.
+SourceEntryErrorReporter_6=Custom encoding ({0}) should be removed for "{0}" as the workspace does not specify an explicit encoding.
+SourceEntryErrorReporter_7=Workspace encoding ({0}) for "{1}" does not match specified encoding ({2}).
+SourceEntryErrorReporter_8=Custom encoding ({0}) should be specified for "{1}" to match workspace settings.
+SourceEntryErrorReporter_9=Default encoding ({0}) should be specified for library "{1}" to match workspace settings.
+
 SourceEntryErrorReporter_DifferentTargetLibrary=Source folders ''{0}'' share the same output folder but are targeted to different libraries.
 SourceEntryErrorReporter_DupeOutputFolder=Multiple entries for output folder ''{0}'' in build entry ''{1}''. 
 SourceEntryErrorReporter_DupeSourceFolder=Multiple entries for source folder ''{0}'' in build entry ''{1}''.
 SourceEntryErrorReporter_ExtraOutputFolder=Redundant entry for output folder ''{0}''. It does not correspond to any source folder in ''{1}'' entry. 
 SourceEntryErrorReporter_InvalidOutputFolder=''{0}'' is not an output folder.
 SourceEntryErrorReporter_InvalidSourceFolder=''{0}'' is not a source folder.
+SourceEntryErrorReporter_MissingLibrary=The library ''{0}'' has not been specified on the bundle classpath.
 SourceEntryErrorReporter_MissingOutputEntry=Source folder ''{0}'' does not have the output folder in corresponding output entry ''{1}''.  
+SourceEntryErrorReporter_MissingOutputLibForClassFolder=The class folder ''{0}'' is not associated to any output library entry.
 
 SourceLocationManager_problemProcessingBundleManifestSourceHeader=Problem processing bundle manifest source header
 UpdateSiteBuilder_0=Cleaning {0}
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectDescription.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectDescription.java
index d3cf587..eeb64f9 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectDescription.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectDescription.java
@@ -136,11 +136,15 @@ public class BundleProjectDescription implements IBundleProjectDescription {
 	private ManifestElement[] parseHeader(Map headers, String key) throws CoreException {
 		String value = (String) headers.get(key);
 		if (value != null) {
-			try {
-				return ManifestElement.parseHeader(key, value);
-			} catch (BundleException e) {
-				throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, e.getMessage(), e));
+			if (value.trim().length() > 0) {
+				try {
+					return ManifestElement.parseHeader(key, value);
+				} catch (BundleException e) {
+					throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, e.getMessage(), e));
+				}
 			}
+			// empty header
+			return new ManifestElement[0];
 		}
 		return null;
 	}
@@ -236,17 +240,22 @@ public class BundleProjectDescription implements IBundleProjectDescription {
 				setSingleton("true".equals(directive)); //$NON-NLS-1$
 			}
 			elements = parseHeader(headers, Constants.IMPORT_PACKAGE);
-			if (elements != null && elements.length > 0) {
-				IPackageImportDescription[] imports = new IPackageImportDescription[elements.length];
-				for (int i = 0; i < elements.length; i++) {
-					boolean optional = Constants.RESOLUTION_OPTIONAL.equals(elements[i].getDirective(Constants.RESOLUTION_DIRECTIVE)) || "true".equals(elements[i].getAttribute(ICoreConstants.OPTIONAL_ATTRIBUTE)); //$NON-NLS-1$
-					String pv = elements[i].getAttribute(ICoreConstants.PACKAGE_SPECIFICATION_VERSION);
-					if (pv == null) {
-						pv = elements[i].getAttribute(Constants.VERSION_ATTRIBUTE);
+			if (elements != null) {
+				if (elements.length > 0) {
+					IPackageImportDescription[] imports = new IPackageImportDescription[elements.length];
+					for (int i = 0; i < elements.length; i++) {
+						boolean optional = Constants.RESOLUTION_OPTIONAL.equals(elements[i].getDirective(Constants.RESOLUTION_DIRECTIVE)) || "true".equals(elements[i].getAttribute(ICoreConstants.OPTIONAL_ATTRIBUTE)); //$NON-NLS-1$
+						String pv = elements[i].getAttribute(ICoreConstants.PACKAGE_SPECIFICATION_VERSION);
+						if (pv == null) {
+							pv = elements[i].getAttribute(Constants.VERSION_ATTRIBUTE);
+						}
+						imports[i] = getBundleProjectService().newPackageImport(elements[i].getValue(), getRange(pv), optional);
 					}
-					imports[i] = getBundleProjectService().newPackageImport(elements[i].getValue(), getRange(pv), optional);
+					setPackageImports(imports);
+				} else {
+					// empty header - should be maintained
+					setHeader(Constants.IMPORT_PACKAGE, ""); //$NON-NLS-1$
 				}
-				setPackageImports(imports);
 			}
 			elements = parseHeader(headers, Constants.EXPORT_PACKAGE);
 			if (elements != null && elements.length > 0) {
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectService.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectService.java
index a8500e5..fcb4845 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectService.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/BundleProjectService.java
@@ -10,13 +10,6 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.core.project;
 
-import org.eclipse.pde.internal.core.importing.provisional.BundleImportDescription;
-
-import org.eclipse.pde.internal.core.importing.IBundleImporter;
-
-import org.eclipse.pde.internal.core.importing.BundleImporterExtension;
-
-
 import java.io.*;
 import java.util.*;
 import java.util.jar.JarFile;
@@ -31,6 +24,9 @@ import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.core.project.*;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.PDECore;
+import org.eclipse.pde.internal.core.importing.BundleImporterExtension;
+import org.eclipse.pde.internal.core.importing.IBundleImporter;
+import org.eclipse.pde.internal.core.importing.provisional.BundleImportDescription;
 import org.eclipse.pde.internal.core.target.Messages;
 import org.eclipse.pde.internal.core.target.provisional.IResolvedBundle;
 import org.osgi.framework.BundleException;
@@ -244,11 +240,13 @@ public final class BundleProjectService implements IBundleProjectService {
 						description.setProperty(PLUGIN, plugins.get(j));
 					}
 				}
-				result.put(importer, valid.toArray(new BundleImportDescription[valid.size()]));
+				if (!valid.isEmpty()) {
+					result.put(importer, valid.toArray(new BundleImportDescription[valid.size()]));
+				}
 			}
 			return result;
 		}
-		return null;
+		return new HashMap();
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java
index 1e8f27f..212c1a2 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java
@@ -206,6 +206,13 @@ public abstract class AbstractBundleContainer implements IBundleContainer {
 	public abstract boolean isContentEqual(AbstractBundleContainer container);
 
 	/**
+	 * Sets the resolution status to null.  This container will be considered unresolved.
+	 */
+	protected void clearResolutionStatus() {
+		fResolutionStatus = null;
+	}
+
+	/**
 	 * Parses a bunlde's manifest into a dictionary. The bundle may be in a jar
 	 * or in a directory at the specified location.
 	 * 
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
index 39995d1..c770cf4 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -49,11 +49,7 @@ public class ExternalFileTargetHandle extends AbstractTargetHandle {
 	 */
 	protected ExternalFileTargetHandle(URI uri) {
 		fURI = uri;
-		try {
-			fFile = new File(fURI.toURL().getFile());
-		} catch (MalformedURLException e) {
-			fFile = null;
-		}
+		fFile = URIUtil.toFile(fURI);
 	}
 
 	/* (non-Javadoc)
@@ -86,14 +82,13 @@ public class ExternalFileTargetHandle extends AbstractTargetHandle {
 		} catch (IOException e) {
 			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(Messages.LocalTargetHandle_4, fFile.getName()), e));
 		}
-
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.pde.internal.core.target.provisional.ITargetHandle#exists()
 	 */
 	public boolean exists() {
-		return fFile.exists();
+		return fFile != null && fFile.exists();
 	}
 
 	/* (non-Javadoc)
@@ -115,4 +110,11 @@ public class ExternalFileTargetHandle extends AbstractTargetHandle {
 		return fURI;
 	}
 
+	/* (non-Javadoc)
+	 * @see java.lang.Object#toString()
+	 */
+	public String toString() {
+		return fURI.toString();
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IUBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IUBundleContainer.java
index fec57ea..97e6d76 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IUBundleContainer.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IUBundleContainer.java
@@ -392,9 +392,9 @@ public class IUBundleContainer extends AbstractBundleContainer {
 		loadMonitor.done();
 
 		IQueryable allMetadata;
-		if (repoCount == 0) {
+		if (metadataRepos.size() == 0) {
 			throw new CoreException(repoStatus);
-		} else if (repoCount == 1) {
+		} else if (metadataRepos.size() == 1) {
 			allMetadata = (IQueryable) metadataRepos.get(0);
 		} else {
 			allMetadata = QueryUtil.compoundQueryable(metadataRepos);
@@ -843,6 +843,29 @@ public class IUBundleContainer extends AbstractBundleContainer {
 	}
 
 	/**
+	 * Removes an installable unit from this container.  The container will no longer be resolved.
+	 *  
+	 * @param unit unit to remove from the list of root IUs
+	 */
+	public void removeInstallableUnit(IInstallableUnit unit) {
+		List newUnits = new ArrayList(fUnits.length);
+		for (int i = 0; i < fUnits.length; i++) {
+			if (!fUnits[i].equals(unit)) {
+				newUnits.add(fUnits[i]);
+			}
+		}
+		fUnits = (IInstallableUnit[]) newUnits.toArray(new IInstallableUnit[newUnits.size()]);
+		fIds = new String[fUnits.length];
+		fVersions = new Version[fUnits.length];
+		for (int i = 0; i < fUnits.length; i++) {
+			fIds[i] = fUnits[i].getId();
+			fVersions[i] = fUnits[i].getVersion();
+		}
+		// Need to mark the container as unresolved
+		clearResolutionStatus();
+	}
+
+	/**
 	 * Returns installable unit identifiers.
 	 * 
 	 * @return IU id's
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java
index aabe728..0d03252 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java
@@ -64,6 +64,7 @@ public class Messages extends NLS {
 	public static String TargetDefinition_3;
 	public static String TargetDefinition_4;
 	public static String TargetDefinition_5;
+	public static String TargetDefinition_RequiredFeatureCouldNotBeFound;
 	public static String TargetDefinitionPersistenceHelper_0;
 	public static String TargetDefinitionPersistenceHelper_1;
 	public static String TargetPlatformService_0;
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties
index dc49344..f067ee5 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties
@@ -56,6 +56,7 @@ TargetDefinition_2=Problems occurred while resolving the target contents
 TargetDefinition_3=Error writing target definition
 TargetDefinition_4=Reading plug-ins
 TargetDefinition_5=Problems occurred getting the plug-ins in this container
+TargetDefinition_RequiredFeatureCouldNotBeFound=Required feature could not be found: {0}
 TargetDefinitionPersistenceHelper_0=The target file is in an invalid format and could not be opened.
 TargetDefinitionPersistenceHelper_1=Could not acquire the target platform service to initialize the target definition.
 TargetPlatformService_0=Unable to restore target memento
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java
index 32147af..baa7462 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
index 662b577..db304fe 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
@@ -209,7 +209,13 @@ public class TargetDefinition implements ITargetDefinition {
 		if (containers != null && containers.length == 0) {
 			containers = null;
 		}
+
 		fContainers = containers;
+
+		if (containers == null) {
+			fIncluded = null;
+			fOptional = null;
+		}
 	}
 
 	/* (non-Javadoc)
@@ -443,13 +449,13 @@ public class TargetDefinition implements ITargetDefinition {
 		IBundleContainer parent = fContainers != null && fContainers.length > 0 ? fContainers[0] : null;
 		List result = getMatchingBundles(bundles, (NameVersionDescriptor[]) included.toArray(new NameVersionDescriptor[included.size()]), fOptional, containsFeatures ? null : parent);
 
-		// Add in missing bundles as resolved bundles with error statuses
+		// Add in missing features as resolved bundles with error statuses
 		if (containsFeatures && !missingFeatures.isEmpty()) {
 			for (Iterator iterator = missingFeatures.iterator(); iterator.hasNext();) {
 				NameVersionDescriptor missing = (NameVersionDescriptor) iterator.next();
 				BundleInfo info = new BundleInfo(missing.getId(), missing.getVersion(), null, BundleInfo.NO_LEVEL, false);
-				String message = NLS.bind("Required feature could not be found: {0}", missing.getId());
-				Status status = new Status(IStatus.ERROR, PDECore.PLUGIN_ID, IResolvedBundle.STATUS_DOES_NOT_EXIST, message, null);
+				String message = NLS.bind(Messages.TargetDefinition_RequiredFeatureCouldNotBeFound, missing.getId());
+				Status status = new Status(IStatus.ERROR, PDECore.PLUGIN_ID, IResolvedBundle.STATUS_FEATURE_DOES_NOT_EXIST, message, null);
 				result.add(new ResolvedBundle(info, parent, status, null, false, false));
 			}
 		}
@@ -592,7 +598,7 @@ public class TargetDefinition implements ITargetDefinition {
 			sev = IStatus.INFO;
 			message = NLS.bind(Messages.AbstractBundleContainer_4, info.getSymbolicName());
 		}
-		return new ResolvedBundle(info, errorParentContainer, new Status(sev, PDECore.PLUGIN_ID, IResolvedBundle.STATUS_DOES_NOT_EXIST, message, null), null, optional, false);
+		return new ResolvedBundle(info, errorParentContainer, new Status(sev, PDECore.PLUGIN_ID, IResolvedBundle.STATUS_PLUGIN_DOES_NOT_EXIST, message, null), null, optional, false);
 	}
 
 	/* (non-Javadoc)
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
index 7b32bac..dc0bb39 100755
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
@@ -570,7 +570,7 @@ public class TargetPlatformService implements ITargetPlatformService {
 					// it's not in the state... if it's not really in the target either (missing) this
 					// is not an error
 					IStatus status = bundle.getStatus();
-					if (status.isOK() || (status.getCode() != IResolvedBundle.STATUS_DOES_NOT_EXIST && status.getCode() != IResolvedBundle.STATUS_VERSION_DOES_NOT_EXIST)) {
+					if (status.isOK() || (status.getCode() != IResolvedBundle.STATUS_PLUGIN_DOES_NOT_EXIST && status.getCode() != IResolvedBundle.STATUS_FEATURE_DOES_NOT_EXIST && status.getCode() != IResolvedBundle.STATUS_VERSION_DOES_NOT_EXIST)) {
 						// its in the target, missing in the state
 						IStatus s = new Status(IStatus.WARNING, PDECore.PLUGIN_ID, ITargetPlatformService.STATUS_MISSING_FROM_TARGET_PLATFORM, bundle.getBundleInfo().getSymbolicName(), null);
 						multi.add(s);
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/IResolvedBundle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/IResolvedBundle.java
index 853591c..9c83b67 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/IResolvedBundle.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/IResolvedBundle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,7 +25,12 @@ public interface IResolvedBundle {
 	/**
 	 * Status code indicating that a required bundle does not exist.
 	 */
-	public static final int STATUS_DOES_NOT_EXIST = 100;
+	public static final int STATUS_PLUGIN_DOES_NOT_EXIST = 100;
+
+	/**
+	 * Status code indicating that a required bundle does not exist.
+	 */
+	public static final int STATUS_FEATURE_DOES_NOT_EXIST = 110;
 
 	/**
 	 * Status code indicating that a required bundle version does not exist (a bundle
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/ITargetPlatformService.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/ITargetPlatformService.java
index b8e2df7..c9a2d43 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/ITargetPlatformService.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/ITargetPlatformService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/LoadTargetDefinitionJob.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/LoadTargetDefinitionJob.java
index 0902bfc..b02f024 100644
--- a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/LoadTargetDefinitionJob.java
+++ b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/provisional/LoadTargetDefinitionJob.java
@@ -376,7 +376,7 @@ public class LoadTargetDefinitionJob extends WorkspaceJob {
 					considerPool = considerPool || inPool;
 					if (!duplicates.contains(desc)) {
 						if (inPool) {
-							pooled.add(desc);
+							pooled.add(file);
 						}
 						infos.add(bundleInfo);
 						included.add(bundleInfo);
@@ -466,29 +466,23 @@ public class LoadTargetDefinitionJob extends WorkspaceJob {
 			if (pooled.isEmpty()) {
 				if (considerPool) {
 					// all pooled bundles are excluded
-					pref.setValue(ICoreConstants.POOLED_BUNDLES, ICoreConstants.VALUE_SAVED_NONE);
+					pref.setValue(ICoreConstants.POOLED_URLS, ICoreConstants.VALUE_SAVED_NONE);
 				} else {
 					// nothing in the pool
-					pref.setValue(ICoreConstants.POOLED_BUNDLES, ""); //$NON-NLS-1$
+					pref.setValue(ICoreConstants.POOLED_URLS, ""); //$NON-NLS-1$
 				}
 			} else {
 				StringBuffer buf = new StringBuffer();
 				Iterator iterator2 = pooled.iterator();
 				while (iterator2.hasNext()) {
-					NameVersionDescriptor desc = (NameVersionDescriptor) iterator2.next();
-					buf.append(desc.getId());
-					buf.append(',');
-					String version = desc.getVersion();
-					if (version == null) {
-						buf.append(ICoreConstants.VALUE_SAVED_NONE); // indicates null version
-					} else {
-						buf.append(version);
-					}
+					File bundle = (File) iterator2.next();
+					buf.append(bundle.getName()); // only store file name to make workspace portable
 					if (iterator2.hasNext()) {
 						buf.append(',');
 					}
 				}
-				pref.setValue(ICoreConstants.POOLED_BUNDLES, buf.toString());
+				pref.setValue(ICoreConstants.POOLED_URLS, buf.toString());
+				pref.setValue(ICoreConstants.POOLED_BUNDLES, ""); // NO LONGER USED //$NON-NLS-1$
 			}
 
 			// Save the feature list for the external feature model manager to EXTERNAL_FEATURES
diff --git a/eclipse/plugins/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/DocumentHandler.java b/eclipse/plugins/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/DocumentHandler.java
index b35fbb4..ff3f4c1 100644
--- a/eclipse/plugins/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/DocumentHandler.java
+++ b/eclipse/plugins/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/DocumentHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -181,8 +181,9 @@ public abstract class DocumentHandler extends DefaultHandler {
 
 	private IRegion getAttributeRegion(String name, String value, int offset) throws BadLocationException {
 		FindReplaceDocumentAdapter fFindReplaceAdapter = new FindReplaceDocumentAdapter(getDocument());
-		IRegion nameRegion = fFindReplaceAdapter.find(offset, name + "\\s*=\\s*[\"\']", true, true, false, true); //$NON-NLS-1$
+		IRegion nameRegion = fFindReplaceAdapter.find(offset, "\\s" + name + "\\s*=\\s*[\"\']", true, true, false, true); //$NON-NLS-1$ //$NON-NLS-2$
 		if (nameRegion != null) {
+			nameRegion = new Region(nameRegion.getOffset() + 1, nameRegion.getLength() - 1);
 			if (getDocument().get(nameRegion.getOffset() + nameRegion.getLength(), value.length()).equals(value))
 				return new Region(nameRegion.getOffset(), nameRegion.getLength() + value.length() + 1);
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/.project b/eclipse/plugins/org.eclipse.pde.doc.user/.project
index 7d8c4b1..e2e8d58 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/.project
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/.project
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.pde.doc.user</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.pde.doc.user</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/about.properties b/eclipse/plugins/org.eclipse.pde.doc.user/about.properties
index e3fea02..976770f 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/about.properties
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Plug-in Development Environment User Guide\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright IBM Corp. and others 2000, 2003.  All rights reserved.\n\
+(c) Copyright IBM Corp. and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/pde
 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/api_contexts.xml b/eclipse/plugins/org.eclipse.pde.doc.user/api_contexts.xml
index 0e3d519..79054c0 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/api_contexts.xml
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/api_contexts.xml
@@ -85,20 +85,30 @@
    </context>
    <context id="api_use_pattern_tab" title="API Use Pattern Tab">
       <description>This tab allows you to set package name patterns to use during a use scan for augmenting API descriptions.</description>
+      <topic href="reference/api-tooling/wizards/ref-api-use-dialog.htm" label="API Use Reports"/>
+      <topic href="reference/api-tooling/ant-tasks/apiuse-ant-task.htm" label="API Use Ant Task"/>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Patterns Wizard"/>
    </context>
    <context id="api_use_main_tab" title="API Use Main Tab">
       <description>This tab allows you to configure all of the settings to generate an API use report.</description>
+      <topic href="reference/api-tooling/wizards/ref-api-use-dialog.htm" label="API Use Reports"/>
+      <topic href="reference/api-tooling/ant-tasks/apiuse-ant-task.htm" label="API Use Ant Task"/>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Patterns Wizard"/>
    </context>
    <context id="apitools_archive_pattern_wizard_page" title="API Use Archive Pattern Page">
       <description>This page allows you to add a use pattern for excluding nested archives from within a given bundle</description>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Pattern Wizard"/>
    </context>
    <context id="apitools_pattern_selection_wizard_page" title="API Use Pattern Selection Page">
       <description>This page allows you to select the type of use pattern to create</description>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Pattern Wizard"/>
    </context>
    <context id="apitools_description_pattern_wizard_page" title="API Use Pattern Package Description Page">
       <description>This page allows you to create a use pattern that is used to specify what is internal / API for the given package pattern</description>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Pattern Wizard"/>
    </context>
    <context id="apitools_report_pattern_wizard_page">
       <description>This page allows you to create a name pattern that can be used to prune references to or from a member from the HTML of a converted use report</description>
+      <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Pattern Wizard"/>
    </context>   
 </contexts>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/buildDoc.xml b/eclipse/plugins/org.eclipse.pde.doc.user/buildDoc.xml
index 19554ea..17e1d09 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/buildDoc.xml
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/buildDoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -68,6 +68,12 @@
 		<exec dir="." executable="${javadoc}" output="doc.bin.log">
 			<arg line="@${basedir}/${optionsFile} -J-Xmx1000M" />
 		</exec>
+		
+		<!--workaround for bug 101048-->
+		<replace dir="reference/api" token="=&quot;/../misc/api-usage-rules.html" value="=&quot;./../misc/api-usage-rules.html">
+			<include name="*htm*" />
+		</replace>
+		
 	</target>
 
 	<target name="buildJdtDoc" unless="jdt.index.present">
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm b/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm
index f0f8844..ce38463 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm
@@ -35,7 +35,7 @@
 <a href="../guide/tools/target_shared/edit_target_wizard.htm">Edit Target Definition Wizard</a><br>
 <a href="../guide/tools/editors/target_editor/target_editor.htm">Target Editor</a><br>
 <a href="../guide/tools/launchers/eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
-<a href="../guide/tools/launchers/eclipse_plugins.htm">Eclipse Application Launcher Plug-ins Tab</a><br>
+<a href="../guide/tools/launchers/plugins.htm">Eclipse Application Launcher Plug-ins Tab</a><br>
 </p>
 
 </body>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/concepts/update_site.htm b/eclipse/plugins/org.eclipse.pde.doc.user/concepts/update_site.htm
index 3600bdf..50afb67 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/concepts/update_site.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/concepts/update_site.htm
@@ -1,17 +1,17 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Update Site</title>
-<link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
-<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
-</head>
-
-<body>
-<h1>Update Site</h1>
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Update Site</title>
+<link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
+</head>
+
+<body>
+<h1>Update Site</h1>
+
 <p><strong>Update Sites</strong> are used to organize and export features so they
 can be installed into Eclipse applications.</p>
 
@@ -23,7 +23,7 @@ organized into categories.</p>
 
 <p>When the site is built, the included features (along with all plug-ins part of those features) 
 will be exported into an installable form.  The exported plug-ins and features will be put into two
-folders &quot;plugins&quot; and &quot;features&quot;.  Two other files, &quot;content.xml&quot;
+folders &quot;plug-ins&quot; and &quot;features&quot;.  Two other files, &quot;content.xml&quot;
 and &quot;artifacts.xml&quot; will also be generated and contain metadata for the exported files
 that make installing easier.  These files, along with &quot;site.xml&quot;, collectively form an Eclipse update
 site.  To make the update site available to others you must make all these files available 
@@ -41,5 +41,5 @@ in a shared directory or web site.</p>
 <a href="plugin.htm">Plug-in</a><br>
 </p>
 
-</body>
+</body>
 </html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/contexts_PDE.xml b/eclipse/plugins/org.eclipse.pde.doc.user/contexts_PDE.xml
index 7a62e95..d06422f 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/contexts_PDE.xml
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/contexts_PDE.xml
@@ -65,6 +65,9 @@
     <context id="history_list_action">
         <description>Choose to open a dialog with all previously shown plug-in dependencies.</description>
     </context>
+    <context id="target_export_wizard">
+        <description>Use this wizard to export the contents of the current target platform to a directory.  All plug-ins included in the target platform will be copied to the destination directory.</description>
+    </context>
     
 <!-- Dialogs -->
  	<context id="fragment_add_target">
@@ -208,6 +211,9 @@ If the selected command has parameters, you are able to edit their values.</desc
 	<context id="plugin_import_finish_dialog">
 		<description>This dialog shows a list of plug-ins for which import was not possible (probably because they already exist in read-only projects of your workspace).</description>
 	</context>
+	<context id="plugin_import_overwrite_dialog">
+    	<description>This dialog opens when one or more plug-ins being imported already exist in the workspace.  Any projects that are checked in this dialog will be deleted when finish is pressed.  The imported plug-ins will use their id as the project name, but if a project with that name exists in the workspace a new project name that includes the version will be used.</description>
+	</context>
 
 	<context id="spy_dialog">
 		<description>This dialog, called the "Plug-in Spy", allows you to introspect your environment and retrieve information about your current context (active page, active selection, ...).</description>
@@ -232,7 +238,7 @@ You can select any item to open it in an editor.</description>
 	<context id="launcher_advanced">
 		<description>This page allows you to run your configuration with only a subset of the plug-ins.</description>
 		<topic label="Eclipse Application Launcher Plug-ins Tab" 
-			   href="guide/tools/launchers/eclipse_plugins.htm"/>
+			   href="guide/tools/launchers/plugins.htm"/>
 		<!-- Note:  This context ID is shared between the Eclipse Application Launcher Plug-ins tab 
 		            and Equinox OSGi Framework Launcher Plug-ins tab.  Limitation at this point which
 		            may cause confusion
@@ -281,7 +287,7 @@ You can select any item to open it in an editor.</description>
 		<topic label="Dependencies" href="guide/tools/editors/manifest_editor/dependencies.htm"/>
 	</context>
 	<context id="manifest_plugin_runtime">
-		<description>The Runtime page shows information about the plug-in's runtime libraries and OSGi plug-in activation settings.</description>
+		<description>The Runtime page shows information about the plug-in's runtime libraries.  This includes the plug-in classpath (if resources are not at the root of the plug-in) as well as what packages the plug-in exports.  Visibility restrictions can be set on the exported packages to limit usage by downstream users.</description>
 		<topic label="Runtime" href="guide/tools/editors/manifest_editor/runtime.htm" />
 	</context>
 	<context id="manifest_plugin_extensions">
@@ -761,7 +767,7 @@ If the selected project does not contain a manifest file, PDE will generate a ge
 	<!-- Plugins and Fragments -->
 	
 	<context id="plugin_import_first_page">
-		<description>This wizard allows you to import plug-ins into the workspace.  Source code, if found, will be attached to JARs. Importing plug-ins as binary projects with links is the fastest.  It will not import these plug-ins physically into the workspace. It will instead create links to those plug-ins on disk.  Note that deleting these binary linked projects will not delete the files that they map to on disk.</description>
+		<description>This wizard allows you to import plug-ins into the workspace.  Plug-ins can be imported from the current target, any other target definition or a local directory.  The next page of the wizard will allow you to choose which plug-ins to import.  You can either select from a list of all plug-ins at the source location or select based on the requirements of plug-ins already in your workspace.  Plug-ins can be imported in four different formats.  Binary projects will contain the compiled plug-in code and will have attached source, but the source cannot be edited.  Binary projects with linked content will use linked files instead of copying the plug-in contents into the project.  Projects with source folders will attempt to extract source from the imported plug-in to make an editable project.  Projects from a repository will look for a special entry in the plug-in manifest that specifies a repository (such as a CVS location) so that source can be checked out.</description>
 		<topic label="Plug-in Import" 
 			   href="guide/tools/import_wizards/import_plugins.htm"/>
 	</context>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/import_wizards/plugin_import.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/import_wizards/plugin_import.png
index ed3494e..7a2e4f7 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/import_wizards/plugin_import.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/import_wizards/plugin_import.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_configuration.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_configuration.png
index 742b564..0579ed6 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_configuration.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_configuration.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_features.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_features.png
new file mode 100644
index 0000000..5d36f2f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_features.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_plugins.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_plugins.png
index a284295..ecddfa5 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_plugins.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_eclipse_plugins.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_configuration.PNG b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_configuration.PNG
deleted file mode 100644
index fdf947f..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_configuration.PNG and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_plugins.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_plugins.png
deleted file mode 100644
index c6d58b8..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/launchers/launcher_junit_plugins.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/new_ctx_hlp_wizard.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/new_ctx_hlp_wizard.png
new file mode 100644
index 0000000..12fe970
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/new_ctx_hlp_wizard.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/user_assistance.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/user_assistance.png
new file mode 100644
index 0000000..d4efac9
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/new_wizards/user_assistance.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/internal.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/internal.png
new file mode 100644
index 0000000..762766c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/internal.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/public.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/public.png
new file mode 100644
index 0000000..de99391
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/public.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/xfriend.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/xfriend.png
new file mode 100644
index 0000000..e9f4ec0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/plugin_editor/xfriend.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/compilers_plugin.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/compilers_plugin.png
index 339767c..34d6662 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/compilers_plugin.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/compilers_plugin.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/plugin_development.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/plugin_development.png
index bd9310c..200b22c 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/plugin_development.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/preferences/plugin_development.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_ee.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_ee.png
new file mode 100644
index 0000000..45ca8f9
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_ee.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_jre.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_jre.png
deleted file mode 100644
index cd16c3b..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/product_editor/launcher_jre.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/schema_editor/schema_identifier.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/schema_editor/schema_identifier.png
new file mode 100644
index 0000000..f601ee0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/schema_editor/schema_identifier.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page.png
index 5907062..60d2931 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page_feature_mode.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page_feature_mode.png
new file mode 100644
index 0000000..e7c76b4
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_editor/content_page_feature_mode.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab.png
index ef88ed9..d5b7de1 100644
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab.png and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab_feature_mode.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab_feature_mode.png
new file mode 100644
index 0000000..1179042
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/target_shared/edit_target_content_tab_feature_mode.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-as-repo.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-as-repo.png
new file mode 100644
index 0000000..aadfd0d
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-as-repo.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-active.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-active.png
new file mode 100644
index 0000000..391ab2a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-active.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-plugins-view.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-plugins-view.png
new file mode 100644
index 0000000..ca18d0a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-from-plugins-view.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-version.png b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-version.png
new file mode 100644
index 0000000..11e960a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/guide/images/tasks/import-version.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm
index 32227e3..2beeb1b 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm
@@ -22,7 +22,7 @@ development.</p>
 <p>PDE is broken into three main components:</p>
 <ul>
 <li><a href="#ui">UI</a> - A rich set of models, tools and editors to develop plug-ins and OSGi bundles</li>
-<li><a href="#api">API Tooling</a> - Tooling to assist API documentation and maintenence</li>
+<li><a href="#api">API Tooling</a> - Tooling to assist API documentation and maintenance</li>
 <li><a href="#build">Build</a> - Ant based tools and scripts to automate build processes</li>
 </ul>
 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/build.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/build.htm
index 3af7d24..e8e50c2 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/build.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/build.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Plug-in Build</title>
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
@@ -13,6 +13,10 @@
 <h1>Plug-in Build</h1>
 <p>The <strong>Build </strong>page contains all the information needed to   build, package and export the plug-in. Although it appears as a page in the plug-in   manifest editor, changes made to it are written by PDE to the plug-in's <em>build.properties</em> file.  The <em>build.properties</em> file solely guides the build   process.</p>
 
+<h2>Custom Build</h2>
+<p>The <strong>Custom Build</strong> option prevents the build.xml file from being overwritten with a generated build file.  Use this option when 
+the plug-in provides a custom build.xml that is being manually updated.</p>
+
 <h2>Runtime Information</h2>
 <p>The <strong>Runtime Information</strong> section lists all the libraries that you want to build. For each library, you must list the source folder(s) that will be   compiled into the library. </p>
 <p><img src="../../../images/plugin_editor/runtime.png" alt="Runtime" ></p>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/runtime.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/runtime.htm
index 29e3417..afae0c9 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/runtime.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/runtime.htm
@@ -20,6 +20,12 @@
 <p>Press <strong>Add...</strong> to see the list of packages available for export that are not already in your list.</p>
 <p>PDE can calculate the <em>uses</em> directive, as defined in the OSGi Specification, for all of your publicly exported packages. Press the <strong>Calculate Uses</strong> button to begin. Because this process involves code introspection, this might be a long running operation.</p>
 <p>You can control the visibility of each package to downstream clients in the <strong>Package Visibility</strong> section. Refer to the <a href="access_rules.htm">Access Rules</a> document for full details. </p>
+<p>When the visiblity of a package is changed the icon beside the package will change to reflect its status as follows:</p>
+<ul>
+<li><img src="../../../images/plugin_editor/public.png" align="top" alt="Public Package"> Visible to all downstream plug-ins (public)</li>
+<li><img src="../../../images/plugin_editor/internal.png" align="top" alt="Internal Package"> Not visible to any downstream plug-ins (internal)</li>
+<li><img src="../../../images/plugin_editor/xfriend.png" align="top" alt="X-Friend Package"> Visible to a specific list of downstream plug-ins (internal with friends)</li>
+</ul>
 
 <a name="classpath"></a>
 <h2>Classpath</h2>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/launching.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/launching.htm
index 596c583..af38480 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/launching.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/launching.htm
@@ -12,9 +12,9 @@
 <h1>Product Launching</h1>
 <p>The <strong>Launching</strong> page customizes the native launcher of your product and the launching arguments.</p>
 
-<h2>JRE</h2>
-<p>The <strong>Java Runtime Environment</strong> section allows you to bundle a JRE with your product automatically. </p>
-<p><img src="../../../images/product_editor/launcher_jre.png" alt="launcher jre" ></p>
+<h2>Execution Environment</h2>
+<p>The <strong>Execution Environment</strong> section allows you to specify an execution environment (EE) that the product runs on.  The default JRE associated with the chosen EE can be bundles with the product if the option is turned on.</p>
+<p><img src="../../../images/product_editor/launcher_ee.png" alt="launcher jre" ></p>
 <p>The JRE will be placed in the <strong>jre</strong> directory at the root of your product. </p>
 
 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/schema_editor/page_schema_definition.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/schema_editor/page_schema_definition.htm
index 6073c5a..e31d60f 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/schema_editor/page_schema_definition.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/schema_editor/page_schema_definition.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 	<head>
-	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 		<title>Schema Definition Page</title>
 		<link rel="STYLESHEET" href="../../../../book.css" type="text/css">
@@ -643,6 +643,13 @@
 			<img src="../../../images/schema_editor/section_attribute-details_4.png" alt="Attribute Details Section 4">
 		</p>
 
+	 	<h3>Using the Schema Indentifier Attribute</h3>
+
+		<p>Extension point authors can define attributes that reference other attributes. This is accomplished by setting your extension point attributes as type identifier and choosing the attribute it references. An example of this would be the org.eclipse.ui.handlers extension point. The commandId attribute references commands defined in the org.eclipse.ui.commands extension point.</p>
+
+		<img src="../../../images/schema_editor/schema_identifier.png" alt="Schema Identifier Usage">
+
+		<p>Extension developers contributing a handler can then select from all valid identifiers for the commandId attribute. Warnings are issued for identifiers that don't exist to prevent the common mistake of a misspelled identifier.</p>
 
 		<h3>Attribute Details Section Fields</h3>
 		
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm
index a458d4c..8bae10f 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Content Page</title>
 <link rel="stylesheet" href="../../../book.css" charset="ISO-8859-1" type="text/css">
@@ -32,8 +32,18 @@
 <li><strong>File Path</strong> - Grouped by the directory path the plug-ins are stored in on the local file system</li>
 <li><strong>Location</strong> - Grouped by the locations set on the <a href="../../target_shared/edit_target_locations_tab.htm">locations tab</a></li>
 </ol>
-  
-  
+
+<h2>Managing Content with Features</h2>
+
+<p>On the right hand side, you can choose between two different modes to manage the content of the target.  By default targets
+are managed using a list of plug-ins.  Selecting <strong>Features</strong> will change your target contents to a list of features.</p>
+
+<img src="../../../images/target_editor/content_page_feature_mode.png" alt="Content Page Feature Mode">
+
+<p>You can select features in the same way as when managing by plug-ins.  <strong>Add Required</strong> will select any features that the currently
+selected features have in their <em>include</em> or <em>require</em> entries.  If there are plug-ins in the target that do not belong to a
+feature, they will be listed under the <em>Other Plug-ins</em> item and can be selected individually.</p>
+    
 <p><img src="../../../../images/ngrelr.png" alt="Related reference"></p>
 <p>
 <a href="./target_editor.htm">Target Definition Editor</a><br>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_cheat_sheet.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_cheat_sheet.htm
index 41ec33d..f19153e 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_cheat_sheet.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_cheat_sheet.htm
@@ -1,16 +1,17 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
-	<head>
-	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-		<title>New Cheat Sheet Wizard</title>
-		<link rel="STYLESHEET" href="../../book.css" type="text/css">
-		<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-	</head>
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+<title>New Cheat Sheet Wizard</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
 	<body>
-		<h2>New Cheat Sheet Wizard</h2>
+		<h1>New Cheat Sheet Wizard</h1>
 
-		<h3>About Cheat Sheets</h3>
+		<h2>About Cheat Sheets</h2>
 		
 		<p>
 			In general, cheat sheets help guide users through a complex set of instructions. 
@@ -20,7 +21,7 @@
 			present tasks represented by simple cheat sheets to achieve a larger goal.
 		</p>
 		
-		<h3>About This Wizard</h3>
+		<h2>About This Wizard</h2>
 		
 		<p>
 			This wizard allows you to create a new simple or composite cheat sheet.
@@ -41,7 +42,7 @@
 			<img src="../../images/new_wizards/wizard_new_cheat-sheet.png" alt="New Cheat Sheet Wizard">
 		</p>
 
-		<h3>Relevant Links</h3>
+		<h2>Relevant Links</h2>
 
 		<ul>
 			<li>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_ctx_help.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_ctx_help.htm
new file mode 100644
index 0000000..9f4040f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_ctx_help.htm
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+<title>New Context Help Wizard</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
+	<body>
+		<h1>New Context Help Wizard</h1>
+
+		<h2>About Context Help</h2>
+		
+		<p>
+			Context-sensitive help is a mechanism that enables linking a user interface part with a specific help topic. When the user activates the associated user interface part, the help page is displayed in the dynamic help area. 
+			Users of Eclipse products can view installed products' contributions to help by clicking <strong>Help &gt; Help Contents</strong>.   
+		</p>
+		
+		<h2>About This Wizard</h2>
+		
+		<p>
+			This wizard allows you to create a new context help.
+			Upon completion of this wizard, a new context help will be created with basic
+			content and opened in the <strong>Context Help Editor</strong>.
+		</p>
+
+		<p>
+			To start this wizard, click 
+			<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.newWizard(newWizardId=org.eclipse.pde.ua.ui.NewContextHelpWizard)")'>
+    			<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
+				<strong>File &gt; New &gt; Other... &gt; User Assistance &gt; Context Help</strong>
+			</a>.	
+		</p>
+
+		<p>
+			<img src="../../images/new_wizards/new_ctx_hlp_wizard.png" alt="New Context Help Wizard">
+		</p>
+
+		<h2>Relevant Links</h2>
+
+		<ul>
+			<li>
+				<a href="../editors/ctx_help_editor/ctx_help_editor.htm">Context Help Editor</a>
+			</li>
+		</ul>
+		
+	</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_file_wizards.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_file_wizards.htm
index 48ef85d..23f48fb 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_file_wizards.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_file_wizards.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
 <title>New File Creation Wizards</title>
@@ -12,26 +12,30 @@
 <body>
 <h1>New File Creation Wizards</h1>
 <p>In addition to manifest files, several other types of files are needed in various aspects and at different stages of plug-in development:</p>
-<ul>
-  <li><strong>Extension point schemas</strong> -  specify the grammar of extension points</li>
-  <li><strong>Product configurations</strong> -  manage all the data needed to define, brand and build an Eclipse product</li>
-  <li><strong>Target definitions</strong> - define all aspects of a target platform</li>
-  <li><strong>Cheat sheets</strong> - Create a cheat sheet for an Eclipse product</li>
-  <li><strong>Help Tables of Contents</strong> - Create a Table of Contents for the documentation in an Eclipse product</li>
-  <li><strong>Category Definitions</strong> - specify categories to apply to features during export</li>
-</ul>
+
 <p>To help you create these files, PDE provides specialized <strong>New File</strong> creation wizards available via 		<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.newWizard()")'>
     		<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Open the new wizard"><strong>File &gt; New &gt; Other... &gt; Plug-in Development</strong></a>
  from the top level menu. </p>
+
+<h2>Plug-in Development Files</h2>
+
 <p><img src="../../images/new_wizards/other_category.PNG" alt="File Wizards" ></p>
-<p>For details on individual wizards, refer to the following documents:</p>
+
+<ul>
+  <li><a href="new_category.htm"><strong>Category Definitions</strong></a> - specify categories to apply to features during export</li>
+  <li><a href="new_schema.htm"><strong>Extension point schemas</strong></a> -  specify the grammar of extension points</li>
+  <li><a href="new_product_config.htm"><strong>Product configurations</strong></a> -  manage all the data needed to define, brand and build an Eclipse product</li>
+  <li><a href="new_target_definition.htm"><strong>Target definitions</strong></a> - define all aspects of a target platform</li>
+</ul>
+
+<h2>User Assistance Files</h2>
+
+<p><img src="../../images/new_wizards/user_assistance.png" alt="UA File Wizards" ></p>
+
 <ul>
-  <li><a href="new_product_config.htm">Product Configuration</a></li>
-  <li><a href="new_target_definition.htm">Target Definition</a></li>
-  <li><a href="new_schema.htm">Extension Point Schema</a></li>
-  <li><a href="new_cheat_sheet.htm">Cheat Sheet</a></li>
-  <li><a href="new_toc.htm">Table of Contents</a></li>
-  <li><a href="new_category.htm">Category Definition</a></li>
+  <li><a href="new_cheat_sheet.htm"><strong>Cheat Sheet</strong></a> - Create a cheat sheet tutorial for an Eclipse product</li>
+  <li><a href="new_ctx_help.htm"><strong>Context Help</strong></a> - Create a context help xml file to associate UI components to help documentation</li>
+  <li><a href="new_toc.htm"><strong>Help Table of Contents</strong></a> - Create a Table of Contents for help documentation</li>
 </ul>
 
 </body>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_toc.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_toc.htm
index a594aeb..41ca8f1 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_toc.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_toc.htm
@@ -1,16 +1,17 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
-	<head>
-	<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-		<title>New Table of Contents Wizard</title>
-		<link rel="STYLESHEET" href="../../book.css" type="text/css">
-		<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-	</head>
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2007, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+<title>New Table of Contents Wizard</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
 	<body>
-		<h2>New Table of Contents Wizard</h2>
+		<h1>New Table of Contents Wizard</h1>
 
-		<h3>About Tables of Contents</h3>
+		<h2>About Tables of Contents</h2>
 		
 		<p>
 			Tables of contents allow you to organize your Eclipse product's contribution to on-line help.
@@ -18,7 +19,7 @@
 			Users of Eclipse products can view installed products' contributions to help by clicking <strong>Help &gt; Help Contents</strong>.   
 		</p>
 		
-		<h3>About This Wizard</h3>
+		<h2>About This Wizard</h2>
 		
 		<p>
 			This wizard allows you to create a new table of contents.
@@ -38,7 +39,7 @@
 			<img src="../../images/new_wizards/new_toc_wizard.png" alt="New Table of Contents Wizard">
 		</p>
 
-		<h3>Relevant Links</h3>
+		<h2>Relevant Links</h2>
 
 		<ul>
 			<li>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/import_wizards/import_plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/import_wizards/import_plugins.htm
index 4dcb231..f79f882 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/import_wizards/import_plugins.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/import_wizards/import_plugins.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
 <title>Plug-in Import</title>
@@ -44,6 +44,7 @@ Select this option if you choose to import plug-ins from an arbitrary location o
   <li><strong>Binary projects</strong>: The plug-in content is copied into the project. The binary code remains intact in a JAR; while, the manifest files and other resources are extracted to the project root. The advantage of binary projects is that they allow you to browse the code without the overhead of compiling the source code. </li>
   <li><strong>Binary projects with linked content</strong>: The plug-in content is not copied into the project. Instead, links are created in the project to map to the actual physical location of the JARs, files and folders on disk. The advantage of this type of import over a regular binary import is that it is faster to import; since, the operation only involves creating links. The disadvantage of this approach is that linked binary projects can become out of sync and have to be re-imported if the absolute path to these linked files are changed in the file system. </li>
   <li><strong>Projects with source folders</strong>: The source code for the plug-ins being imported gets extracted and placed in source folders. The advantage of this type of import is that you will be able to modify the imported source code. The disadvantage of this approach is that the code gets compiled and results in an overhead whose magnitude is proportional to the number and size of plug-ins imported. </li>
+  <li><strong>Projects from a repository</strong>: The manifest file for plug-ins can specify a source repository location (such as a CVS server).  Plug-ins containing this information can be imported as source directly from the repository.  This provides a quick way to get editable source and create patches for plug-ins you are working with.</li>
 </ol>
 
 </body>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/arguments.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/arguments.htm
new file mode 100755
index 0000000..a4e3b7a
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/arguments.htm
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Arguments Tab</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Arguments Tab</h1>
+<p>You can easily test your plug-in under different conditions by customizing the launching program and VM arguments on the <strong>Arguments Tab</strong>. </p>
+<p><img src="../../images/launchers/launcher_eclipse_arguments.png" alt="Arguments" > </p>
+
+<h2>Program and VM Arguments</h2>
+<p><strong>Program arguments</strong> are application-specific values that the application code expects and processes. For example, the <em>-debug</em> argument puts the platform in debug mode and enables tracing, while the <em>-nl fr </em>arguments launch the application in a French locale.</p>
+<p><strong>VM arguments</strong> are typically values that change the behaviour of the <em>Java Virtual Machine</em> (JVM). For example, the <em>-Xmx256M</em> argument allows the Java heap to grow to 256MB. </p>
+<p>The Eclipse runtime is also configurable via many system properties which can be passed as VM arguments in the form: <em>-DpropertyName=propertyValue</em>. For example, <em>-Dosgi.clean=true</em> clears all data cached by the OSGi framework and the Eclipse runtime. </p>
+<p>For a list of the program and VM arguments supported by the Eclipse runtime, refer to the following documents: </p>
+<ul>
+  <li><a href="../../../../org.eclipse.platform.doc.user/tasks/running_eclipse.htm">Running Eclipse</a></li>
+  <li><a href="../../../../org.eclipse.platform.doc.isv/reference/misc/runtime-options.html">Eclipse Runtime Options </a></li>
+</ul>
+<p>If you would like the same set of program and VM arguments to be used for all your launch configurations, it is recommended that you use the <a href="../target_shared/edit_target_arguments_tab.htm">Launching Arguments</a> setting when editing your <a href="../../../concepts/target.htm">Target Platform</a> to create a template that gets propagated into all newly-created launch configurations. </p>
+
+<h2>Working Directory</h2>
+<p>The <strong>Working Directory</strong> specifies the directory in which the runtime Eclipse application executes (e.g. read and write files into the working directory, etc.). By default, the working directory is the root directory of the Eclipse installation; but, it can be configured by the user to be any writable directory they wish. </p>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/common.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/common.htm
index 20ac45a..095f5c1 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/common.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/common.htm
@@ -17,5 +17,20 @@
 <p>A launch configuration is saved as an XML <em>.launch</em> file on disk. By default, this file is saved in the <em>${workspace_loc}/.metadata/.plugins/org.eclipse.debug.core/.launches</em> directory, where <em>${workspace_loc}</em> denotes the workspace location. </p>
 <p>If you want to share a launch configuration with team members, you have the option to save it as a <strong>Shared file</strong> in one of your workspace projects (in order to make it visible for version control).</p>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/configuration.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/configuration.htm
index ec294b4..0872cec 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/configuration.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/configuration.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Configuration Tab</title>
 <link href="../../book.css" rel="stylesheet" type="text/css">
@@ -31,8 +31,27 @@
   <li><strong>osgi.splashPath</strong> - specifies one or more locations of the splash screen.</li>
 </ul>
 <p>The <strong>Use an existing <em>config.ini</em> file as a template</strong> option takes an existing <em>config.ini</em> file and makes a copy of it. PDE neither adds nor removes properties from this file. However, PDE modifies the <strong>osgi.bundles</strong> and <strong>osgi.splashPath</strong> keys by substituting their generic bundle URL values with absolute paths that reflect the actual locations of the bundles on disk.</p>
-<br>
-<br>
-<br>
+
+<h2>Software Installation</h2>
+<p>Use <strong>Support software installation in the launched application</strong> to create p2 metadata for the plug-ins
+being launched and starts the application with a profile containing the metadata.  If the launched application does
+not include p2, this option has no effect.  The contents of the profile are cleared and recreated on each launch,
+but if the application is restarted the same profile is kept.</p>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_application_launcher.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_application_launcher.htm
index 517254d..1047b6b 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_application_launcher.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_application_launcher.htm
@@ -28,13 +28,19 @@
 <p>An <em>Eclipse Application</em> launch configuration contains seven tabs allowing you to customize all aspects of the test launch. Refer to the following documents for more details: </p>
 <ul>
   <li><a href="eclipse_main.htm">Main Tab</a></li>
-  <li><a href="eclipse_args.htm">Arguments Tab</a></li>
-  <li><a href="eclipse_plugins.htm">Plug-ins Tab</a></li>
+  <li><a href="arguments.htm">Arguments Tab</a></li>
+  <li><a href="plugins.htm">Plug-ins Tab</a></li>
   <li><a href="configuration.htm">Configuration Tab</a></li>
   <li><a href="tracing.htm">Tracing Tab</a></li>
   <li><a href="environment.htm">Environment Tab</a></li>
   <li><a href="common.htm">Common Tab</a></li>
 </ul>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_args.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_args.htm
deleted file mode 100644
index f79c3a7..0000000
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_args.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Arguments Tab</title>
-<link href="../../book.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
-<h1>Arguments Tab</h1>
-<p>You can easily test your plug-in under different conditions by customizing the launching program and VM arguments on the <strong>Arguments Tab</strong>. </p>
-<p><img src="../../images/launchers/launcher_eclipse_arguments.png" alt="Arguments" > </p>
-
-<h2>Program and VM Arguments</h2>
-<p><strong>Program arguments</strong> are application-specific values that the application code expects and processes. For example, the <em>-debug</em> argument puts the platform in debug mode and enables tracing, while the <em>-nl fr </em>arguments launch the application in a French locale.</p>
-<p><strong>VM arguments</strong> are typically values that change the behaviour of the <em>Java Virtual Machine</em> (JVM). For example, the <em>-Xmx256M</em> argument allows the Java heap to grow to 256MB. </p>
-<p>The Eclipse runtime is also configurable via many system properties which can be passed as VM arguments in the form: <em>-DpropertyName=propertyValue</em>. For example, <em>-Dosgi.clean=true</em> clears all data cached by the OSGi framework and the Eclipse runtime. </p>
-<p>For a list of the program and VM arguments supported by the Eclipse runtime, refer to the following documents: </p>
-<ul>
-  <li><a href="../../../../org.eclipse.platform.doc.user/tasks/running_eclipse.htm">Running Eclipse</a></li>
-  <li><a href="../../../../org.eclipse.platform.doc.isv/reference/misc/runtime-options.html">Eclipse Runtime Options </a></li>
-</ul>
-<p>If you would like the same set of program and VM arguments to be used for all your launch configurations, it is recommended that you use the <a href="../target_shared/edit_target_arguments_tab.htm">Launching Arguments</a> setting when editing your <a href="../../../concepts/target.htm">Target Platform</a> to create a template that gets propagated into all newly-created launch configurations. </p>
-
-<h2>Working Directory</h2>
-<p>The <strong>Working Directory</strong> specifies the directory in which the runtime Eclipse application executes (e.g. read and write files into the working directory, etc.). By default, the working directory is the root directory of the Eclipse installation; but, it can be configured by the user to be any writable directory they wish. </p>
-
-</body>
-</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_main.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_main.htm
index b7a446a..d16d4c0 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_main.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_main.htm
@@ -44,6 +44,20 @@
   <li><a href="../../../../org.eclipse.platform.doc.isv/reference/misc/runtime-options.html">Eclipse Runtime Options </a></li>
 </ul>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
 
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_plugins.htm
deleted file mode 100644
index ff53d3a..0000000
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_plugins.htm
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Plug-ins Tab</title>
-<link href="../../book.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
-<h1>Plug-ins Tab</h1>
-<p>When testing your plug-in, you have the ability to manage and select the list of plug-ins that you want to launch with on the  <strong>Plug-ins Tab</strong> of the launch configuration. </p>
-<p><img src="../../images/launchers/launcher_eclipse_plugins.png" alt="Plug-ins tab" ></p>
-
-<h2>Launch Options </h2>
-<p>The <strong>Launch with</strong> combo box allows you to configure the way the Eclipse Application is launched. The options are explained in more detail below.</p>
-<p>The <strong>all workspace and enabled external plug-ins</strong> option is the default setting. With this option, the runtime Eclipse application you are launching will be made up of all the workspace plug-ins and all the plug-ins that are explicitly checked on the <strong>Window &gt; Preferences... &gt; Plug-in Development &gt; Target Platform</strong> preference page. This option requires little maintenance because the list of plug-ins is maintained by PDE and updated prior to every launch as plug-ins are created or deleted in the workspace. This option is recommended when the <strong>Program to Run</strong> setting on the <a href="eclipse_main.htm">Main tab</a> of the launch configuration is set to the <strong>default product</strong> or <strong>default application</strong> of your target. </p>
-<p>The <strong>workspace features</strong> is an advanced option that requires a special setup. It should only be used when you want to test feature lifecycles and leave Update Manager in control of your startup sequence. Refer to the <a href="../../../tips/pde_tips.htm">Tips and Tricks</a> section for details on how to set up your workspace for this option.</p>
-<p>The <strong>plug-ins selected below only</strong> option is typically used when you are testing an RCP application that uses a subset of the plug-ins from the workspace and target. This setting requires more maintenance than the other options, since you have to ensure that the list of selected plug-ins is up-to-date when you add or remove a plug-in from the workspace. There are several buttons available to help you select plug-ins, including an <strong>Add Required Plug-ins</strong> button.  The <strong>Add Required Plug-ins</strong> button should be used often to ensure the subset of plug-ins you have selected is complete. </p>
-<p>Please note that if a workspace plug-in has the same ID as a target plug-in, the workspace plug-in is used in place of its target counterpart. This behavior applies to all three plug-in selection options described above; however, you can override this option by choosing the third option, deselecting a workspace plug-in and selecting the target plug-in with the same ID. </p>
-
-<h2>Validate Plug-ins</h2>
-<p>The <strong>Validate Plug-ins</strong> functionality, which can be invoked via the button located at the bottom right corner of the <strong>Plug-ins tab</strong>, analyzes the selected set of plug-ins to find launching startup problems. For instance, missing dependencies, unsatisfied execution environments, incompatible platform filters are a few of the potential problems that may prevent your plug-in from running.</p>
-<p>By checking the <strong>Validate plug-ins automatically prior to launching</strong> option, PDE will run the <strong>Validate Plug-ins</strong> function prior to every launch. If problems are found, an error dialog will appear for you to examine and you can choose to either continue the launch without correcting the problems or cancel the launch to rectify the issues. Otherwise, if no problems are found, the launch proceeds as normal. </p>
-
-</body>
-</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/environment.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/environment.htm
index fc72dc5..712b128 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/environment.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/environment.htm
@@ -23,5 +23,20 @@
 </p>
 <p><img src="../../images/launchers/launcher_eclipse_environment.png" alt="Environment Tab" ></p>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_args.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_args.htm
index 46417b7..a3a4b58 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_args.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_args.htm
@@ -27,5 +27,18 @@
 <h2>Working Directory</h2>
 <p>The <strong>Working Directory</strong> specifies the directory in which the <em>Equinox OSGi Framework</em> executes (e.g. read and write files into the working directory, etc.). By default, the working directory is the root directory of the Eclipse installation; but, it can be configured by the user to be any writable directory they wish. </p>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_plugins.htm">Bundles Tab</a><br>
+  <a href="equinox_args.htm">Arguments Tab</a><br>
+  <a href="equinox_settings.htm">Settings Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_launcher.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_launcher.htm
index 35d8499..451cbe5 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_launcher.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_launcher.htm
@@ -32,5 +32,12 @@
   <li><a href="common.htm">Common Tab</a></li>
 </ul>
 
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_plugins.htm
index d853e86..938f1b2 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_plugins.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_plugins.htm
@@ -27,8 +27,19 @@
 <h2>Validate Bundles</h2>
 <p>The <STRONG>Validate Bundles</STRONG> functionality, which can be invoked   via the button located at the bottom right corner of the <STRONG>Bundles   tab</STRONG>, analyzes the selected set of bundles to find launching   startup problems. For instance, missing dependencies, unsatisfied execution environments,   incompatible platform filters are a few of the potential problems that may   prevent your bundle from running.</p>
 <p>By checking the <STRONG>Validate bundles automatically prior to   launching</STRONG> option, PDE will run the <strong>Validate Bundle</strong> function prior to every launch. If problems are found, a dialog showing the error comes up for you to examine and you have the option to continue the launch without correcting the problems or canceling the launch to rectify the issues. Otherwise, if no problems are found, the launch proceeds as normal. </p>
-<br>
-<br>
-<br>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_plugins.htm">Bundles Tab</a><br>
+  <a href="equinox_args.htm">Arguments Tab</a><br>
+  <a href="equinox_settings.htm">Settings Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_settings.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_settings.htm
index 8b981a8..f87a770 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_settings.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/equinox_settings.htm
@@ -30,5 +30,18 @@
 <p>If desired, the user can set the location of the configuration area.   Variables in the directory path are supported in order to facilitate shareable launch configurations among team members.</p>
 <p>You also have the option to <strong>Clear the configuration area before launching</strong>, which is useful for testing how bundles cache data in that area.  </p>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_plugins.htm">Bundles Tab</a><br>
+  <a href="equinox_args.htm">Arguments Tab</a><br>
+  <a href="equinox_settings.htm">Settings Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_configuration.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_configuration.htm
deleted file mode 100644
index c067864..0000000
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_configuration.htm
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>JUnit Plug-in Configuration Tab</title>
-<link href="../../book.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
-<h1>Configuration Tab</h1>
-<p>The <strong>Configuration Tab</strong> is an advanced tab that lets you override the default configuration area location and the <em>config.ini</em> file content of the runtime Eclipse application you are testing. </p>
-<h1><img src="../../images/launchers/launcher_junit_configuration.PNG" alt="JUnit Configuration" ></h1>
-
-<h2>Configuration Area</h2>
-<p>Every Eclipse application instance has a unique configuration area which contains metadata, caches and configuration files read by the runtime and <em>Update Manager</em> upon startup.</p>
-<p>Typically, the location of the configuration is not important; therefore, PDE generates a unique configuration area in its own metadata area. </p>
-<p>By default, this area is reused by all <em>JUnit Plug-in Test</em> launch configurations and deleted when the launch configuration is deleted. That is why the option to <strong>Clear the configuration area before launching</strong> is on by default. </p>
-<p>If desired, the user can set the location of the configuration area. Variables in the directory path are supported in order to make launch configurations sharable among team members.</p>
-
-<h2>Configuration File</h2>
-<p> Upon startup, the runtime reads a configuration file named <em>config.ini</em> located in a <em>configuration/</em> subdirectory of the configuration area associated with the Eclipse application instance. This file is a standard properties file that can configure many aspects of the runtime. For a full list of the supported properties, refer to the <a href="../../../../org.eclipse.platform.doc.isv/reference/misc/runtime-options.html">Eclipse runtime options</a> document.</p>
-<p>The <strong>Generate a config.ini file with default content</strong> is the default option and is recommended unless you have some very specific needs.  When this option is selected, PDE generates a <em>config.ini</em> file with the following properties:</p>
-<ul>
-    <li><strong>osgi.bundles</strong> - lists all the bundles that should be installed and optionally started once the system is up and running. This list is based on the <em>osgi.bundles</em> key found in the <em>${target_home}/configuration/config.ini</em> file.  (Note, the ${target_home} variable is the location of the target platform).</li>
-  <li><strong>osgi.bundles.defaultStartLevel</strong> - denotes the default OSGi start level at which a bundle should start.  The default value is set to <strong>4</strong></li>
-  <li><strong>osgi.configuration.cascaded</strong> - indicates whether this configuration is standalone or has a parent configuration to cascade up to.  The default value is set to false.</li>
-  <li><strong>osgi.framework</strong> - specifies the URL location of the <em>org.eclipse.osgi</em> plug-in</li>
-  <li><strong>osgi.install.area</strong> - specifies the location of the target platform. </li>
-  <li><strong>osgi.splashPath</strong> - specifies one or more locations of the splash screen.</li>
-</ul>
-<p>The <strong>Use an existing config.ini file as a template</strong> option takes an existing <em>config.ini</em> and makes a copy of it. PDE neither adds nor removes any properties from the file.  However, PDE modifies the <strong>osgi.bundles</strong> and <strong>osgi.splashPath</strong> keys by substituting their generic bundle URL values with absolute paths that reflect the actual locations of bundles on disk.</p>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm
index 9927984..1fce9e9 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm
@@ -28,13 +28,19 @@
 <ul>
   <li><a href="junit_test.htm">Test Tab</a></li>
   <li><a href="junit_main.htm">Main Tab  </a></li>
-  <li><a href="junit_plugins.htm">Plug-ins Tab</a></li>
-  <li><a href="eclipse_args.htm">Arguments Tab </a></li>
-  <li><a href="junit_configuration.htm">Configuration Tab </a></li>
+  <li><a href="plugins.htm">Plug-ins Tab</a></li>
+  <li><a href="arguments.htm">Arguments Tab </a></li>
+  <li><a href="configuration.htm">Configuration Tab </a></li>
   <li><a href="tracing.htm">Tracing Tab</a></li>
   <li><a href="environment.htm">Environment Tab</a></li>
   <li><a href="common.htm">Common Tab</a></li>
 </ul>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a>
+</p>
+
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_main.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_main.htm
index e7e8503..e195aea 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_main.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_main.htm
@@ -46,6 +46,20 @@
   <li><a href="../../../../org.eclipse.platform.doc.isv/reference/misc/runtime-options.html">Eclipse Runtime Options </a></li>
 </ul>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="junit_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
 
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_plugins.htm
deleted file mode 100644
index 5f85fd2..0000000
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_plugins.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>JUnit Plug-ins Tab</title>
-<link href="../../book.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
-<h1>Plug-ins Tab</h1>
-<p>When testing your plug-in, you have the ability to manage and select the list of plug-ins that you want to launch with on the <strong>Plug-ins Tab</strong> of the launch configuration. </p>
-<p><img src="../../images/launchers/launcher_junit_plugins.png" alt="JUnit Plug-ins Tab" ></p>
-
-<h2>Launch Options </h2>
-<p>The <strong>Launch with</strong> combo box allows you to configure the way the JUnit Plug-in Test is launched. The options are explained in more detail below.</p>
-<p>The <strong>all workspace and enabled external plug-ins</strong> option is the default setting. With this option, the runtime Eclipse application you are launching will be made up of all the workspace plug-ins and all the plug-ins that are explicitly checked on the <strong>Window &gt; Preferences... &gt; Plug-in Development &gt; Target Platform</strong> preference page. This option requires little maintenance because the list of plug-ins is maintained by PDE and updated prior to every launch as plug-ins are created or deleted in the workspace. This option is recommended when the <strong>Program to Run</strong> setting on the <a href="junit_main.htm">Main tab</a> of the launch configuration is set to the <strong>default product</strong> or <strong>default application</strong> of your target. </p>
-<p>The <strong>plug-ins selected below only</strong> option is typically used when you are in <strong>headless</strong> mode or when you are testing an RCP application that uses a subset of the plug-ins from the workspace and target. This setting requires more maintenance than the other options since, you have to ensure the list of selected plug-ins is up-to-date when you add or remove a plug-in from the workspace. There are several buttons available to help you select plug-ins, including an <strong>Add Required Plug-ins</strong> button.  The <strong>Add Required Plug-ins</strong> button should be used often to ensure the subset of plug-ins you have selected is complete. </p>
-<p>Please note that if a workspace plug-in has the same ID as a target plug-in, the workspace plug-in overrides its target counterpart. This behavior can be overridden when using the second option; since, you can deselect a workspace plug-in and select its target counterpart. </p>
-
-<h2>Validate Plug-ins</h2>
-<p>The <strong>Validate Plug-ins</strong> functionality, which can be invoked via the button located at the bottom right corner of the <strong>Plug-ins tab</strong>, analyzes the selected set of plug-ins to find launching startup problems. For instance, missing dependencies, unsatisfied execution environments, incompatible platform filters are a few of the potential problems that may prevent your plug-in from running.</p>
-<p>By checking the <strong>Validate plug-ins automatically prior to launching</strong> option, PDE will run the <strong>Validate Plug-ins</strong> function prior to every launch. If problems are found, an error dialog will appear for you to examine and you can choose to either continue the launch without correcting the problems or cancel the launch to rectify the issues. Otherwise, if no problems are found, the launch proceeds as normal. </p>
-
-</body>
-</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_test.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_test.htm
index ff37716..9900fe4 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_test.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/junit_test.htm
@@ -25,6 +25,21 @@
   <li><strong>JUnit 4</strong>:   uses <em>JUnit 4.1.0</em> and is available only if you are running Eclipse with a JRE version that is greater than or equal to 1.5.</li>
 </ul>
 
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="junit_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/plugins.htm
new file mode 100755
index 0000000..9ea7944
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/plugins.htm
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Plug-ins Tab</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Plug-ins Tab</h1>
+<p>When testing your plug-in, you have the ability to manage and select the list of plug-ins that you want to launch with on the  <strong>Plug-ins Tab</strong> of the launch configuration. </p>
+<p><img src="../../images/launchers/launcher_eclipse_plugins.png" alt="Plug-ins tab" ></p>
+
+<h2>Launch Options </h2>
+<p>The <strong>Launch with</strong> combo box allows you to configure the way the Eclipse Application is launched. The options are explained in more detail below.</p>
+<p>The <strong>all workspace and enabled external plug-ins</strong> option is the default setting. With this option, the runtime Eclipse application you are launching will be made up of all the workspace plug-ins and all the plug-ins that are explicitly checked on the <strong>Window &gt; Preferences... &gt; Plug-in Development &gt; Target Platform</strong> preference page. This option requires little maintenance because the list of plug-ins is maintained by PDE and updated prior to every launch as plug-ins are created or deleted in the workspace. This option is recommended when the <strong>Program to Run</strong> setting on the <a href="eclipse_main.htm">Main tab</a> of the launch configuration is set to the <strong>default product</strong> or <strong>default application</strong> of your target. </p>
+<p>The <strong>plug-ins selected below only</strong> option is typically used when you are testing an RCP application that uses a subset of the plug-ins from the workspace and target. This setting requires more maintenance than the other options, since you have to ensure that the list of selected plug-ins is up-to-date when you add or remove a plug-in from the workspace. <strong>Add Required Plug-ins</strong> should be used to ensure the subset of plug-ins you have selected is complete.</p>
+<p>The <strong>features selected below</strong> option can be used to launch an RCP application by specifying features. It also allows to specify the location from where the feature plug-ins should be picked - Workspace or External (Target Platform). The plug-in resolution is first find location. Thus, if a plug-in marked for Workspace is not found there, then it is searched in External location and vice-versa. Select <strong>Add Plug-ins...</strong> to add individual plug-ins to the launch configuration. <strong>Select Required</strong> will look for the dependent features of the presently selected features and add them also to the configuration. If there are many features, <strong>Select Features...</strong> can be used to find and select specific features.</p>
+<p>Feature-based configurations launch with plug-ins resolved from the selected features and any additional plug-ins <em>as well as </em> all required plug-ins.  This means that a minimal set of features/plug-ins can be selected and still have a valid launch.</p>
+<p><img src="../../images/launchers/launcher_eclipse_features.png" alt="Plug-ins tab" ></p>
+<p>Please note that if a workspace plug-in has the same ID as a target plug-in, the workspace plug-in is used in place of its target counterpart. This behavior applies to all three plug-in selection options described above; however, you can override this option by choosing the third option, deselecting a workspace plug-in and selecting the target plug-in with the same ID. </p>
+
+<h2>Validate Plug-ins</h2>
+<p>Selecting <strong>Validate Plug-ins</strong> analyzes the selected set of plug-ins to find launching startup problems. For instance, missing dependencies, unsatisfied execution environments, incompatible platform filters are a few of the potential problems that may prevent your plug-in from running.</p>
+<p>By checking the <strong>Validate plug-ins automatically prior to launching</strong> option, PDE will run the <strong>Validate Plug-ins</strong> function prior to every launch. If problems are found, an error dialog will appear for you to examine and you can choose to either continue the launch without correcting the problems or cancel the launch to rectify the issues. Otherwise, if no problems are found, the launch proceeds as normal. </p>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/tracing.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/tracing.htm
index 94afb1e..3697121 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/tracing.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/tracing.htm
@@ -32,9 +32,22 @@
 <h2>Enable Tracing </h2>
 <p>When the  <strong>Enable tracing for the selected  plug-ins</strong> option is checked, PDE launches with the <em>-debug &lt;filename&gt;</em> program argument.  The <em>&lt;filename&gt;</em> portion of the program argument is a properties file generated by PDE that contains both key-value pairs for the plug-ins you are tracing and the state of each tracing flag.</p>
 <p>Please note that toggling tracing flags on the <strong>Tracing tab</strong> does not result in the modification of the <em>.options</em> file. The tracing flag values are saved as metadata in the launch configuration itself and are copied into the master properties file that is passed to the runtime via the <em>-debug</em> argument.</p>
-<br>
-<br>
-<br>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
+<p>
+  <a href="eclipse_application_launcher.htm">Eclipse Application Launcher</a><br>
+  <a href="junit_launcher.htm">JUnit Plug-in Test Launcher</a><br>
+  <a href="equinox_launcher.htm">OSGi Framework Launcher</a><br>
+  <a href="junit_test.htm">Junit Launcher Test Tab</a><br>
+  <a href="eclipse_main.htm">Main Tab</a><br>
+  <a href="arguments.htm">Arguments Tab</a><br>
+  <a href="plugins.htm">Plug-ins Tab</a><br>
+  <a href="configuration.htm">Configuration Tab</a><br>
+  <a href="tracing.htm">Tracing Tab</a><br>
+  <a href="environment.htm">Environment Tab</a><br>
+  <a href="common.htm">Common Tab</a>
+</p>
+
 </body>
 
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/preference_pages/plug_in_development.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/preference_pages/plug_in_development.htm
index 441a2d0..7059a21 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/preference_pages/plug_in_development.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/preference_pages/plug_in_development.htm
@@ -2,11 +2,12 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
 <title>General Plug-in Development Preferences</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
 </head>
-
 <body>
 <h1>General Plug-in Development Preferences</h1>
 <p>The  Plug-in Development preference page provides global settings that control:</p>
@@ -17,13 +18,22 @@
 
 <p><img src="../../images/preferences/plugin_development.png" alt="Main Preference Page" ></p>
 
-<h2>Presentation Label Preference </h2>
+<h2>Presentation Labels</h2>
 <p>By default, whenever a plug-in or a feature is presented in the UI (i.e. in the outline view, Plug-ins view, editors, etc.), the label shows the plug-in or feature ID followed by the plug-in or feature version. </p>
 <p>The <strong>Presentation Label</strong> preference is a global setting that allows you to show an alternate label for plug-ins and features composed of the (translated) name of the plug-in or feature followed by the plug-in or feature version.</p>
 
-<h2>Automated Management of Dependencies Preference </h2>
-<p>With the<a href="../editors/manifest_editor/automated_management.htm"> Automated Management of Dependencies</a> workflow, it is the user's responsibility to explicitly invoke the function that analyzes the plug-in code and generates the correct dependencies for the plug-in <em>MANIFEST.MF</em> file. Neglecting to update the manifests may result in class loading errors when testing the plug-in. </p>
-<p>With the <strong>Automated Management of Dependencies</strong> preference selected, PDE checks all the manifest files in your workspace and makes necessary updates to the manifests prior to launching. This option is a great convenience, but it is off by default because it presents an overhead in the time to launch. </p>
+<h2>Automated Management of Dependencies</h2>
+<p>With automated management of dependencies it is the user's responsibility to explicitly invoke the function that analyzes the plug-in code and generates the correct dependencies for the plug-in <em>MANIFEST.MF</em> file. Neglecting to update the manifests may result in class loading errors when testing the plug-in. </p>
+<p>The <strong>Update stale manifest files prior to launching</strong> preference will have PDE check all the manifest files in your workspace and make necessary updates to the manifests prior to launching.  This option is off by default as it decreases launch performance.</p>
+
+<h2>Exporting</h2>
+<p>Export Wizard creates a build.xml file when a plug-in is being exported. If the <strong>Prompt before overwriting build.xml files when exporting</strong> preference is selected, the user is prompted for confirmation before overwriting this file. This preference is used to preserve any custom changes made by the user.</p>  
+
+<h2>Source</h2>
+<p>When <strong>Show source plug-ins</strong> preference is selected, the source plug-ins too are displayed on Plug-ins tab of Eclipse Application launch configuration and on plug-ins import wizard.</p>
 
+<h2>Target Definitions</h2>
+<p>If <strong>Prompt before deleting a target definition file</strong> is selected, you will be prompted before a target definition file is deleted when <strong>Remove</strong> is pressed on the <a href="target_platform.htm">Target Platform</a> preference page.</p>
+<p>If <strong>Include all plug-ins from target in Java search</strong> is selected, all the plug-ins from the active target platform will be added to the Java search scope.  Adding plug-ins to the java search scope will allow the plug-in contents to show up when doing Java searches and using the Open Type Dialog.  When this option is on, if any plug-in is removed from Java search, the preference will be turned off.</p>  
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm
index b8cc39a..667f787 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Content Tab</title>
 <link rel="stylesheet" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -14,7 +14,7 @@
 
 <p>The <strong>Content Tab</strong> in the <a href="./edit_target_wizard.htm">Edit Target Wizard</a> is used to set a subset of plug-ins to include in the target platform.  The tab displays a list of all plug-ins available in the target definition's <a href="./edit_target_locations_tab.htm">locations</a>.  Only the plug-ins checked on this tab will be included.  There are multiple ways to organize and filter the list.  The target content can also be edited on the <a href="../editors/target_editor/content_page.htm">Content Page</a> of the <a href="../editors/target_editor/target_editor.htm">Target Editor</a>.</p>
 
-<img src="../../images/target_shared/edit_target_content_tab.png" alt="Location Tab">
+<p><img src="../../images/target_shared/edit_target_content_tab.png" alt="Content Tab"></p>
 
 <p><strong>Select / Deselect</strong> will check or uncheck the selected plug-ins. </p>
 
@@ -31,6 +31,17 @@
 <li><strong>Location</strong> - Grouped by the locations set on the <a href="edit_target_locations_tab.htm">locations tab</a></li>
 </ol>
 
+<h2>Managing Content with Features</h2>
+
+<p>On the right hand side, you can choose between two different modes to manage the content of the target.  By default targets
+are managed using a list of plug-ins.  Selecting <strong>Features</strong> will change your target contents to a list of features.</p>
+
+<p><img src="../../images/target_shared/edit_target_content_tab_feature_mode.png" alt="Content Tab Feature Mode"></p>
+
+<p>You can select features in the same way as when managing by plug-ins.  <strong>Add Required</strong> will select any features that the currently
+selected features have in their <em>include</em> or <em>require</em> entries.  If there are plug-ins in the target that do not belong to a
+feature, they will be listed under the <em>Other Plug-ins</em> item and can be selected individually.</p>
+
 <p><img src="../../../images/ngrelr.png" alt="Related reference"></p>
 <p>
 <a href="./edit_target_wizard.htm">Edit Target Wizard</a><br>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm
index e7ff3f9..1c05d7c 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm
@@ -2,7 +2,7 @@
 "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) 2009, 2010 IBM Corporation and others. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Target Platform State</title>
 <script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
@@ -13,7 +13,7 @@
 <h1>Target Platform State</h1>
 <p>The <strong>Target Platform State View</strong> shows the current status of the resolver state in PDE.</p>
 
-<p>The view is available under <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.pde.ui.TargetPlatformStateView)")'>
+<p>The view is available under <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.pde.ui.TargetPlatformState)")'>
 <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Open the Target Platform State view">
 <strong>Window &gt; Show View &gt; Other... &gt; Plug-in Development &gt; Target Platform State</strong>
 </a>.</p>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/notices.html b/eclipse/plugins/org.eclipse.pde.doc.user/notices.html
index b81cc5e..8008473 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/notices.html
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/notices.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="STYLESHEET" href="book.css" type="text/css">
@@ -13,7 +13,7 @@
 <h3>
 <a name="Notices"></a>Notices</h3>
 <p>
-The material in this guide is Copyright (c) IBM Corporation and others 2000, 2009.
+The material in this guide is Copyright (c) IBM Corporation and others 2000, 2010.
 </p>
 <p>
 <a href="about.html">Terms and conditions regarding the use of this guide.</a>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/pdeOptions.txt b/eclipse/plugins/org.eclipse.pde.doc.user/pdeOptions.txt
index a4c3b00..bf4e83d 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/pdeOptions.txt
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/pdeOptions.txt
@@ -59,7 +59,7 @@
 -windowtitle "Eclipse PDE API Specification"
 -doctitle "Eclipse PDE API Specification"
 -header "<b>Eclipse PDE</b><br>Release 3.6"
--bottom "Copyright (c) IBM Corp. and others 2000, 2010.  All Rights Reserved."
+-bottom '<font size="-1"><p><a href="{@docRoot}/../misc/api-usage-rules.html">Guidelines for using Eclipse APIs</a>.</p><p>Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.</p></font>'
 -link http://java.sun.com/j2se/1.4/docs/api
 -linkoffline ./../../../org.eclipse.platform.doc.isv/reference/api ../org.eclipse.platform.doc.isv/reference/api
 -linkoffline ./../../../org.eclipse.jdt.doc.isv/reference/api ../org.eclipse.jdt.doc.isv/reference/api
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-ant-task.htm
index 2dcc2ed..889276d 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -16,7 +16,7 @@
 
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.analysis</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.analysis</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre style="margin-left: 40px">
@@ -175,15 +175,17 @@ The keys can be found in org.eclipse.pde.api.tools.internal.provisional.problems
 It will use the exclude list and the <code>.api_filter</code> files located in <code>D:\exclude_list_external.txt</code> and 
 <code>D:\filters</code> to reduce the number of problems to report.</p>
 <p>Problem severities will be generated as specified by <code>D:\tests_api\org.eclipse.pde.api.tools.prefs</code>.</p>
-<p>Since debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>Since debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
+<p><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm
index 90e3f37..693942c 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -11,11 +11,11 @@
 <body>
 <h1> API Tools Analysis Report Conversion Ant Task </h1>
 <h2>Purpose</h2>
-<p>This task converts  XML reports created by the <code>apitooling.analysis</code> ant task into HTML files.
+<p>This task converts  XML reports created by the <code>apitooling.analysis</code> Ant task into HTML files.
 </p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.analysis_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.analysis_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre style="margin-left: 40px">
@@ -70,14 +70,16 @@ classpath.</p>
 <p>This will create an <code>index.html</code> inside the folder <code>D:\reports\html</code>. A report for each
 bundle will be created inside a sub-folder of <code>D:\reports\html</code>. Each sub-folder will contain a 
 <code>report.html</code>.</p>
-<p>Since debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>Since debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a></p>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a></p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-ant-task.htm
index 01083a6..0f429f7 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -15,7 +15,7 @@
 This task is intended to validate no API changes occur after an API freeze. </p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apifreeze</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apifreeze</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre style="margin-left: 40px">
@@ -112,14 +112,16 @@ org.eclipse.ui.workbench_3.4.0:org.eclipse.ui.ISharedImages#IMG_ELCL_COLLAPSEALL
 </pre>
 <p>This will run the task creating <code>report.xml</code> inside the folder <code>D:\report</code>.
 It will use the exclude list <code>D:\exclude_list_external.txt</code> to reduce the number of problems to report.</p>
-<p>Since debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>Since debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a></p>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a></p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm
index 101548e..7eec00b 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -11,10 +11,10 @@
 <body>
 <h1> API Tools API Freeze Report Conversion Ant Task </h1>
 <h2>Purpose</h2>
-<p>This task converts the XML report created by the <code>apitooling.apifreeze</code> ant task into an HTML file.</p>
+<p>This task converts the XML report created by the <code>apitooling.apifreeze</code> Ant task into an HTML file.</p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apifreeze_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apifreeze_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre style="margin-left: 40px">
@@ -67,15 +67,17 @@ classpath.</p>
 </pre>
 <p>This will run the task creating <code>report.html</code> inside the folder <code>D:\report</code> as the
 htmlfile attribute is not set.</p>
-<p>Since debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>Since debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">AAPI Freeze Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm
index 11d92c9..ae30ef4 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -16,7 +16,7 @@ given candidate product release and reports any unresolved references.</p>
 
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apimigration</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apimigration</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <pre>
 	<b><font color="#0000ff">&lt;apitooling.apimigration
@@ -128,17 +128,19 @@ classpath.</p>
 	/&gt;</font></b>
 </pre>
 <p>This will run the task creating <code>*.xml</code> files inside the folder <code>/eclipse/apimigration/xml</code>.
-The task will re-resolve all references in the usescan location - defined by the regular expression <code>.*</code> - against 
-the candidate product whose identifier begins with org.eclipse (defined by the <code>org\.eclipse.*</code> regular expression).
-<p>If debug is enabled, some debug tracing will show up in the ant console.</p>
+The task will re-resolve all references in the <code>usescan</code> location - defined by the regular expression <code>.*</code> - against 
+the candidate product whose identifier begins with org.eclipse (defined by the <code>org\.eclipse.*</code> regular expression).</p>
+<p>If debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
-<br><a href="apimigration-reportconversion-ant-task.htm">API Tools Use Migration Report Conversion Ant Task</a>
+<p><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
+<br><a href="apimigration-reportconversion-ant-task.htm">API Use Migration Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm
index bcc4d9c..1cecb31 100755
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -11,10 +11,10 @@
 <body>
 <h1> API Use Migration Report Conversion Ant Task </h1>
 <h2>Purpose</h2>
-<p>This task converts the XML report created by the <code>apitooling.apimigration</code> ant task into HTML files.</p>
+<p>This task converts the XML report created by the <code>apitooling.apimigration</code> Ant task into HTML files.</p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apimigration_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apimigration_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre>
@@ -105,16 +105,18 @@ classpath.</p>
 </pre>
 <p>This will run the task creating <code>*.html</code> files inside the folder <code>/eclipse/apimigration-both/HTML</code> corresponding 
 to the folder structure of the XML file location</p>
-<p>If debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>If debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
-<br><a href="apimigration-ant-task.htm">API Tools API Use Migration Ant Task</a>
-<br><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
+<br><a href="apimigration-ant-task.htm">API Use Migration Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-ant-task.htm
index 563281c..a1eef2b 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-ant-task.htm
@@ -16,7 +16,7 @@
 
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apiuse</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apiuse</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <pre>
 	<b><font color="#0000ff">&lt;apitooling.apiuse
@@ -166,16 +166,18 @@ classpath.</p>
 </pre>
 <p>This will run the task creating <code>*.xml</code> files inside the folder <code>/eclipse/apiuse-both/XML</code>.
 The task will search all bundles in the product location - defined by the regular expression <code>.*</code> - searching 
-for all references to any bundles whose identifier begins with org.eclipse (defined by the <code>org\.eclipse.*</code> regular expression).
+for all references to any bundles whose identifier begins with org.eclipse (defined by the <code>org\.eclipse.*</code> regular expression).</p>
 <p>While scanning, any class files found in the /libs/contributed.jar archive inside org.eclipse.test.bundle will be ignored.</p>
-<p>If debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>If debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
+<p><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm
index 012e703..af71bd7 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -11,10 +11,10 @@
 <body>
 <h1> API Use Report Conversion Ant Task </h1>
 <h2>Purpose</h2>
-<p>This task converts the XML report created by the <code>apitooling.apiuse</code> ant task into HTML files.</p>
+<p>This task converts the XML report created by the <code>apitooling.apiuse</code> Ant task into HTML files.</p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apiuse_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apiuse_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre>
@@ -105,14 +105,16 @@ classpath.</p>
 </pre>
 <p>This will run the task creating <code>*.html</code> files inside the folder <code>/eclipse/apiuse-both/HTML</code> corresponding 
 to the folder structure of the XML file location</p>
-<p>If debug is enabled, some debug tracing will show up in the ant console.</p>
+<p>If debug is enabled, some debug tracing will show up in the Ant console.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="filegeneration-ant-task.htm">API Tools File Generation Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-ant-task.htm
new file mode 100755
index 0000000..3dd92d3
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-ant-task.htm
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="stylesheet" href="../../../apache_style.css" type="text/css">
+<title>API Tools API Deprecation Ant Task</title>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
+</head>
+<body>
+<h1> API Deprecation Ant Task </h1>
+<h2>Purpose</h2>
+<p>This task runs a complete API analysis of an API profile relative to a baseline - looking only for members (classes, fields, methods) that have been deprecated / un-deprecated. The profile is the current state of a product under development. The profile is compared to an API baseline for deprecation changes (usually the previous release of a product). </p>
+
+<h2>Usage</h2>
+<h3>Description</h3>
+<p>The name of the Ant task is: <code>apitooling.apideprecation</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
+classpath.</p>
+<div style="text-align: left;">
+<pre style="margin-left: 40px">
+<b><font color="#0000ff">&lt;apitooling.apideprecation
+	baseline=<font color="#008000">"..."</font>
+	profile=<font color="#008000">"..."</font>
+	report=<font color="#008000">"..."</font>
+	excludelist=<font color="#008000">"..."</font>
+	debug=<font color="#008000">"..."</font>
+	eefile=<font color="#008000">"..."</font>
+/&gt;</font></b>
+</pre>
+</div>
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+  <tr>
+    <td valign="top"><b>Attribute</b></td>
+    <td valign="top"><b>Description</b></td>
+    <td align="center" valign="top"><b>Required</b></td>
+  </tr>
+<tr>
+<td valign="top">baseline</td>
+<td valign="top">This attribute specifies the location of the reference baseline.
+<br><br>It can be a .zip, .jar, .tgz, .tar.gz file, or a directory that corresponds to the Eclipse installation folder. This is the 
+directory is which you can find the Eclipse executable.
+<br><br>The location is specified using an absolute path.
+</td>
+<td align="center" valign="top">Yes</td>
+</tr>
+<tr>
+<td valign="top">profile</td>
+<td valign="top">This attribute specifies the location of the current product or profile that you want to compare against the reference baseline.
+<br><br>
+It can be a .zip, .jar, .tgz, .tar.gz file, or a directory that corresponds to the Eclipse installation folder. This is the 
+directory is which you can find the Eclipse executable.
+<br><br>The location is specified using an absolute path.
+</td>
+<td align="center" valign="top">Yes</td>
+</tr>
+<tr>
+<td valign="top">report</td>
+<td valign="top">Set the output location where the reports will be generated.
+<br><br>
+Once the task is completed, reports are available in this directory using a structure similar to the filter root. A sub-folder is created
+for each component that has problems to be reported. Each sub-folder contains a file called "report.xml".
+<br><br>A special folder called "allNonApiBundles" is also created in this folder which also contains a file called "report.xml".
+This file lists all the bundles that are not using the API Tooling nature.
+<br><br>The location is specified using an absolute path. 
+</td>
+<td align="center" valign="top">Yes</td>
+</tr>
+<tr>
+<td valign="top">excludelist</td>
+<td valign="top">Set the exclude list location. 
+<br><br>The exclude list is used to know what bundles should excluded from the xml report generated by the task execution.
+The lines that start with '#' are ignored from the excluded elements.
+<br>The location is specified using an absolute path.
+<br>The format of the exclude list file looks like this:
+<pre>
+ # DOC BUNDLES
+ org.eclipse.jdt.doc.isv
+ org.eclipse.jdt.doc.user
+ org.eclipse.pde.doc.user
+ org.eclipse.platform.doc.isv
+ org.eclipse.platform.doc.user
+ # NON-ECLIPSE BUNDLES
+ com.ibm.icu
+ com.jcraft.jsch
+ javax.servlet
+ javax.servlet.jsp
+ ...
+</pre>
+</td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">debug</td>
+<td valign="top">Set the debug value.
+<br><br>The possible values are: <code>true</code>, <code>false</code>
+<br>Default is <code>false</code>.
+</td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">eefile</td>
+<td valign="top">Set the execution environment file to use. 
+<br><br>By default, an execution environment file corresponding to a JavaSE-1.6 execution environment is used.
+<br><br>The format of the file is described in this <a href="http://wiki.eclipse.org/index.php/Execution_Environment_Descriptions" target="blank">wiki page</a>.
+<br><br>The file is specified using an absolute path.
+</td>
+<td align="center" valign="top">No</td>
+</tr>
+</table>
+
+<h3>Examples</h3>
+
+<pre>
+	<b><font color="#0000ff">&lt;apitooling.apideprecation
+		baseline=<font color="#008000">"D:\eclipse\3.4.1\eclipse"</font>
+		profile=<font color="#008000">"D:\eclipse-SDK-I20081118-0800-linux-gtk.tar.gz"</font>
+		report=<font color="#008000">"D:\reports\xml"</font>
+		excludelist=<font color="#008000">"D:\exclude_list_external.txt"</font>
+		debug=<font color="#008000">"true"</font>
+	/&gt;</font></b>
+</pre>
+<p>This will run the task creating <code>report.xml</code> files inside the folder <code>D:\reports\xml</code>.
+It will use the exclude list to reduce the number of problems to report.</p>
+<p>Since debug is enabled, some debug tracing will show up in the Ant console.</p>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
+<p><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm
new file mode 100755
index 0000000..3915797
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="stylesheet" href="../../../apache_style.css" type="text/css">
+<title>API Deprecation Report Conversion Ant Task</title>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
+</head>
+<body>
+<h1> API Deprecation Report Conversion Ant Task </h1>
+<h2>Purpose</h2>
+<p>This task converts the XML report created by the <code>apitooling.apideprecation</code> Ant task into HTML files.</p>
+<h2>Usage</h2>
+<h3>Description</h3>
+<p>The name of the Ant task is: <code>apitooling.apideprecation_reportconversion</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
+classpath.</p>
+<div style="text-align: left;">
+<pre>
+	<b><font color="#0000ff">&lt;apitooling.apideprecation_reportconversion
+		xmlfiles=<font color="#008000">"..."</font>
+		htmlfiles=<font color="#008000">"..."</font>
+		debug=<font color="#008000">"..."</font>
+	/&gt;</font></b>
+</pre>
+</div>
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+  <tr>
+    <td valign="top"><b>Attribute</b></td>
+    <td valign="top"><b>Description</b></td>
+    <td align="center" valign="top"><b>Required</b></td>
+  </tr>
+<tr>
+	<td valign="top">xmlfiles</td>
+	<td valign="top">This attribute specifies the location of the xml files to convert.
+	<br><br>
+	The location is specified using an absolute path.
+	</td>
+	<td align="center" valign="top">Yes</td>
+</tr>
+<tr>
+	<td valign="top">htmlfiles</td>
+	<td valign="top">This attribute specifies the location of the html files to generate.
+	<br><br>
+	The location is specified using an absolute path.
+	</td>
+	<td align="center" valign="top">Yes</td>
+</tr>
+<tr>
+	<td valign="top">debug</td>
+	<td valign="top">Set the debug value.
+	<br><br>The possible values are: <code>true</code>, <code>false</code>
+	<br>Default is <code>false</code>.
+	</td>
+	<td align="center" valign="top">No</td>
+</tr>
+</table>
+
+<h3>Examples</h3>
+
+<pre>
+	<b><font color="#0000ff">&lt;apitooling.apideprecation_reportconversion
+		xmlfiles=<font color="#008000">"/eclipse/deprecation/XML"</font>
+		htmlfiles=<font color="#008000">"/eclipse/deprecation/HTML"</font>
+		debug=<font color="#008000">"true"</font>
+	/&gt;</font></b>
+</pre>
+<p>This will run the task creating <code>*.html</code> files inside the folder <code>/eclipse/deprecation/HTML</code> corresponding 
+to the folder structure of the XML file location</p>
+<p>If debug is enabled, some debug tracing will show up in the Ant console.</p>
+
+<p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="filegeneration-ant-task.htm">File Generation Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/filegeneration-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/filegeneration-ant-task.htm
index 5a0564c..d8744c0 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/filegeneration-ant-task.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/filegeneration-ant-task.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../../../apache_style.css" type="text/css">
@@ -18,7 +18,7 @@ that have an Api Tooling nature.
 <p>Right now, only the file called <code>.api_description</code> is created.</p>
 <h2>Usage</h2>
 <h3>Description</h3>
-<p>The name of the ant task is: <code>apitooling.apigeneration</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the ant
+<p>The name of the Ant task is: <code>apitooling.apigeneration</code>. To be used, the jar file <code>apitooling-ant.jar</code> has to be on the Ant
 classpath.</p>
 <div style="text-align: left;">
 <pre style="margin-left: 40px">
@@ -81,7 +81,9 @@ They are separated by the platform path separator. Each entry must exist.
 <td valign="top">Set the extra manifest files' locations.
 <br><br>This is a list of extra MANIFEST.MF files' locations that can be set to provide more api
  packages to scan. They are separated by the platform path separator. Each entry must exist.
-<br><br>They should be specified using absolute paths.
+<br><br>If the path is not absolute, it will be resolved relative to the current working directory.
+<br><br>Jar files can be specified instead of MANIFEST.MF file. If a jar file is specified, its MANIFEST.MF file
+will be read if it exists.
 </td>
 <td align="center" valign="top">No</td>
 </tr>
@@ -112,12 +114,14 @@ on the source contained in <code>d:\eclipse\org.eclipse.jdt.core</code> and the
 <code>d:\eclipse\org.eclipse.jdt.core\bin</code>.</p>
 
 <p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
-<p><a href="analysis-ant-task.htm">API Tools Analysis Ant Task</a>
-<br><a href="apifreeze-ant-task.htm">API Tools API Freeze Ant Task</a>
-<br><a href="apiuse-ant-task.htm">API Tools API Use Ant Task</a>
-<br><a href="analysis-reportconversion-ant-task.htm">API Tools Analysis Report Conversion Ant Task</a>
-<br><a href="apifreeze-reportconversion-ant-task.htm">API Tools API Freeze Report Conversion Ant Task</a>
-<br><a href="apiuse-reportconversion-ant-task.htm">API Tools API Use Report Conversion Ant Task</a>
+<p><a href="analysis-ant-task.htm">Analysis Ant Task</a>
+<br><a href="apifreeze-ant-task.htm">API Freeze Ant Task</a>
+<br><a href="apiuse-ant-task.htm">API Use Ant Task</a>
+<br><a href="analysis-reportconversion-ant-task.htm">Analysis Report Conversion Ant Task</a>
+<br><a href="apifreeze-reportconversion-ant-task.htm">API Freeze Report Conversion Ant Task</a>
+<br><a href="deprecation-ant-task.htm">API Deprecation Ant Task</a>
+<br><a href="deprecation-reportconversion-ant-task.htm">API Deprecation Report Conversion Ant Task</a>
+<br><a href="apiuse-reportconversion-ant-task.htm">API Use Report Conversion Ant Task</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-archive-page.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-archive-page.png
new file mode 100644
index 0000000..174f656
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-archive-page.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-conversion-page.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-conversion-page.png
new file mode 100644
index 0000000..5b677f0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-conversion-page.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-package-page.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-package-page.png
new file mode 100644
index 0000000..6022ff4
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard-package-page.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard.png
new file mode 100644
index 0000000..6c9a73f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/api-use-pattern-wizard.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui-patterns.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui-patterns.png
new file mode 100644
index 0000000..7c9164c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui-patterns.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui.png b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui.png
new file mode 100644
index 0000000..bae4da5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/images/use-ui.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-api-use-dialog.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-api-use-dialog.htm
new file mode 100644
index 0000000..4709267
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-api-use-dialog.htm
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+  <meta name="copyright"
+ content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=ISO-8859-1">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <link rel="STYLESHEET" href="../../../book.css" charset="ISO-8859-1" type="text/css">
+  <title>API Use Reports</title>
+  <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
+</head>
+<body>
+<h1>API Use Reports</h1>
+<p>An <b>API Use Report</b> describes a set of references from one set of bundles to another set of bundles.
+A report can be generated using the <a href="../ant-tasks/apiuse-ant-task.htm">API Use Ant Task</a>.
+A user interface is provided to configure and generate a report in the <b>External Tools</b> dialog.
+To create a new use scan configuration simply double-click the <em>API Use Report</em> configuration type.</p>
+
+<h3>API Use Report Tab</h3>
+<p>The <b>API Use Report</b> tab allows you to configure the analysis.</p>
+<p>The following example shows a configuration to extract all references to Eclipse bundles in a 3.4 installation.</p>
+
+<p><img src="../images/use-ui.png" alt="API Use Report tab" border="0"></p><br>
+
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="15%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+  	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">You can select what you want to analyze, which can be either an API baseline, target definition or a directory of bundles. 
+      You can also select to only generate HTML for an existing report. You can only select one option, with each option allowing you to configure it. I.e. you can go to the API baselines preference page to edit existing baselines if you select analyzing an API baseline.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">API Baseline</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > API Baseline</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">You can choose any API baseline from the combo box to analyze</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">Default baseline or empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Baselines...</td>
+      <td rowspan="1" colspan="1" valign="top" align="left"> Allows access to the  <b><a href="../preferences/ref-baselines.htm">API Baselines</a></b> preference page to configure the baseline to analyze.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Target Definition</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">You can choose any target definition from the combo box to analyze</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">The active target definition or empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Targets</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows access to the <b><a href="../../../guide/tools/preference_pages/target_platform.htm">Target Platform</a></b> preference page to configure the target definition to analyze.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Directory</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">You can enter the absolute path to a directory containing the bundles.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Browse...</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to browse for a folder of bundles to analyze.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Analyze > Generate HTML report for existing use scan</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to create a report for an existing scan and not have to perform the analysis again.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Search for > References to</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to specify the name (or matching RegEx) of the bundle that you want to see references to. 
+      Consider the following example: <code>org\.eclipse.*</code>. In this example we are saying that we want to see all references to any bundle that starts with the name <code>org.eclipse.</code>.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Search for > API references</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to scan for API references.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Search for > Internal references</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to scan for internal references.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">checked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Search for > Illegal API Use</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to scan for illegal API usage i.e. usage of restricted API members.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Search in > Bundles matching</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to specify the name (or matching RegEx) of the bundle(s) that you want to scan for references from i.e. a search scope. 
+      Consider the following example: <code>.*</code>. In this example we are saying that we want to search in all bundles whose name matches any character sequence. 
+      The same effect can be achieved leaving the field blank.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Report Output Location</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to specify the absolute path where any generated reports should be placed.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Browse...</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to select the location to output any reports.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Clean report directory before reporting new results</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to clear out an existing XML report location prior to the scan reporting any results. 
+      It should be noted that this option will completely remove the specified report directory if it exists, with all child directories being recursively removed as well.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Create HTML reports</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Converts all of the XML output into formatted HTML and place it in <code>&lt;report location&gt;\html</code></td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Clean HTML report location</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to clear out an existing HTML location prior to creating new reports. 
+      It should be noted that this option will completely remove the specified HTML directory if it exists, with all child directories being recursively removed as well.
+      This option only enables if you select the <b>Create HTML Reports</b> option mentioned above.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Open report when search completes</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Opens the HTML report when the analysis is complete. This option only enables if you select the <b>Create HTML Reports</b> option mentioned above.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">unchecked</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Reporting > Description</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to enter a human-readable description for the report.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">empty</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3>Patterns Tab</h3>
+<p>The <b>Patterns</b> tab allows you to create a variety of Regular Expression patterns to control the use analysis. 
+There are currently three supported kinds of patterns: 
+	<ol>
+		<li>Archive Pattern - Allows you to specify nested archives that should be ignored during analysis.</li>
+		<li>Package Pattern - Allows you to specify packages that should be API or internal without having to update your bundle manifest.</li>
+		<li>Report Conversion Pattern - Allows you to create a package name regular expression to filter references taht are reported. All reported referece are filtered
+		using their fully qualified package name.</li>
+	</ol>
+</p>
+
+<p><img src="../images/use-ui-patterns.png" alt="Patterns tab" border="0"></p><br>
+
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="15%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Add...</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to add a new pattern. This button will start the 
+      <a href="ref-apiuse-patterns-wizard.htm"><strong>Pattern wizard</strong></a>.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Edit</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to edit the currently selected pattern. Only one pattern can be edited at a time.</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Remove</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to remove the selected pattern(s). You can remove more than one pattern at a time.versio</td>
+      <td rowspan="1" colspan="1" valign="top" align="center">&nbsp;</td>
+    </tr>
+  </tbody>
+</table>
+
+<br>
+<p><img border="0" src="../../../images/ngrelt.png" alt="Related tasks"></p>
+<p> 
+<a href="../../../tasks/api_tooling_compare_to_baseline.htm">Comparing to an API baseline</a><br>
+<a href="../../../tasks/api_tooling_baseline.htm">Setting up a baseline</a>
+</p>
+<p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
+<p>
+<a href="../preferences/ref-baselines.htm">API Baselines Preferences</a><br>
+<a href="ref-apiuse-patterns-wizard.htm">API Use Patterns Wizard</a>
+</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm
new file mode 100755
index 0000000..9b48e5e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+  <meta name="copyright"
+ content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=ISO-8859-1">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <link rel="STYLESHEET" href="../../../book.css" type="text/css">
+  <title>API Use Patterns Wizard</title>
+</head>
+<body>
+<h1>API Use Patterns Wizard</h1>
+<p>This wizard helps guide you through creating regular expression patterns for controlling an API Use analysis.</p> 
+<p>To activate the wizard use the following steps:</p>
+	<ol>
+		<li>While creating a new API Use Report launch configuration, switch to the <strong>Patterns</strong> tab.</li>
+		<li>On the tab press the <strong>Add...</strong> button</li>
+	</ol>
+	
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="20%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+  	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Pattern Types</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">This listing shows all of the patterns that can be created with the wizard.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">First element in list</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Description</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Shows the human-readable description of the pattern kind selected in the <strong>Pattern Types</strong> listing.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">&nbsp;</td>
+    </tr>
+  </tbody>
+</table>
+<p>
+The first page of the wizard allows you to select what kind of pattern you would like to create. Descriptions for each pattern
+are given to help you choose - simply select the pattern and the description is displayed in the <strong>Description</strong> field. 
+</p>
+<p>
+<img src="../images/api-use-pattern-wizard.png" alt="API Use pattern wizard - pattern selection page">
+</p>
+
+<h3>Archive Patterns</h3>
+<p>
+When API use analysis is done all folders and archives within a bundle are scanned; ensuring all class files are analyzed. In some cases
+a bundle may contain an archive with old versions of class files (for example) that you do not want to be analyzed. In this case an archive pattern
+can be used to completely ignore a specific archive or all archives matching a given regular expression.
+</p>
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="20%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+  	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Bundle Name</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">The complete symbolic name of the bundle to apply this pattern to.
+      For example: <code>org.eclipse.pde.api.tools</code>.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Archive Name</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">The complete name or regular expression of the archive(s) to apply the pattern to. 
+      For example: <code>*.jar</code> - which will ignore any nested jar file.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">empty</td>
+    </tr>
+  </tbody>
+</table>
+<p>
+<img src="../images/api-use-pattern-wizard-archive-page.png" alt="API Use pattern wizard - creating archive patterns">
+</p>
+
+<h3>Package Patterns</h3>
+<p>
+When extracting references for analysis, the API Use search engine uses meta-data from the bundle to determine if a reference is internal or not. In
+some cases a bundle has not been set up to properly describe what classes are internal and which are not. A <strong>Package Pattern</strong> allows you to 
+augment these malformed bundles - only from the search engine point of view, the actual bundle is not changed in any way - to describe what is 
+or is not internal. 
+</p>
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="20%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+  	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Pattern</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">The regular expression pattern to match packages against.
+      For example: <code>.*\.internal\..*</code>.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">empty</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">API Pattern</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">If the pattern should make matching packages be considered as API or not.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">checked</td>
+    </tr>
+  </tbody>
+</table>
+<p>
+<img src="../images/api-use-pattern-wizard-package-page.png" alt="API Use pattern wizard - creating package patterns">
+</p>
+
+<h3>Report Conversion Patterns</h3>
+<p>
+When an API use analysis is complete, there can be an immense amount of information to look through. With a report conversion pattern though
+you can cut down on the reference information presented in the HTML reports to only see what you are interested in. To do so you can create
+exclusion patterns used to prune the references that are reported.
+</p>
+<table border="1" cellspacing="0" cellpadding= "5" width="100%">
+  <thead>
+    <tr>
+      <th rowspan="1" colspan="1" width="20%"> <p> Option </p></th>
+      <th rowspan="1" colspan="1"> <p> Description </p></th>
+      <th rowspan="1" colspan="1" width="5%"> <p> Default </p></th>
+    </tr>
+  </thead>
+  <tbody>
+  	<tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Filter references to this pattern</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to ignore reporting references to the pattern. 
+      For example if the pattern was <code>org\.eclipse\.jdt\..*</code>, selecting this option would not report any references made to JDT.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">selected</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Filter references from this pattern</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">Allows you to ignore reporting references to the pattern. 
+      For example if the pattern was <code>org\.eclipse\.jdt\..*</code>, selecting this option would not report any references from JDT.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">&nbsp;</td>
+    </tr>
+    <tr>
+      <td rowspan="1" colspan="1" valign="top" align="left">Pattern</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">The regular expression pattern.</td>
+      <td rowspan="1" colspan="1" valign="top" align="left">empty</td>
+    </tr>
+  </tbody>
+</table>
+<p>
+<img src="../images/api-use-pattern-wizard-conversion-page.png" alt="API Use pattern wizard - creating report conversion patterns">
+</p>
+
+<p> <img border="0" src="../../../images/ngrelt.png" alt="Related tasks" > </p>
+<p> 
+<a href="../../../tasks/api_tooling_setup.htm">Setting up API Tooling</a>
+</p>
+<p><img src="../../../images/ngrelr.png" alt="Related reference" border="0"></p>
+<p>
+<a href="../actions/ref-apitooling-setup-action.htm">API Tooling Setup Action</a><br>
+<a href="../../actions/ref-pdetools.htm">PDE Tools Menu</a><br>
+<a href="ref-api-use-dialog.htm">API Use Reports</a>
+</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/api-usage-rules.html b/eclipse/plugins/org.eclipse.pde.doc.user/reference/misc/api-usage-rules.html
similarity index 100%
copy from eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/api-usage-rules.html
copy to eclipse/plugins/org.eclipse.pde.doc.user/reference/misc/api-usage-rules.html
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_builder_config.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_builder_config.htm
index ceef898..2cd9116 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_builder_config.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_builder_config.htm
@@ -553,5 +553,21 @@ Compilation Environment</a>.</td>
     <br>
   </li>
 </ul>
+<ul>
+  <li>Other properties<br>
+    <table style="width: 100%; text-align: left;" border="1"
+ cellpadding="2" cellspacing="0">
+      <tbody>
+        <tr><td style="vertical-align: top;">generateAPIDescription<br></td>
+            <td style="vertical-align: top;">Enable automatic generation of API description files for bundles.</td>
+        </tr>
+        <tr><td style="vertical-align: top;">generateSourceReferences</td>
+            <td style="vertical-align: top;">Enable generation of Eclipse-SourceReferences headers into bundle manifests. </td>
+        </tr>
+      </tbody>
+    </table>
+    <br>
+  </li>
+</ul>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm
index 4a1ee74..e6830c8 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm
@@ -99,10 +99,12 @@ libraries;</li>
   <li> <b>jars.compile.order</b> - defines the order in which jars
 should be compiled (in case there are multiple libraries).</li>
 </ul>
+
+Compiler related options.  See also the <a href="../tasks/pde_compilation_env.htm">Controlling the Compilation Environment</a> and
+<a href="../tasks/pde_compiler_options.htm">Compiler Options</a> pages.
 <ul>
   <li><span style="font-weight: bold;">jre.compilation.profile</span> -
-set the Environment used to compile this bundle.&nbsp; (See <a
- href="../tasks/pde_compilation_env.htm">Controlling the Compilation Environment</a>)<br>
+set the Environment used to compile this bundle.&nbsp; 
   </li>
   <li><span style="font-weight: bold;">javacSource</span> - set the
 source compatibility level for compiling this bundle.&nbsp; Overrides
@@ -121,6 +123,10 @@ jre.compilation.profile.<br>
 - set the warning options to pass to the compiler.&nbsp; (See the -warn
 option in <a
  href="../../org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm">Compiling
+Java Code</a> from the JDT Plug-in Developer Guide).</li>
+<li><span style="font-weight: bold;">javacErrors.&lt;library&gt;</span>
+- set the error options to pass to the compiler.&nbsp; (See the -err option in <a
+ href="../../org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm">Compiling
 Java Code</a> from the JDT Plug-in Developer Guide).<br>
     <span style="font-weight: bold;"></span></li>
   <li><span style="font-weight: bold;">javacDefaultEncoding.&lt;library&gt;</span>
@@ -133,6 +139,13 @@ Example: <br>
     <pre>javacCustomEncodings.library.jar = src/org/foo[US-ASCII], src/org/foo/bar.java[ISO-8859-1]</pre>
     </div>
   </li>
+  <li><b>javacProjectSettings</b> - A relative path to a preference file specifying properties for the JDT Compiler.  Set to <tt>true</tt> to use the default "<i>.settings/org.eclipse.jdt.core.prefs</i>".</li>
+  <li><b>compilerArg</b> - specify custom compiler arguments</li>
+  <li><b>compilerAdapter</b> - specify a custom compiler adapter to use instead of the default org.eclipse.jdt.core.JDTCompilerAdapter</li>
+  <li><b>compilerAdapter.useLog</b> - true/false: whether or not the custom compiler adapter should receive the -log argument.</li>
+  <li><b>compilerAdapter.useArgFile</b> - true/false: whether or not the custom compiler adapter should receive the generated javaCompiler.&lt;library&gt;.args argument file.</li> 
+  <li><b>sourceFileExtensions</b> - a list of extensions (*.java, *.aj) that should be considered as source when using a custom compiler adapter.</li>
+  
 </ul>
 <p> The values
 defined for these keys ending with "includes" or "excludes" are
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_compiler_options.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_compiler_options.htm
new file mode 100755
index 0000000..ae365f5
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_compiler_options.htm
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+  <meta name="copyright"
+ content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <link rel="STYLESHEET" href="../guide/book.css" type="text/css">
+  <title>Specifying Compiler Options</title>
+</head>
+<body>
+<h1>Compiler options</h1>
+<p>PDE/Build supports a number of options to control the compiler for individual plug-ins.  For settings related to 
+source and target levels and bootclasspath, see <a href="pde_compilation_env.htm">"Setting the Compilation Environment"</a>.
+</p>
+
+<h2>Warnings and Errors</h2>
+<p>PDE/Build allows specifying custom compiler warnings and errors in the build.properties file.  These can be set on a per library basis (a single plug-in can
+contain multiple jar libraries) with the <b>javacWarnings.&lt;library&gt;</b> and <b>javacErrors.&lt;library&gt;</b> options. The values for these properties 
+are given on the <a href="../../org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm">Compiling Java Code</a> page (from the JDT Plug-in Developer Guide).</p>
+
+Example:
+<pre>		javacErrors.. = forbidden,discouraged,
+		javacWarnings.library.jar = deprecation,nullDereference
+</pre>
+
+<h3>Warnings and Errors from Project preferences</h3>
+The JDT project preferences can now also be used during PDE/Build.  PDE/Build itself is not able to read the preference files, but it is able to pass them
+to the JDT compiler which does understand them.
+
+To use this, a plug-in should specify the <b>javacProjectSettings</b> property in its build.properties file.  The value should be:
+<ul>
+<li><tt><b>javacProjectSettings=true</b></tt> :  Use the project setting specified in the default <tt>.settings/org.eclipse.jdt.core.prefs</tt> preferences file.</li>
+<li><tt><b>javacProjectSettings=path/to/jdt.prefs</b></tt> : Use the specified preference file.</li>
+</ul>
+Some projects may wish to use different warning and error settings in the workspace as compared to a releng build.  This allows a more convenient method
+of specifying these settings compared to the "javacWarnings.&lt;library&gt;" property.
+
+<h2>File Encoding</h2>
+PDE/Build can accept custom file encodings on a per library, folder or file basis.
+<ul>
+  <li><span style="font-weight: bold;">javacDefaultEncoding.&lt;library&gt;</span>
+- sets default encoding to use when compiling the given library.</li>
+  <li><span style="font-weight: bold;">javacCustomEncodings.&lt;library&gt;</span>
+- a comma separated list of
+paths and encodings to use when compiling the given library.  When specifying a folder, the encoding is used for everything contained in that folder.  When 
+specifying a file, the encoding is used for just that file.&nbsp;
+Example: <br>
+    <div style="text-align: center;">
+    <pre>javacCustomEncodings.library.jar = src/org/foo[US-ASCII], src/org/foo/bar.java[ISO-8859-1]</pre>
+    </div>
+  </li>
+</ul>
+<h2>Custom Compiler Arguments</h2>
+Custom compiler arguments can now be specified per bundle using the <b>compilerArg</b> property in the bundle's build.properties file.  This property is similar 
+to the <a href="../reference/pde_builder_config.htm">compilerArg</a> property in the builder configuration except that it affects only the single plug-in instead
+of all plug-ins.  The specific arguments here depend on the compiler being used.  The JDT compiler arguments are listed <a href="../../org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm">here</a>.
+
+<h2>Compiler Option Precedence</h2>
+There are a number of difference ways to specify different compiler options.  As a general rule, option precedence is as follows:
+<ul>
+<li>javacDefaultEncoding.&lt;library&gt; has precedence over a custom <b>-encoding</b> command line option.</li>
+<li>For general options, an option appearing later on the compiler command line overrides options specified earlier.  The options are provided to the JDT in the following order:
+<ol> 
+<li>The <b>compilerArg</b> property from the builder configuration.  (Affects all bundles).</li>
+<li>The <b>compilerArg</b> property from this plug-in's build.properties. </li>
+<li>The compiler preferences file specified with <b>javacProjectSettings</b>.</li>
+<li>The generated compiler arguments file (javaCompiler.&lt;library&gt;.args) containing file encodings, <b>javacWarnings</b>, <b>javacErrors</b> and access rules.</li> 
+</ol>
+</li>
+</ul>
+
+<h2>Using a Custom Compiler</h2>
+A bundle can now use a custom compiler by setting the <b>compilerAdapter</b> property.  The specified compiler adapter must be available in the ant environment.  The JDT compiler
+adapter used by default is <b>org.eclipse.jdt.core.JDTCompilerAdapter</b>.  One particular reason for specifying an alternate compiler is for Aspect J or Groovy bundles.  Bundles specifying
+a custom compiler adapter may need to also specify some of the following properties:
+<ul>
+<li><b>sourceFileExtensions</b> : A list of extensions that should be considered source. (eg *.java, *.aj, *.groovy).</li>
+<li><b>compilerAdapter.useLog</b> : whether or not to pass "-log" argument to the compiler</li>
+<li><b>compilerAdapter.useArgFile</b> : whether or not to pass the generated javaCompiler.&lt;library&gt;.args argument file.  (Contains access rules, file encodings and warning/error levels).</li>
+</ul>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_feature_generating_antcommandline.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_feature_generating_antcommandline.htm
index 0b42a5a..4124f1b 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_feature_generating_antcommandline.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_feature_generating_antcommandline.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
   <meta name="copyright"
- content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+ content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
   <meta http-equiv="Content-Type"
  content="text/html; charset=ISO-8859-1">
   <meta http-equiv="Content-Style-Type" content="text/css">
@@ -208,7 +208,7 @@ must sign jars for features and plug-ins. The default value is false.
 The parameters to the sign task are controlled by the following ant
 properties: sign.alias, sign.keystore and sign.storepass respectively
 being passed to the alias, keystore and storepass parameters from the
-ant <a href="http://ant.apache.org/manual/CoreTasks/signjar.html">signJar
+ant <a href="http://ant.apache.org/manual/Tasks/signjar.html">signJar
 task</a>. The default value is false;</td>
         </tr>
         <tr>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_fetch_phase.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_fetch_phase.htm
index 6737a08..112a2f6 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_fetch_phase.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_fetch_phase.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
   <meta name="copyright"
- content="Copyright (c) IBM Corporation and others 2006, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+ content="Copyright (c) IBM Corporation and others 2006, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
   <meta http-equiv="Content-Type"
  content="text/html; charset=ISO-8859-1">
   <meta http-equiv="Content-Style-Type" content="text/css">
@@ -67,7 +67,7 @@ If any of the optional arguments aren't specified, then the commas are still req
 </table>
 <h4>Map file entry for Ant GET</h4>
 <p>
-The format of a map file entry to fetch content from any URL supported by <a href="http://ant.apache.org/manual/CoreTasks/get.html">Ant GET</a> is the following:</p>
+The format of a map file entry to fetch content from any URL supported by <a href="http://ant.apache.org/manual/Tasks/get.html">Ant GET</a> is the following:</p>
 <div style="text-align: center;">
 <pre>&lt;key&gt; = GET, &lt;url&gt; [,args]</pre>
 </div>
@@ -92,24 +92,28 @@ entry to your map file for build input and PDE/Build will retrieve the artifact
 id and version of the installable unit (IU), and the URI of the repository where the IU can be found. The metadata and artifact repositories are 
 assumed to be co-located. 
 </p>
-
-<p><i>Note:</i> In the Galileo release this only works for bundles/plug-ins and not features.</p>
-
 <p>
 The format of a map file entry to fetch content via p2 is as follows:
 </p>
 <div style="text-align: center;">
-<pre>&lt;elementType&gt;@&lt;elementID&gt; = p2IU, &lt;id&gt;, &lt;version&gt;, &lt;repository&gt;</pre>
+<pre>&lt;elementType&gt;@&lt;elementID&gt; = p2IU, id=&lt;id&gt;, version=&lt;version&gt;, repository=&lt;repository&gt;</pre>
 </div>
 <ul>
 <li><tt>id</tt>, the identifier of the Installable Unit;</li>
-<li><tt>version</tt>, the version of the Installable Unit;</li>
+<li><tt>version</tt>, the version of the Installable (optional).  If not specified, the highest version available will be fetched.</li>
 <li><tt>repository</tt>, the location (URI) of the repository where the IU will be found.</li>
 </ul>
 
-Example:
+<b>Fetching features with p2</b>
+<p>In the Helios release, features can be fetched with p2 by specifying the Installable Unit representing the feature jar.  See the <a href="pde_p2_featuremetadata.htm">feature metadata</a> page 
+for details on the structure of p2 metadata for features.</p> 
+
+Examples:
 <div style="text-align: center;">
-   <pre>plugin at my.bundle.id,1.0.0=p2IU,id=my.bundle.id,version=1.0.0,repository=http:/example.eclipse.org/repo</pre>
+<pre>
+plugin at my.bundle.id,1.0.0=p2IU,id=my.bundle.id,version=1.0.0,repository=http://example.eclipse.org/repo
+feature at my.feature.id = p2IU,id=my.feature.id<b>.feature.jar</b>, version=1.0.0,repository=http://example.eclipse.org/repo
+</pre> 
 </div>
 
 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_builds.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_builds.htm
index b33e8d2..29f4896 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_builds.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_builds.htm
@@ -25,7 +25,7 @@
 
 <h2><a name="gathering_overview">Overview of the changes</a></h2>
 <h3>The build's local repository</h3>
-<p>During the build, all metadata and artifacts will be published into a build repository defined by the property <tt><b>p2.build.repo</b></tt>.  The default location for this repository is <tt>${buildDirectory}/buildRepo</tt>.</p>
+<p>During the build, all metadata and artifacts will be published into a build repository defined by the property <tt><b>p2.build.repo</b></tt>.  This property should specify a URI, the default value for this is <tt>file:${buildDirectory}/buildRepo</tt>.</p>
 <p>Once all the metadata and artifacts are published into this repository, the final assemble and packaging scripts will mirror and/or install from this repository into the locations that will become the archives produced by the build.  This final
 mirroring and installation can be skipped using <tt><b>skipMirroring</b></tt> and <tt><b>skipDirector</b></tt> properties, in which case the build results would all just be in the build repository.</p>
 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_buildtasks.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_buildtasks.htm
index 141a53b..d35c933 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_buildtasks.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_buildtasks.htm
@@ -15,14 +15,14 @@
 tasks may be usefull in special cases to publish metadata directly without running a full build. </p>
 
 <table cellspacing="1" cellpadding="2">
-	<tr><td><b><tt>eclipse.publish.featuresAndBundles</tt></b></td></tr>
+	<tr><td><b><h3>eclipse.publish.featuresAndBundles</h3></b></td></tr>
 	<tr><td><p>This task is very similar to the <tt>p2.publish.featuresAndBundles</tt> task contributed by the p2 publisher. 
 	This task will publish metadata for pre-existing binary features and plug-ins which are not being built from source.  The task will also publish categories based on a provided site.xml or category.xml file.
 	</p></td></tr>
 	<tr><td><p>This task supports the following attributes:</p>
 		<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
-			<tr><td><tt>metadataRepository</tt></td><td>A URL specifying the metadata repository to publish to.</td></tr>
-			<tr><td><tt>artifactRepository</tt></td><td>A URL specifying the artifact repository to publish to.</td></tr>
+			<tr><td><tt>metadataRepository</tt></td><td>A URI specifying the metadata repository to publish to.</td></tr>
+			<tr><td><tt>artifactRepository</tt></td><td>A URI specifying the artifact repository to publish to.</td></tr>
 			<tr><td><tt>repository</tt></td><td>Sets both metadataRepository and artifactRepository.</td></tr>
 			<tr><td><tt>site</tt></td><td>A URL to a site.xml specifying category information.</td></tr>
 			<tr><td><tt>category</tt></td><td>A URL to a category.xml specifyiny category information.</td></tr>
@@ -47,14 +47,14 @@ Example:
 </div>
 <br>
 <table cellspacing="1" cellpadding="2">
-	<tr><td><b><tt>eclipse.gatherBundle</tt></b></td></tr>
+	<tr><td><b><h3>eclipse.gatherBundle</h3></b></td></tr>
 	<tr><td><p>Publish a plug-in directly from source.  Once the .class files for a bundle are compiled, this task will gather up all the files that make up the binary result and publish them as a p2 artifact with metadata.  
 	This task is used in the <tt>publish.bin.parts</tt> task in the plug-in's generated build.xml, this task replaces the <tt>gather.bin.parts</tt> task when you are building with the p2 publisher.</p>
 	</td></tr>
 	<tr><td><p>This task supports the following attributes:</p>
 	<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
-		<tr><td><tt>metadataRepository</tt></td><td>The metadata repository to publish to.</td></tr>
-		<tr><td><tt>artifactRepository</tt></td><td>The artifact repository to publish to.</td></tr>
+		<tr><td><tt>metadataRepository</tt></td><td>A URI to the metadata repository to publish to.</td></tr>
+		<tr><td><tt>artifactRepository</tt></td><td>A URI to the artifact repository to publish to.</td></tr>
 		<tr><td><tt>buildResultFolder</tt></td><td>Folder containing built .class files, the Manifest and potentially .api_description files.</td></tr>
 		<tr><td><tt>targetFolder</tt></td><td>Content when running with customBuildCallbacks.</td></tr>
 		<tr><td><tt>baseDirectory</tt></td><td>Project location to gather content from when not using customBuildCallbacks</td></tr>
@@ -77,7 +77,7 @@ Example:
 </div>
 <br>			
 <table cellspacing="1" cellpadding="2">
-	<tr><td><b><tt>eclipse.gatherFeature</tt></b></td></tr>
+	<tr><td><b><h3>eclipse.gatherFeature</h3></b></td></tr>
 	<tr><td><p>Publish a feature directly from source.  This task will gather up all the files that make up the feature jar and publish them as a p2 artifact with metadata.  
 	This task will also publish artifacts containing any <a href="pde_rootfiles.htm">root files</a> that are contributed by this feature.
 	If the feature does not specify a <tt>bin.includes</tt> property, then the feature jar will not be generated, but there will still be root file artifacts and feature group metadata.
@@ -85,8 +85,8 @@ Example:
 	</td></tr>
 	<tr><td><p>This task supports the following attributes:</p>
 	<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
-		<tr><td><tt>metadataRepository</tt></td><td>The metadata repository to publish to.</td></tr>
-		<tr><td><tt>artifactRepository</tt></td><td>The artifact repository to publish to.</td></tr>
+		<tr><td><tt>metadataRepository</tt></td><td>A URI to the metadata repository to publish to.</td></tr>
+		<tr><td><tt>artifactRepository</tt></td><td>A URI to the artifact repository to publish to.</td></tr>
 		<tr><td><tt>buildResultFolder</tt></td><td>Folder containing a modified feature.xml with versions replaced.</td></tr>
 		<tr><td><tt>targetFolder</tt></td><td>Content when running with customBuildCallbacks.</td></tr>
 		<tr><td><tt>baseDirectory</tt></td><td>The feature project location</td></tr>
@@ -105,12 +105,12 @@ Example:
 </div>
 <br>			
 <table cellspacing="1" cellpadding="2">
-	<tr><td><b><a name="brand_p2_artifacts"><tt>eclipse.brand.p2.artifacts</tt></a></b></td></tr>
+	<tr><td><b><a name="brand_p2_artifacts"><h3>eclipse.brand.p2.artifacts</h3></a></b></td></tr>
 	<tr><td><p>Brand launcher artifacts for a product and republish them with a new name for inclusion in the given product.</p></td></tr>
 	<tr><td><p>This task supports the following attributes:</p>
 	<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
-		<tr><td><tt>metadataRepository</tt></td><td>The metadata repository to publish to.</td></tr>
-		<tr><td><tt>artifactRepository</tt></td><td>The artifact repository to publish to.</td></tr>
+		<tr><td><tt>metadataRepository</tt></td><td>A URI to the metadata repository to publish to.</td></tr>
+		<tr><td><tt>artifactRepository</tt></td><td>A URI to the artifact repository to publish to.</td></tr>
 		<tr><td><tt>config</tt></td><td>The configuration for which the launchers will be used. (eg "gtk.linux.x86")</td></tr>
 		<tr><td><tt>iconsList</tt></td><td>Locations to find the icons to brand the executable with.</td></tr>
 		<tr><td><tt>tempDirectory</tt></td><td>The location of a temporary directory that can be be used.</td></tr>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_configuringproducts.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_configuringproducts.htm
index 6178a9a..6de7234 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_configuringproducts.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_configuringproducts.htm
@@ -27,7 +27,7 @@ This means that if you decide to set any custom start levels, then you must set
 <tr><td>org.eclipse.equinox.common</td><td align="center">2</td><td align="center">true</td></tr>
 <tr><td>org.eclipse.update.configurator</td><td align="center">4 (default)</td><td align="center">true</td></tr>
 <tr><td>org.eclipse.core.runtime</td><td align="center">4 (default)</td><td align="center">true</td></tr>
-<tr><td>org.eclipse.equinox.ds</td><td align="center">1</td><td align="center">true</td></tr>
+<tr><td>org.eclipse.equinox.ds</td><td align="center">2</td><td align="center">true</td></tr>
 </table>
 <p>When setting the start level for org.eclipse.update.configurator, PDE/Build will also automatically set In addition to these properties, <b><tt>org.eclipse.update.reconcile=false</tt></b>.</p>
 <h3>Config.ini properties</h3>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_featurebuilds.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_featurebuilds.htm
index a7ee4f2..4b947ee 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_featurebuilds.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_featurebuilds.htm
@@ -17,7 +17,7 @@
 <p>The following is a list of related properties (old and new):</p>
 <table border="5" cellspacing="0" cellpadding="2">
 	<tr><td><tt><b>p2.gathering</b></tt></td><td>Set to <tt><b>true</b></tt> to turn on p2 publisher based builds.</td></tr>
-	<tr><td><tt>p2.build.repo</tt></td><td>The local build time p2 repository, default is <tt>${buildDirectory}/buildRepo</tt>.  Results will be mirrored from here to the final archive location.</td></tr>
+	<tr><td><tt>p2.build.repo</tt></td><td>A URI to the local build time p2 repository, default is <tt>file:${buildDirectory}/buildRepo</tt>.  Results will be mirrored from here to the final archive location.</td></tr>
 	<tr><td><tt>groupConfigurations</tt></td><td><tt>p2.gathering=true</tt> has the implicit effect of setting <tt>groupConfigurations=true</tt>.  To control the <a href="pde_controlling_output.htm">output format</a> of the archive use the <tt>group.group.group</tt> configuration.</td></tr>
 	<tr><td><tt>generate.p2.metadata</tt></td><td>This is property for the old <a href="pde_p2_integration.htm">metadata generator integration</a>.  It has no affect when <tt>p2.gathering=true</tt>.</td></tr>
 	<tr><td><tt>p2.metadata.repo<br>p2.artifact.repo</tt></td>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_integration.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_integration.htm
index d93156b..defca39 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_integration.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_integration.htm
@@ -24,7 +24,7 @@ However, PDE/Build does provide integration with p2 via the following properties
 		</tr>
 		<tr>
 			<td><pre>p2.metadata.repo<br>p2.artifact.repo</pre></td>
-			<td>Specify a <b>file:</b> URL giving the location of the p2 metadata and artifact repositories to publish to.  It is common, but not necessary for the artifact repository to use the same location as the metadata repository.<br>
+			<td>Specify a <b>file:</b> URI giving the location of the p2 metadata and artifact repositories to publish to.  It is common, but not necessary for the artifact repository to use the same location as the metadata repository.<br>
 			Example:<br>
 			<pre>
 			p2.metadata.repo=file:${buildDirectory}/repository
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_productbuilds.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_productbuilds.htm
index 842081b..1107236 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_productbuilds.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_p2_productbuilds.htm
@@ -16,10 +16,10 @@
 <p>The following is a list of related properties (old and new):</p>
 <table border="5" cellspacing="0" cellpadding="2">
 	<tr><td><tt><b>p2.gathering</b></tt></td><td>Set to <tt><b>true</b></tt> to turn on p2 publisher based builds.</td></tr>
-	<tr><td><tt>p2.build.repo</tt></td><td>The local build time p2 repository, default is <tt>${buildDirectory}/buildRepo</tt>.  Results will be mirrored from here to the final archive location.</td></tr>
+	<tr><td><tt>p2.build.repo</tt></td><td>A URI to the local build time p2 repository, default is <tt>file:${buildDirectory}/buildRepo</tt>.  Results will be mirrored from here to the final archive location.</td></tr>
 	<tr><td><tt>generate.p2.metadata</tt></td><td>This is property for the old <a href="pde_p2_integration.htm">metadata generator integration</a>.  It has no affect when <tt>p2.gathering=true</tt>.</td></tr>
 	<tr><td><tt>p2.metadata.repo<br>p2.artifact.repo</tt></td>
-		<td>By default for product builds, the final archives are the installed products and metadata and artifacts are left in the <tt>${p2.build.repo}</tt>.  If <tt>p2.metadata.repo</tt> and <tt>p2.artifact.repo</tt> are defined, then 
+		<td>These properties are be URIs.  By default for product builds, the final archives are the installed products and metadata and artifacts are left in the <tt>${p2.build.repo}</tt>.  If <tt>p2.metadata.repo</tt> and <tt>p2.artifact.repo</tt> are defined, then 
 		the artifacts and metadata for the product will be mirrored from the build repository.</td>
 	</tr>
 	<tr><td><tt>p2.metadata.repo.name<br>p2.artifact.repo.name</tt></td><td>Optional, these properties will be used to name the final repository when <tt>p2.metadata.repo</tt> and <tt>p2.artifact.repo</tt> are used.</td></tr>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/ui_import_from_cvs.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/ui_import_from_cvs.htm
new file mode 100644
index 0000000..be067d7
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/ui_import_from_cvs.htm
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="STYLESHEET" href="../guide/book.css" type="text/css">
+<title>Import Projects from a Repository</title>
+<script type="text/javaScript" language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+</head>
+<body>
+<h1>Import Projects from a Repository</h1>
+<p>
+The <b>Plug-in Import Wizard</b> allows you to create projects in the workspace by importing plug-ins from the active
+target platform, a directory, or a target definition. If the plug-ins you are importing contain appropriate source
+reference information, the import wizard allows you to import the projects associated with those bundles from
+a repository.
+</p>
+<p>
+For example, the plug-ins in the Eclipse SDK contain <b>Eclipse-SourceReference:</b> headers identifying the CVS
+repository and projects the plug-ins originated from. You can import the specific version of a project that a plug-in
+was built from or you can import the associated project from HEAD. 
+</p>
+
+<p>To import plug-ins from a repository do the following:</p>
+<ol>
+<li>Open the import wizard: <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.file.import(importWizardId=org.eclipse.pde.ui.PluginImportWizard)")'>
+<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Open the plugin import wizard">
+<strong>File &gt; Import... &gt; Plug-in Development &gt; Plug-ins and Fragments</strong>
+</a></li>
+<li>In the <strong>Import From</strong> section, select a source of plug-ins such as the active target platform.
+<p><img src="../guide/images/tasks/import-from-active.png" alt="Import from the active target platform" border="0"></p>
+</li>
+
+<li>In the <strong>Import As</strong> section select <strong>Projects from a repository</strong>.
+<p><img src="../guide/images/tasks/import-as-repo.png" alt="Import as projects from a repository" border="0"></p>
+</li>
+
+<li>Press <strong>Next</strong>.  A list of plug-ins in the target platform that can be imported from a repository will be
+shown. Select the plug-ins you want to import and press <strong>Next</strong>.</li>
+
+<li>The next page allows you to import specific versions of the associated projects (the versions used to build the
+target platform), or from HEAD. Select the desired option and press <strong>Finish</strong>. The projects
+will be imported and appear as projects in the workspace.
+<p><img src="../guide/images/tasks/import-version.png" alt="Import specific versions or from HEAD" border="0"></p>
+</li>
+</ol>
+<p>You can also import plug-ins from a repository from the <strong>Plug-ins</strong> View. Select the plug-ins you want
+to import and use the <strong>Import As &gt; Project from a Repository...</strong> action.</p>
+<p><img src="../guide/images/tasks/import-from-plugins-view.png" alt="Import projects from a repository" border="0"></p>
+<br>
+<p><img src="../images/ngrelr.png" alt="Related reference" border="0"></p>
+<p>
+<a href="../guide/tools/import_wizards/import_wizards.htm">Import Wizards</a><br>
+<a href="../guide/tools/import_wizards/import_plugins.htm">Plug-in Import</a><br>
+</p>
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tips/pde_tips.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tips/pde_tips.htm
index 862df43..e68dc4d 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/tips/pde_tips.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/tips/pde_tips.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Language" content="en-us">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
@@ -45,32 +45,6 @@
     </td>
   </tr>  
   <tr>
-    <td valign="top" align="left" width="20%" height="345"><b>Feature-based 
-    self-hosting</b></td>
-    <td valign="top" align="left" width="80%" height="345">The current method of self-hosting in Eclipse
-      is plug-in-based. PDE launches a second run-time workbench instance by
-      passing an array of plug-ins that it should load. A regular Eclipse
-      product is feature-based: during startup, it checks all the features that
-      should be active, computes plug-ins that belong to those features, and
-      passes the result for loading.
-      <p>This difference in behavior makes it complicated to self-host in
-      scenarios where a full startup that involves features is required. PDE now
-      supports this scenario if care is taken with the setup:</p>
-      <ol>
-        <li>The workspace needs to be &lt;work-area&gt;/plugins.</li>
-        <li>Features must be imported into the workspace using the new 'Feature
-          Import' wizard (they will be created in &lt;work-area&gt;/features).</li>
-        <li>All plug-ins must be in the workspace (either in source or imported
-          as binary projects WITHOUT linking).</li>
-        <li>When launching, Run-time Workbench launcher must be configured to
-          use features (in Plug-ins and Fragments tab).</li>
-      </ol>
-      <p>If all these conditions are met, the runtime Eclipse instance will be
-      launched in a way that is the closest possible approximation of a normal
-      Eclipse startup. This facilitates testing About dialogs and other aspects
-      that may depend on the set of installed features.</p></td>
-  </tr>
-  <tr>
     <td valign="top" align="left" width="20%"><b>To clean or not to clean</b></td>
     <td valign="top" align="left" width="80%">When you create a new runtime 
     workbench launch configuration, PDE presets the Program Arguments on the 
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/topics_Reference.xml b/eclipse/plugins/org.eclipse.pde.doc.user/topics_Reference.xml
index 679ed83..149f81a 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/topics_Reference.xml
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/topics_Reference.xml
@@ -16,23 +16,27 @@
 <!-- ============================================================================= -->
 <toc label="Reference">
    <topic label="API Tools Ant Tasks">
-      <topic href="reference/api-tooling/ant-tasks/analysis-ant-task.htm" label="API Tools Analysis Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/analysis-ant-task.htm" label="Analysis Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm" label="API Tools Analysis Report Conversion Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/analysis-reportconversion-ant-task.htm" label="Analysis Report Conversion Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apifreeze-ant-task.htm" label="API Tools API Freeze Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/apifreeze-ant-task.htm" label="API Freeze Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm" label="API Tools API Freeze Report Conversion Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/apifreeze-reportconversion-ant-task.htm" label="API Freeze Report Conversion Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/filegeneration-ant-task.htm" label="API Tools File Generation Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/deprecation-ant-task.htm" label="API Deprecation Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apiuse-ant-task.htm" label="API Tools API Use Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm" label="API Deprecation Report Conversion Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm" label="API Tools API Use Report Conversion Task">
+      <topic href="reference/api-tooling/ant-tasks/apiuse-ant-task.htm" label="API Use Ant Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apimigration-ant-task.htm" label="API Tools API Use Migration Ant Task">
+      <topic href="reference/api-tooling/ant-tasks/apiuse-reportconversion-ant-task.htm" label="API Use Report Conversion Task">
       </topic>
-      <topic href="reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm" label="API Tools API Use Migration Report Conversion Task">
+      <topic href="reference/api-tooling/ant-tasks/apimigration-ant-task.htm" label="API Use Migration Ant Task">
+      </topic>
+      <topic href="reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm" label="API Use Migration Report Conversion Task">
+      </topic>
+      <topic href="reference/api-tooling/ant-tasks/filegeneration-ant-task.htm" label="File Generation Ant Task">
       </topic>
    </topic>
    <topic label="Build Configuration">
@@ -126,8 +130,8 @@
 <topic label="Launchers">
 	<topic label="Eclipse Application Launcher" href="guide/tools/launchers/eclipse_application_launcher.htm">
 		<topic label="Main Tab" href="guide/tools/launchers/eclipse_main.htm"/>
-		<topic label="Arguments Tab" href="guide/tools/launchers/eclipse_args.htm"/>
-		<topic label="Plug-ins Tab" href="guide/tools/launchers/eclipse_plugins.htm"/>
+		<topic label="Arguments Tab" href="guide/tools/launchers/arguments.htm"/>
+		<topic label="Plug-ins Tab" href="guide/tools/launchers/plugins.htm"/>
 		<topic label="Configuration Tab" href="guide/tools/launchers/configuration.htm"/>
 		<topic label="Tracing Tab" href="guide/tools/launchers/tracing.htm"/>
 		<topic label="Environment Tab" href="guide/tools/launchers/environment.htm"/>
@@ -144,9 +148,9 @@
 	<topic label="JUnit Plug-in Test Launcher" href="guide/tools/launchers/junit_launcher.htm">
 		<topic label="Test Tab" href="guide/tools/launchers/junit_test.htm"/>
 		<topic label="Main Tab" href="guide/tools/launchers/junit_main.htm"/>
-		<topic label="Arguments Tab" href="guide/tools/launchers/eclipse_args.htm"/>
-		<topic label="Plug-ins Tab" href="guide/tools/launchers/junit_plugins.htm"/>
-		<topic label="Configuration Tab" href="guide/tools/launchers/junit_configuration.htm"/>
+		<topic label="Arguments Tab" href="guide/tools/launchers/arguments.htm"/>
+		<topic label="Plug-ins Tab" href="guide/tools/launchers/plugins.htm"/>
+		<topic label="Configuration Tab" href="guide/tools/launchers/configuration.htm"/>
 		<topic label="Tracing Tab" href="guide/tools/launchers/tracing.htm"/>
 		<topic label="Environment Tab" href="guide/tools/launchers/environment.htm"/>
 		<topic label="Common Tab" href="guide/tools/launchers/common.htm"/>
@@ -217,13 +221,15 @@
 		<topic label="Update Site Project" href="guide/tools/project_wizards/new_update_site_project.htm"/>
 	</topic>
 	<topic label="New File Creation Wizards" href="guide/tools/file_wizards/new_file_wizards.htm">
+  <topic href="guide/tools/file_wizards/new_category.htm" label="Category Definition">
+  </topic>
+		<topic label="Extension Point Schema" href="guide/tools/file_wizards/new_schema.htm"/>
 		<topic label="Product Configuration" href="guide/tools/file_wizards/new_product_config.htm"/>
 		<topic label="Target Definition" href="guide/tools/file_wizards/new_target_definition.htm"/>
-		<topic label="Extension Point Schema" href="guide/tools/file_wizards/new_schema.htm"/>
 		<topic label="Cheat Sheet" href="guide/tools/file_wizards/new_cheat_sheet.htm"/>
-		<topic label="Table of Contents" href="guide/tools/file_wizards/new_toc.htm"/>
-  <topic href="guide/tools/file_wizards/new_category.htm" label="Category Definition">
+  <topic href="guide/tools/file_wizards/new_ctx_help.htm" label="Context Help">
   </topic>
+		<topic label="Table of Contents" href="guide/tools/file_wizards/new_toc.htm"/>
 	</topic>
 	<topic label="Import Wizards" href="guide/tools/import_wizards/import_wizards.htm">
 		<topic label="Plug-in Import" href="guide/tools/import_wizards/import_plugins.htm"/>
@@ -247,6 +253,10 @@
 	    </topic>
 	    <topic href="reference/api-tooling/wizards/ref-api-compare-wizard.htm" label="API Compare Wizard">
 	    </topic>
+     <topic href="reference/api-tooling/wizards/ref-api-use-dialog.htm" label="API Use Reports">
+     </topic>
+     <topic href="reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm" label="API Use Patterns Wizard">
+     </topic>
     </topic>
     <topic label="Target Wizards">
        <topic href="guide/tools/target_shared/new_target_wizard.htm" label="New Target Wizard">
@@ -320,6 +330,8 @@
     </topic>
 	</topic>
 	<topic label="Other Reference Information" href="reference/misc/index.html">
+    <topic href="reference/misc/overview-pde.html" label="PDE Plug-ins Map">
+    </topic>
 	</topic>
  <topic href="reference/api-tooling/api_javadoc_tags.htm" label="Defining API Restrictions">
  </topic>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/topics_Tasks.xml b/eclipse/plugins/org.eclipse.pde.doc.user/topics_Tasks.xml
index 8e61fb2..6a5f724 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/topics_Tasks.xml
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/topics_Tasks.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 <!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -39,6 +39,8 @@
       </topic>
       <topic href="tasks/pde_compilation_env.htm" label="Controlling compilation environment">
       </topic>
+      <topic href="tasks/pde_compiler_options.htm" label="Compiler options and settings">
+      </topic>
       <topic href="tasks/pde_source_generation.htm" label="Source Plug-in and Feature generation">
       </topic>
       <topic href="tasks/pde_individual_source.htm" label="Individual Source Bundles">
@@ -85,5 +87,7 @@
    <topic label="PDE UI">
       <topic href="tasks/ui_export_install_into_host.htm" label="Export and Install Into Running Host">
       </topic>
+      <topic href="tasks/ui_import_from_cvs.htm" label="Import Projects from a Repository">
+      </topic>
    </topic>
 </toc>
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-plugins.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-plugins.png
new file mode 100644
index 0000000..76ac21e
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-plugins.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-to-target.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-to-target.png
new file mode 100644
index 0000000..86cb2f0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/add-to-target.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-deprecation.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-deprecation.png
new file mode 100644
index 0000000..6625a04
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-deprecation.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-filters.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-filters.png
new file mode 100644
index 0000000..c5ae3a8
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-filters.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-scan.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-scan.png
new file mode 100644
index 0000000..1775c34
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/api-scan.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/apichanges.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/apichanges.png
deleted file mode 100644
index 8e66bec..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/apichanges.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive-wizard.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive-wizard.png
new file mode 100644
index 0000000..d18a4d2
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive-wizard.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive.png
new file mode 100644
index 0000000..5f9aaf8
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/archive.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/avail.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/avail.png
new file mode 100644
index 0000000..5b2deb1
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/avail.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/build-severities.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/build-severities.png
new file mode 100644
index 0000000..c2b74e5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/build-severities.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/buildproperties.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/buildproperties.png
new file mode 100644
index 0000000..a45daef
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/buildproperties.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categorydef.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categorydef.png
deleted file mode 100644
index e37acda..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categorydef.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categoryexport.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categoryexport.png
deleted file mode 100644
index 5dcbda1..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/categoryexport.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/click-install.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/click-install.png
deleted file mode 100644
index 06032c9..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/click-install.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/console-menu.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/console-menu.png
new file mode 100644
index 0000000..f5867d5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/console-menu.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/consolelog.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/consolelog.png
new file mode 100644
index 0000000..f907b6a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/consolelog.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/description.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/description.png
new file mode 100644
index 0000000..4d1b5d3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/description.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/dstemplate.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/dstemplate.png
deleted file mode 100644
index 140aab9..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/dstemplate.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation-pref.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation-pref.png
deleted file mode 100644
index 8fed896..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation-pref.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation.png
deleted file mode 100644
index 6374953..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/ee-validation.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/err-warn.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/err-warn.png
deleted file mode 100644
index 1d77633..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/err-warn.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-options.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-options.png
deleted file mode 100644
index 3734dda..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-options.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-target.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-target.png
new file mode 100644
index 0000000..17b9104
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/export-target.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/feature-launch.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/feature-launch.png
new file mode 100644
index 0000000..bc3f812
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/feature-launch.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/filter-quick-fix.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/filter-quick-fix.png
deleted file mode 100644
index c3a5ca1..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/filter-quick-fix.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/from-repo.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/from-repo.png
new file mode 100644
index 0000000..07b2159
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/from-repo.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/head-version.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/head-version.png
new file mode 100644
index 0000000..8fe8e05
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/head-version.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/hover-quick-fix.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/hover-quick-fix.png
new file mode 100644
index 0000000..e61b32e
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/hover-quick-fix.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installcategory.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installcategory.png
deleted file mode 100644
index 4e14cb8..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installcategory.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installed.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installed.png
deleted file mode 100644
index 24b7031..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/installed.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/keypass.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/keypass.png
deleted file mode 100644
index efa73d0..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/keypass.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/menuspy.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/menuspy.png
deleted file mode 100644
index b379427..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/menuspy.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/nl-fragments.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/nl-fragments.png
deleted file mode 100644
index bea68ec..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/nl-fragments.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/non-ui-thread.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/non-ui-thread.png
deleted file mode 100644
index ccd962d..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/non-ui-thread.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/options-editor.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/options-editor.png
deleted file mode 100644
index fc3e61b..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/options-editor.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pattern-wizard.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pattern-wizard.png
new file mode 100644
index 0000000..10e56ed
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pattern-wizard.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/patterns.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/patterns.png
new file mode 100644
index 0000000..4f68ad4
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/patterns.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-binarycycles.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-binarycycles.png
deleted file mode 100644
index 1116175..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-binarycycles.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-ds.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-ds.png
deleted file mode 100644
index 4be8af4..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-ds.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-jumpconsole.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-jumpconsole.png
deleted file mode 100644
index e8eaba4..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-jumpconsole.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-registryview.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-registryview.png
deleted file mode 100644
index d579b21..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-registryview.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-versioning.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-versioning.png
deleted file mode 100644
index 6724948..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/pde-versioning.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/registryfragments.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/registryfragments.png
deleted file mode 100644
index 7e55553..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/registryfragments.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/scandetails.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/scandetails.png
new file mode 100644
index 0000000..656a8a0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/scandetails.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/soft-install.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/soft-install.png
new file mode 100644
index 0000000..bb0536a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/soft-install.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/spell-check.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/spell-check.png
new file mode 100644
index 0000000..c1d0348
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/spell-check.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/src-builds.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/src-builds.png
new file mode 100644
index 0000000..53579cf
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/src-builds.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/start-levels.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/start-levels.png
deleted file mode 100644
index 78ec47b..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/start-levels.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-settings.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-settings.png
new file mode 100644
index 0000000..2fdf972
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-settings.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-warnings.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-warnings.png
new file mode 100644
index 0000000..1bab2e3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/synch-warnings.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-editor.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-editor.png
deleted file mode 100644
index 3b61fea..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-editor.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-features.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-features.png
new file mode 100644
index 0000000..685e52d
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-features.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-platform.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-platform.png
deleted file mode 100644
index a46f94c..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-platform.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-search.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-search.png
new file mode 100644
index 0000000..dcae43a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/target-search.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/targetstateview.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/targetstateview.png
deleted file mode 100644
index 9a8c377..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/targetstateview.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/xml-errors.png b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/xml-errors.png
new file mode 100644
index 0000000..f0ce0c1
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/images/xml-errors.png differ
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/pde_whatsnew.htm b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/pde_whatsnew.htm
index ec6faa7..ebb05e8 100644
--- a/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/pde_whatsnew.htm
+++ b/eclipse/plugins/org.eclipse.pde.doc.user/whatsNew/pde_whatsnew.htm
@@ -1,337 +1,560 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>PDE - What's New in 3.5</title>
-<link rel="stylesheet" href="../book.css" type="text/css">
+<meta name="copyright"
+	content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>PDE - What's New in 3.6</title>
+<link rel="stylesheet" href="../book.css" type="text/css"/>
 <style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
+td {
+	border-top: solid thin black;
+}
+
+img[alt] {
+	background-color: #ffdddd;
+}
+
+tr {
+	vertical-align: top;
+}
 </style>
 </head>
 <body>
-<h2>What's New in 3.5 (PDE) </h2>
-<p>Here are descriptions of some of the more interesting or significant changes made to the Plug-in Development Environment (PDE) for the 3.5 release of Eclipse, grouped into:</p>
+<h2>What's New in 3.6 (PDE)</h2>
+<p>Here are descriptions of some of the more interesting or
+significant changes made to the Plug-in Development Environment (PDE)
+for the 3.6 release of Eclipse, grouped into:</p>
 <ul>
-  <li><a href="#ViewsAndEditors">Views and Editors</a></li>
-  <li><a href="#Export">Export</a></li>
-  <li><a href="#APITooling">API Tooling</a> </li>
-  <li><a href="#Build">Build</a></li>
-  <li><a href="#TargetPlatform">Target Platform </a></li>
+	<li><a href="#ViewsAndEditors">Views and Editors</a></li>
+	<li><a href="#Launching">Launching</a></li>
+	<li><a href="#TargetPlatform">Target Platform </a></li>
+	<li><a href="#Export">Import and Export</a></li>
+	<li><a href="#APITooling">API Tooling</a></li>
+	<li><a href="#Build">Build</a></li>
 </ul>
 <!-- ****************** START OF N&N TABLE ****************** -->
 <table cellpadding="10" cellspacing="0" width="600">
-  <tr>
-    <td colspan="2"><h2><a name="ViewsAndEditors">Views and Editors </a></h2></td>
-  </tr>
-  <tr id="pde-ds">
-    <td align="left" valign="top"><b>Declarative services editor</b></td>
-    <td valign="top">PDE has added declarative services tooling to help author service component definitions.
-      <p><img src="images/pde-ds.png" alt="Declarative Services Editor"></p></td>
-  </tr>
-  <tr id="pde.ds">
-    <td valign="top" align="left"><b>DS Tooling enhancements</b></td>
-    <td valign="top"><p>The OSGi Declarative Services (DS) tooling has been
-      enhanced to support the latest version of the DS specification. Specifically, a new <b>modified</b> attribute has been added to the component element.
-      </p>
-        <p>A new template based on a simple dictionary service has been added to 
-          showcase Declarative Services tooling. </p>
-      <p><img src="images/dstemplate.png" alt="DS Template"></p></td>
-  </tr>
-  <tr id="pde-logview">
-    <td align="left" valign="top"><b>Jump to Console from stack trace</b></td>
-    <td valign="top">The error log view has been enhanced to allow posting stack trace dumps to the <b>Console</b> view from log messages.
-      <p><img src="images/pde-jumpconsole.png" alt="Jump to Console"></p></td>
-  </tr>
-  <tr id="pde-versioning">
-    <td align="left" valign="top"><b>Versioning options</b></td>
-    <td valign="top">To help developers follow versioning best practices, PDE has expanded its compiler options
-      to include version constraint checks on imported packages, exported packages and required bundle statements.
-      <p><img src="images/pde-versioning.png" alt="Preferences &gt; Plug-in Development &gt; Compilers"></p></td>
-  </tr>
-  <tr id="pde.options.editor">
-    <td valign="top" align="left"><b>Properties editor for .options </b></td>
-    <td valign="top"><p>The standard properties file editor is now used for <code>.options</code> files in the workspace.</p>
-        <p><img src="images/options-editor.png" alt="Property file editor"></p></td>
-  </tr>
-  <tr id="pde.product.editor">
-    <td valign="top" align="left"><strong>Product editor enhancements </strong></td>
-    <td valign="top">The product editor has been enhanced to support   bundle start levels and product license information. </td>
-  </tr>
-  <tr id="pde.productosgi">
-    <td valign="top" align="left"><b>Product definition enhancements</b></td>
-    <td valign="top"><p>You can now initialize product definitions from OSGi launch configurations.</p></td>
-  </tr>
-  <tr id="pde.nl.fragments">
-    <td valign="top" align="left"><b>NL fragment generation </b></td>
-    <td valign="top"><p>A new wizard (<strong>PDE Tools -&amp; Internationalize...</strong>) supports the generation of NL fragments for plug-ins in the workspace. A project is generated for each selected plug-in containing skeleton properties files for each selected locale. The generated properties files contain the keys from each of the associated plug-in's properties files.</p>
-        <p><img src="images/nl-fragments.png" alt="Wizard to generate NL fragments" ></p></td>
-  </tr>
-  <tr id="pde.menuspy">
-    <td valign="top" align="left"><b>Plug-in Spy and menus</b></td>
-    <td valign="top"><p>View information about menus by invoking Plug-in Spy 
-      in menu introspection mode (<b>Alt+Shift+F2</b>) and selecting a menu item.
-      </p>
-        <p><img src="images/menuspy.png" alt="Menu Spy"></p></td>
-  </tr>
-  <tr id="registryview">
-    <td align="left" valign="top"><b>Plug-in Registry view enhancements </b></td>
-    <td valign="top">The <b>Plug-in Registry</b> view now supports 
-      browsing for OSGi services.
-      <p><img src="images/pde-registryview.png" alt="Browse for OSGi services using the registry view" ></p></td>
-  </tr>
-  <tr id="launch-config-startLevels">
-    <td valign="top" align="left"><b>Start levels</b></td>
-    <td valign="top">Eclipse Application launch configurations now support start 
-      levels and auto-start settings. You can specify default start levels and auto-start 
-      settings for all plug-ins in the configuration, and provide specific settings for others 
-      by selecting the plug-in in the list.
-      <p><img src="images/start-levels.png" alt="Use the Plug-ins tab to specify start levels" ></p></td>
-  </tr>
-  <tr id="junit-nonUIThread">
-    <td valign="top" align="left"><b>JUnit plug-in tests in non-UI thread</b></td>
-    <td valign="top">You can now launch JUnit Plug-in tests in a non-UI thread. A 
-      check box has been added to the Test tab to specify whether tests should run in the UI thread.
-      <p><img src="images/non-ui-thread.png" alt="Check box for non-UI thread"></p></td>
-  </tr>
-  <tr id="pde.fragments">
-    <td valign="top" align="left"><b>Fragments in the Plug-in Registry view</b></td>
-    <td valign="top"><p>The Plug-in Registry view now includes fragments. Simply expand a plug-in, and expand
-      the <b>Fragments</b> element in the tree to see all available fragments of that plug-in.
-      </p>
-        <p><img src="images/registryfragments.png" alt="Fragments"></p></td>
-  </tr>
-  <tr>
-    <td colspan="2"><h2><a name="Export">Export </a></h2></td>
-  </tr>
-  <tr id="exportInstall">
-    <td valign="top" align="left"><b> Install  into running platform</b></td>
-    <td valign="top"><p>It's simple to run and test your latest code by exporting and install plug-ins and features directly into the running workbench. Choose <strong>Install into host</strong> when exporting and 
-      specify a path in the local file system where exported artifacts can be stored (repository). You will be prompted to restart your 
-      workspace after export and install is complete. </p>
-        <p><img src="images/click-install.png" alt="Export Wizard"></p>
-      <p>Patched plug-ins will appear in the installed software list and can also be uninstalled.</p>
-      <p><img src="images/installed.png" alt="Installation Details Dialog"></p>    </td>
-  </tr>
-  <tr id="pde-binary-cycles">
-    <td valign="top" align="left"><b>Source bundles, binary cycles, and  workspace class files </b></td>
-    <td valign="top"><p>Export options have been enhanced:</p>
-      <ul>
-        <li>Generate source bundles. Select the <b>Export source</b> option and choose <b>Generate 
-        source bundles</b> from the drop down menu. A source bundle will be exported for each 
-      plug-in being exported. </li>
-        <li>Export features, plug-ins, and products with binary cycles. 
-          Binary cycles are cycles that exist in your target platform, not your workspace. This option is on by default.</li>
-        <li>Export existing class files from the workspace. When this option is checked, PDE will re-use existing class files in the workspace rather than compiling class files from source during export.</li>
-      </ul>
-    <p><img src="images/export-options.png" alt="Export Wizard Options Tab"></p></td>
-  </tr>
-  <tr id="pde.feature.categories">
-    <td valign="top" align="left"><strong>Publish feature categories</strong></td>
-    <td valign="top"><p>The new <strong>Category Definition</strong> editor can be 
-      used to assign categories to features when exporting. The category names and 
-      descriptions will then appear in software selection dialogs. First, create a category 
-      definition file via <strong>File &gt; New &gt; Other...</strong> and select<strong> Plug-in Development &gt; Category Definition.</strong> Define categories with 
-      symbolic identifiers, names, and descriptions, and then add features to each category.
-      </p>
-        <p><img src="images/categorydef.png" alt="Category Definition editor" ></p>
-      <p>When exporting your feature, specify the category file to apply when exporting 
-        via the <strong>Options</strong> tab. </p>
-      <p><img src="images/categoryexport.png" alt="Specify category file on export" ></p>
-      <p>The categories can then be seen when browsing the repository from the Install Software dialog.</p>
-      <p><img src="images/installcategory.png" alt="Install new software dialog displays exported categories"></p></td>
-  </tr>
-  <tr id="pde.keypass">
-    <td valign="top" align="left"><b>Keypass support</b></td>
-    <td valign="top"><p>The JAR signing support in PDE has been expanded to include support for keypasses.
-      </p>
-        <p><img src="images/keypass.png" alt="Keypass support"></p></td>
-  </tr>
-  <tr>
-    <td colspan="2"><h2><a name="APITooling">API Tooling </a></h2></td>
-  </tr>
-  <tr id="apiOptions">
-    <td valign="top" align="left"><b>Compatibility options </b></td>
-    <td valign="top"><p>API compatibility options have been reorganized and descriptions have been improved. The number of options has been reduced by combining related problems. For example, problems related to type parameters 
-      are now in their own group rather than being listed separately in the settings for classes, interfaces, and methods. </p>
-      <p>As well, you can be alerted to breaking API changes even if you have incremented the major version of your plug-in. The first time you change a plug-in's API in an incompatible way, problems inform you to increment the major version of your plug-in. Once you increment the major version of your plug-in, API tooling allows additional breaking API changes without warning. Use the new preference <strong>Report API breakage even if authorized by major version increment</strong> to enable this feature (on the <strong>Plug-in Development &gt; API Errors/Warnings</strong> preference page, on the <strong>API Compatibility</strong> tab). When this preference is enabled you must use API problem filters to selectively permit incompatible API changes.</p>
-      <p><img src="images/err-warn.png" alt="Preferences &gt; Plug-in Development &gt; API Errors/Warnings" ></p></td>
-  </tr>
-  <tr id="api.noextend">
-    <td valign="top" align="left"><b>@noextend restriction supported on interfaces</b></td>
-    <td valign="top"><p>API tooling now supports two restrictions on interfaces: <code>@noimplement</code> and <code>@noextend</code>. This allows an interface to be 
-      extended when it is not intended to be implemented directly. For example, a client may 
-      be permitted to subclass an existing implementation of a <code>@noimplement</code> interface and extend the base interface with extra function.</p>
-        <p>Component owners should decide where to add <code>@noextend</code> tags on existing interfaces, as this was previously implicit. To maintain the API contracts 
-          specified in 3.4, <code>@noextend</code> tags can be added to all interfaces 
-          specified as <code>@noimplement</code>. In some cases the <code>@noextend</code> restriction can be omitted, as clients that extend and implement a <code>@noimplement</code> interface will still be flagged with errors. However, if you would like to reserve the 
-          right to add constants to an API interface in the future, you must add the <code>@noextend</code> tag. This is because adding a field to an interface is binary 
-          incompatible if clients can extend or implement an interface (see <a href="http://wiki.eclipse.org/Evolving_Java-based_APIs_2#Evolving_API_Interfaces">Evolving API Interfaces</a>).<br>
-      </p></td>
-  </tr>
-  <tr id="systemLibrary">
-    <td valign="top" align="left"><b>System library validation</b></td>
-    <td valign="top">API tools can now analyze use of system libraries and create 
-      problems when code accesses members that may not be present at runtime. 
-      For example, when a plug-in specifies a required execution environment of J2SE 1.3, 
-      but the only JRE installed in the workspace for building is J2SE 1.5, it is possible to 
-      access methods that exist in J2SE 1.5, but not in J2SE 1.3. In order for the validation to work, 
-      you must install relevant execution environment descriptions from an update site.
-      <p><img src="images/ee-validation-pref.png" alt="API Errors/Warnings preference page"></p>
-      <p>The <strong>API Use</strong> tab of the <strong>API Errors/Warnings</strong> preference page displays installed execution environments. 
-        Use the &quot;install them now&quot; hyperlink to install additional environments 
-        via the software updates dialog.</p>
-      <p><img src="images/ee-validation.png" alt="Illegal access warning"></p></td>
-  </tr>
-  <tr id="api.stale.filters">
-    <td valign="top" align="left"><b>Stale  problem filters </b></td>
-    <td valign="top"><p>API tooling creates warnings for problem filters that are no longer needed. API problem filters often become stale because they are used to filter known incompatibilities between two specific releases. A quick fix is available to remove stale filters. </p>
-        <p><img src="images/filter-quick-fix.png" alt="Quick fix to remove stale filters"></p></td>
-  </tr>
-  <tr id="api.ant.tasks">
-    <td valign="top" align="left"><b>Ant tasks </b></td>
-    <td valign="top"><p>Ant tasks to perform API analysis and generate simple HTML reports are now available. These are the same Ant tasks used in the Eclipse SDK build. Documentation for each task is available in the <strong>Reference</strong> section of the <strong>Plug-in Development Environment Guide</strong>.</p>        </td>
-  </tr>
-  <tr id="pde.api.compare">
-    <td valign="top" align="left"><b>Compare APIs</b></td>
-    <td valign="top"><p>You can now view API changes relative to an API baseline. Select a project or 
-      package in the Package Explorer and choose <strong>Compare With &gt; API Baseline</strong>. 
-      Specify the API baseline you wish to compare against and press <strong>OK</strong>. 
-      The API Tooling view will summarize the API changes.
-      </p>
-          <p><img src="images/apichanges.png" alt="API Tooling view"></p></td>
-  </tr>
-  <colgroup>
-  <col width="30%">
-  <col width="70%">
-  </colgroup>
-  <tbody>
-  <tr>
-    <td colspan="2"><h2><a name="Build">Build </a></h2></td>
-  </tr>
+	<tr>
+		<td colspan="2">
+		<h2><a name="ViewsAndEditors">Views and Editors </a></h2>
+		</td>
+	</tr>
+	
+	<tr id="osgiconsole">
+		<td align="left" valign="top" width="30%"><b>OSGi console </b></td>
+		<td valign="top" width="70%">An OSGi console is now available to
+		interact with the running framework. Use the <b>Open Console</b> drop
+		down action in the <b>Console View</b> to open a <b>Host OSGi Console</b>.
+		<p><img alt="Open an OSGi console to interact with the running framework" title="Open Host OSGi Console"
+			src="images/console-menu.png" /><br />
+		<br />
+		</p>
+		<p>You can then enter OSGi commands into the console to interact
+		directly with the framework running the IDE.</p>
+		</td>
+	</tr>
+
+	<tr id="pde-xml-errors">
+		<td width="30%" valign="top" align="left"><b>XML error
+		reporting in context help and table of contents editors</b></td>
+		<td width="70%" valign="top">The context help editor and table of
+		contents editor now report XML errors.
+		<p><img src="images/xml-errors.png" alt="TOC Editor" /></p>
+		</td>
+	</tr>
+
+	<tr id="toc.spell.check">
+		<td width="30%" valign="top" align="left"><b>Spell checking 
+		in context help and table of contents editors</b></td>
+		<td width="70%" valign="top">
+		<p>Spell checking is now available in the <strong>Table
+		of Contents</strong> (TOC) and <strong> Context Help</strong> editors.</p>
+		<p><img src="images/spell-check.png"
+			alt="Incorrectly spelled works are underlined in red" /></p>
+		</td>
+	</tr>
+
+	<tr id="buildseverities">
+		<td align="left" valign="top" width="30%"><b>Configurable
+		problem severities for build.properties </b></td>
+		<td valign="top" width="70%">Severities for problems in
+		build.properties can now be configured individually via the <b>Preferences
+		&gt; Plug-in Development &gt; Compilers</b> preference page. Problem
+		severities can also be configured at the project level via a project's
+		<b>Properties &gt; Plug-in Development &gt; Plug-in Manifest
+		Compiler</b> property page.
+		<p><img alt="Severity Settings" title="Severity Settings"
+			src="images/build-severities.png" /><br />
+		<br />
+		</p>
+		</td>
+	</tr>
+	
+	<tr id="searchrepos">
+		<td align="left" valign="top" width="30%"><b>Search
+		repositories quickfix</b></td>
+		<td valign="top" width="70%">A new quickfix allows you to
+		conveniently search a set of repositories for a missing imported
+		package and have a bundle supplying the package added to your target
+		platform.
+		<p><img alt="Search Repositories Quickfix"
+			title="Search Repositories Quickfix" src="images/hover-quick-fix.png" /><br />
+		<br />
+		</p>
+		</td>
+	</tr>
+	
+	<tr id="pdecreateapi">
+		<td align="left" valign="top" width="30%"><b>API for plug-in
+		project creation</b></td>
+		<td valign="top" width="70%">An API is now available to create
+		and modify plug-in (bundle) projects. The API provides a description
+		of a project's bundle related attributes and allows them to be
+		modified declaratively. For example, a bundle's activator, required
+		bundles, package exports and imports can be queried and defined. As
+		well, the root of bundle (i.e. the folder containing <code>META-INF/MANIFEST.MF</code>)
+		can be placed anywhere inside a project (rather than just the root
+		project folder). The new API is available in the <code>org.eclipse.pde.core.project</code>
+		package of the <code>org.eclipse.pde.core</code> bundle.</td>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<h2><a name="Launching">Launching</a></h2>
+		</td>
+	</tr>
+
+	<tr id="featurelaunch">
+		<td align="left" valign="top" width="30%"><b>Feature based
+		launch </b></td>
+		<td valign="top" width="70%">You can now manage the set of
+		plug-ins launched in Eclipse Applications, JUnit
+		Plug-in Tests, and OSGi Framework launch configurations
+		by selecting a set of features.
+		<p><img alt="Feature Based Launching"
+			title="Feature Based Launching" src="images/feature-launch.png" />
+		</p>
+		<p>
+		Features from both the workspace and the target can be 
+		included.  Individual plug-ins can be added to the launch
+		to include plug-ins that are not part of a feature.  PDE
+		will launch all the selected plug-ins as well as all required
+		plug-ins.
+		</p>
+		<p><img alt="Add individual plug-ins to a feature based launch"
+			title="Add Individual Plug-ins" src="images/add-plugins.png" />
+		</p>
+		<p>Features in the workspace are used over external features,
+		however, this can be configured by un-checking '<b>Use features
+		from workspace if available</b>'. Bundles in the workspace are used over
+		external bundles in the target platform. However, this can be
+		configured by modifying the configuration's default bundle resolution
+		policy, or can be configured per feature using the cell editors in the
+		'<b>Plug-in Location</b>' column.</p>
+		</td>
+	</tr>
+
+	<tr id="headless-pde">
+		<td width="30%" valign="top" align="left"><b>Headless
+		launching support</b></td>
+		<td width="70%" valign="top">Launching support for Eclipse
+		Applications, JUnit Plug-in Tests, and OSGi Frameworks is provided by
+		a new headless plug-in (<code>org.eclipse.pde.launching</code>). This
+		allows applications without a user interface to leverage the launch
+		support programmatically.</td>
+	</tr>
+
+	<tr>
+		<td width="30%" valign="top" align="left"><a name="consolelog"
+			id="consolelog"></a><b>Console log</b></td>
+		<td width="70%" valign="top">By <a
+			href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=284704">popular
+		demand</a>, <code>-consoleLog</code> is added to new launch configuration
+		program arguments by default.
+		<p><img src="images/consolelog.png"
+			alt="Default program arguments" /></p>
+		</td>
+	</tr>
+
+	<tr id="generate-profile">
+		<td width="30%" valign="top" align="left"><b>Support software
+		installation while running and debugging</b></td>
+		<td width="70%" valign="top">Launched Eclipse Applications can
+		now support software installation operations. When the new option is
+		checked (on the <b>Configuration</b> tab of Eclipse Applications), a
+		p2 profile is generated when running or debugging. The profile
+		initially contains all bundles in the target and can be modified by
+		software installation operations. The profile is regenerated on each
+		subsequent run or debug session, but is maintained across restart
+		operations.
+		<p><img src="images/soft-install.png"
+			alt="Configuration tab of Eclipse Application" /></p>
+		</td>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<h2><a name="Export">Import and Export </a></h2>
+		</td>
+	</tr>
+
+	<tr id="importcvs">
+		<td align="left" valign="top" width="30%"><b>Import from CVS
+		</b></td>
+		<td valign="top" width="70%">The <b>Plug-in Import</b> wizard
+		allows you to import projects from CVS corresponding to bundles in the
+		target platform. This feature is available for bundles that define the
+		<b>Eclipse-SourceReferences</b> header. On the first page of the
+		import wizard select the <b>Import As > Projects from a repository</b>
+		option.
+		<p><img alt="Import from a repository"
+			title="Import From Repository" src="images/from-repo.png" />
+		</p>
+		<p>The second page allows you to choose from all bundles with
+		source repository information. Select the bundles you want to import
+		and press <b>Next</b>.</p>
+		<p><img alt="Select bundles to import"
+			title="Select Bundles to Import" src="images/avail.png" />
+		</p>
+		<p>The last page of the wizard allows you to import the specific
+		versions of the bundles used in the target platform or from HEAD.
+		Pressing <b>Finish</b> will import the projects into your workspace.</p>
+		<p><img alt="Select Version" title="Select Version"
+			src="images/head-version.png" />
+		</p>
+		<p>You can also import projects from the <b>Plug-ins</b> view. Use the <b>Import As &gt; Project from a Repository...</b> action
+		to import plug-ins from CVS. 
+		</p>
+		<p><img alt="Import plug-in projects from CVS" title="Import plug-in projects from CVS"
+			src="../guide/images/tasks/import-from-plugins-view.png" />
+		</p>
+		</td>
+	</tr>
+
+	<tr id="exporttarget">
+		<td align="left" valign="top" width="30%"><b>Export target
+		content </b></td>
+		<td valign="top" width="70%">It's now possible to export the
+		contents of your current target platform into a destination directory
+		via the export active target definition wizard. In the list of export
+		wizards (<b>File -> Export...</b>), you'll find the wizard available
+		under <b>Plug-in Development -> Target definition</b>.
+		<p><img alt="Export Active Target Wizard"
+			title="Export Active Target Wizard" src="images/export-target.png" /><br />
+		<br />
+		</p>
+		<p>Note: This will copy all features and plug-ins that are part of
+		your currently set target platform to the destination directory.</p>
+		</td>
+	</tr>
+	
+	<tr>
+		<td colspan="2">
+		<h2><a name="TargetPlatform">Target Platform</a></h2>
+		</td>
+	</tr>
+
+	<tr id="featuretarget">
+		<td align="left" valign="top" width="30%"><b>Feature based
+		target </b></td>
+		<td valign="top" width="70%">You can now manage the set of
+		bundles in a target platform by selecting a set of features.
+		Additionally, you can select from bundles that are not contained in
+		any feature. On a target definition's <b>Content</b> tab select the <b>Manage
+		using Features</b> radio button. This provides coarse grained management
+		of bundles in a target. When a feature is selected, all bundles in
+		that feature are added to the target.
+		<p><img alt="Target Based Features" title="Target Based Features"
+			src="images/target-features.png" /><br />
+		<br />
+		</p>
+		</td>
+	</tr>
+
+	<tr id="pdetargetdialog">
+		<td align="left" valign="top" width="30%"><b>Add to target
+		platform dialog</b></td>
+		<td valign="top" width="70%">The <b>Add Artifact to Target
+		Platform</b> dialog (Ctrl+Shift+Alt+A) allows you to quickly search a set
+		of repositories for dependencies (bundle, feature or package) to add
+		to your current target platform.
+		<p><img alt="Add Artifact to Target Platform Dialog"
+			title="Add Artifact to Target Platform Dialog"
+			src="images/add-to-target.png" /><br />
+		<br />
+		</p>
+		</td>
+	</tr>
+	
+	<tr id="synch-java-search">
+		<td width="30%" valign="top" align="left"><b>Synchronize Java
+		search with target platform</b></td>
+		<td width="70%" valign="top">You can automatically synchronize
+		Java search operations with the target platform via the <b>Preferences
+		&gt; Plug-in Development</b> preference page.
+		<p><img src="images/target-search.png"
+			alt="Preferences &gt; Plug-in Development" /></p>
+		<p>Java search operations are scoped to workspace projects and
+		their dependencies. Developers don't typically have the entire target
+		platform in their workspace and thus Java search operations don't
+		locate references from many upstream plug-ins. You can manually add
+		plug-ins to the Java search path using the <b>Add All Plug-ins to
+		Java Search</b> action in the Plug-ins view. However, the new preference
+		automatically keeps the search path in synch with the target platform.</p>
+		<p>Under the covers a project named <i>External Plug-in
+		Libraries</i> is created with all external plug-ins in the target platform
+		on its build path.</p>
+		</td>
+	</tr>
 
-  <tr id="flattenDependencies">
-    <td width="30%" valign="top" align="left"><b>Sort plug-ins across feature boundaries</b></td>
-    <td width="70%" valign="top"><p>PDE/Build determines <a href="../tasks/pde_compilation_order.htm">compilation order</a> by sorting 
-    	plug-ins according to their dependencies. Previously, this sorting was only done within 
-    	a single feature and features were compiled depth first in the order they were included.</p>
-        Set the property:
-        <div align="center"><pre>flattenDependencies=true</pre></div>
-        in your build's configuration, and PDE/Build will instead sort plug-ins across feature boundaries.  
-        This allows you to structure your features according to the best logical groupings 
-        without restrictions imposed by compilation requirements. 	</td>
-  </tr>
+	<tr>
+		<td colspan="2">
+		<h2><a name="APITooling">API Tooling </a></h2>
+		</td>
+	</tr>
 
-  <tr id="parallelCompilation">
-    <td width="30%" valign="top" align="left"><b>Parallel compilation</b></td>
-    <td width="70%" valign="top"><p>If plug-ins are sorted across feature boundaries (see above), 
-    PDE/Build can also group plug-ins allowing for parallel compilation.</p>
-    Set the property:
-    <div align="center"><pre>parallelCompilation=true</pre></div>
-    in your build's configuration, and PDE/Build will group plug-ins for parallel compilation 
-    using Ant's <tt>&lt;parallel&gt;</tt> task.  Setting the properties <tt>parallelThreadCount</tt> 
-    and <tt>parallelThreadsPerProcessor</tt> will control the corresponding attributes on the parallel task.    </td>
-  </tr>
-  <tr id="publish_p2">
-    <td valign="top" align="left"><b>Build integration with p2</b></td>
-    <td valign="top">PDE/Build has updated <a href="../tasks/pde_p2_builds.htm">integration with p2</a>.  It is now
-      able to publish metadata directly from your source instead of generating it based 
-      on binary jars.  For an existing feature or product build, set the property:
-      <pre>
-           p2.gathering = true
-     </pre>
-        <p>Setting this property will use the p2 publisher to gather up your bundle and publish it into a 
-          build specific repository.</p>
-      <p>For product builds, this will automatically perform a director install to create the final product archives.  
-        If you also set the <tt>p2.metadata.repo</tt> and <tt>p2.artifact.repo</tt> properties then build will mirror the 
-        resulting product metadata into those repositories.</p>
-      <p>For Feature builds, this will create a p2 repository for the final archive.  This also has the effect of setting <tt>groupConfigurations=true</tt> and <tt>outputUpdateJars=true</tt>.</p></td>
-  </tr>
-  <tr id="rootfile_artifacts">
-    <td valign="top" align="left"><b>Feature rootfile artifacts</b></td>
-    <td valign="top">When publishing metadata directly from source using the <tt>p2.gathering=true</tt> property, 
-      root files contributed by features will be published into the artifact repository and <a href="../tasks/pde_p2_featuremetadata.htm">associated metadata</a> will be created.
-      The result is that installing your feature will also cause the feature's root files to be installed.</td>
-  </tr>
-  <tr id="product_qualifiers">
-    <td valign="top" align="left"><b>Qualifier replacement on .product files</b></td>
-    <td valign="top"><p>When building products using <a href="../tasks/pde_p2_productbuilds.htm"><tt>p2.gathering=true</tt></a>, PDE/Build will now replace the ".qualifier" on the version specified in a .product file used
-      in a product build.  Set the property <b><tt>p2.product.qualifier</tt></b> to be the qualifier you wish to use.
-      </p>
-        <p>If no value is specified, the default will be either the value of <tt>forceContextQualifier</tt> or the default timestamp.</p>    </td>
-  </tr>
+	<tr id="pde-api-deprecation">
+		<td width="30%" valign="top" align="left"><b>Compare with
+		baseline now reports deprecations</b></td>
+		<td width="70%" valign="top">When performing <b>Compare With
+		&gt; API Baseline...</b>, deprecation changes are now reported. This
+		allows you to quickly identify what has been deprecated between two
+		releases of a project.
+		<p><img src="images/api-deprecation.png" alt="TOC Editor" /></p>
+		</td>
+	</tr>
 
-  <tr id="pde-build-fetch">
-    <td width="30%" valign="top" align="left"><b>Fetch artifacts for your build using p2</b></td>
-    <td width="70%" valign="top">
-      A new extension has been added to PDE/Build that enables users to <a href="../tasks/pde_fetch_phase.htm#p2_fetch">fetch
-    	artifacts</a> from p2 repositories. You can now add an entry to your map
-    	file for build input and PDE/Build will retrieve the artifact and include it in the build.
-    	<p>
-    	The map file entry needs to include the id and version of the installable unit (IU), and
-    	the URI of the repository where the IU can be found. The metadata and 
-    	artifact repositories are assumed to be co-located. An example (needs to be on one line) is:</p>
-    	<p>
-    	<code>
-    		plugin at my.bundle.id,1.0.0=p2IU,id=my.bundle.id,version=
-    		&nbsp;&nbsp;&nbsp;1.0.0,repository=http://example.com/repo</code></p></td>
-  </tr>
+	<tr id="api.use.scans">
+		<td width="30%" valign="top" align="left"><b>API use reports
+		</b></td>
+		<td width="70%" valign="top">
+		<p>You can generate reports describing what API and internals are
+		being used by other bundles. API use reports have been integrated as
+		an external tool (<strong>Run &gt; External Tools &gt;
+		External Tool Configurations...</strong>). For example, the following report
+		settings are used to generate a report revealing which internal
+		components of the debug platform are being consumed by JDT.</p>
+		<p><img src="images/api-scan.png" alt="API use report settings" />
+		</p>
+		<p>A report is run against a set of bundles which can be specified
+		as an API baseline, a target definition or a directory of bundles. You
+		can search for API and/or internal references and you can limit the
+		report to specific bundles by using regular expressions. You must
+		specify an output location (directory) for the report and whether to
+		generate HTML.</p>
+		<p>Package exports in bundle manifests are used to determine
+		package visibility. Any package exports with an <em>x-internal</em> or
+		<em>x-friends</em> modifier will be considered internal. All other
+		packages are considered API. The <strong>Patterns</strong> tab can be
+		used to augment package visibility information by specifying regular
+		expressions to identify packages, and whether those packages should be
+		considered API or internal. For example, since TPTP specifies all
+		packages as API, the following patterns could be used to identify its
+		internal packages.</p>
+		<p><img src="images/patterns.png"
+			alt="Specify package visibility using the patterns tab" /></p>
+		</td>
+	</tr>
 
-  <tr id="repo2runnable">
-    <td width="30%" valign="top" align="left"><b>p2 repositories as a target for PDE Build</b></td>
-    <td width="70%" valign="top"><p>
-    	You can now specify a location that contains <a href="../tasks/pde_p2_reusingmetadata.htm">local p2 repositories</a> in nested folders or zip files.
-    	The build will automatically transform the repositories into a form that PDE/Build can 
-    	compile against.</p>
-    	<p>
-    	There is a new <tt>processRepos</tt> phase in the main build script with corresponding
-    	<tt>pre</tt> and <tt>post</tt> targets in the <tt>customTargets.xml</tt> file.</p>
-    	<p>
-    	You must set these properties in the <tt>build.properties</tt> for your builder. The
-    	<tt>repoBaseLocation</tt> is the location of the folder containing the local p2 
-    	repositories. The <tt>transformedRepoLocation</tt> is the location where the transformed
-    	artifacts will be placed after being processed.</p>
-    	<p>
-    	<code>
-    	repoBaseLocation=${base}/repos<br>
-		transformedRepoLocation=${base}/transformedRepos		</code>		</p>	</td>
-	</tr>
-  <tr>
-    <td colspan="2"><h2><a name="TargetPlatform">Target Platform </a></h2></td>
-  </tr>
+	<tr id="apireports">
+		<td align="left" valign="top" width="30%"><b>Customize API
+		use scan reports </b></td>
+		<td valign="top" width="70%">A new wizard helps you customize API
+		use reports. From the <b>Patterns</b> tab of an <b>API Use Report</b>
+		launch configuration (available via External Tools), press the <b>Add</b>
+		button to open the wizard and create custom pattern filters.
+		<p><img alt="API Pattern Wizard" title="API Pattern Wizard"
+			src="images/api-filters.png" />
+		</p>
+		<p>An <b>Archive Pattern</b> allows specific jars within bundles
+		to be omitted from the scan. A <b>Package Pattern</b> allows you to
+		specify which packages should be considered API or non-API (override
+		visibility definitions in bundle manifests). A <b>Report
+		Conversion Pattern</b> allows specific references to be filtered from the
+		final report. You can filter references from or to locations based on
+		regular expressions.</p>
+		</td>
+	</tr>
 
-  <tr id="pde.target.platform">
-    <td width="30%" valign="top" align="left"><strong>Target platform and target definitions </strong></td>
-    <td width="70%" valign="top"><p>The target platform preference page (<strong>Preferences
-     &gt; Plug-in Development &gt; Target Platform</strong>) has been redesigned. The page allows the user to select the active target platform from all target 
-     definitions in the workspace. 
-     Target definitions can be created and edited from this page using a wizard or with the target definition editor. You can quickly switch 
-     between targets using the checkboxes. Targets can be composed of plug-ins originating from installations, directories, features, and software sites. See <a href="../concepts/target.htm">target definition concepts</a> for more details on crafting targets. </p>
-      <p><img src="images/target-platform.png" alt="Target platform preference page"></p></td>
-  </tr>
-  <tr id="targetEditor">
-    <td valign="top" align="left"><b>Target editor enhancements</b></td>
-    <td valign="top">The target editor has been enhanced to support new features 
-      in target definitions. Targets now support installation-based locations in addition to 
-      directories and features. As well, the editor support retrieval of plug-ins from update 
-      sites. The wizards used to add content to a target definition are the same as 
-      described in the new target platform preference page (above).
-      <p><img src="images/target-editor.png" alt="Target Definition Editor"></p>
-      <p>To support new features, the underlying target file format has been enhanced. 
-        The new editor continues to read old target files, but only writes files in the new format.</p></td>
-  </tr>
+	<tr id="build-properties">
+		<td width="30%" valign="top" align="left"><b>Enhanced
+		build.properties validation</b></td>
+		<td width="70%" valign="top">Redundant entries in source builds
+		are now flagged with a warning by default.
+		<p><img src="images/src-builds.png" alt="Source folder validation" /></p>
+		</td>
+	</tr>
+
+	<tr>
+		<td width="30%" valign="top" align="left"><a
+			name="usescanpatterntab" id="usescanpatterntab"></a><b>API use
+		report filters</b></td>
+		<td width="70%" valign="top">You can now add filter patterns to
+		API use reports to constrain what references are reported. This
+		feature is available in UI and in API tooling Ant tasks. When you
+		press <b>Add</b> on the <b>Patterns</b> tab a wizard allows you to
+		craft a variety of patterns. An archive pattern is used to skip
+		specific jars. A package pattern is used to define a package as API or
+		internal (to override a bundle manifest). A report conversion pattern
+		is used to skip specific references during report creation (by
+		specifying a regular expression of reference origins to skip).
+		<p><img src="images/pattern-wizard.png"
+			alt="Create new patterns using the convenient wizard" /></p>
+		<p>For example, to use an archive pattern to filter references
+		from specific archives within bundles, select <b>Archive Pattern</b>
+		and press <b>Next</b>. The wizard allows you to easily craft an
+		archive pattern.</p>
+		<p><img src="images/archive-wizard.png"
+			alt="Create a new archive pattern using the convenient wizard" /></p>
+		<p>When you press <b>Finish</b> the pattern appears in the <b>Patterns</b>
+		table.</p>
+		<p><img src="images/archive.png" alt="Archive pattern" /></p>
+		</td>
+	</tr>
 
-  <tr id="pde.target.state">
-    <td width="30%" valign="top" align="left"><b>Target platform state</b></td>
-    <td width="70%" valign="top"><p>The new <strong>Target Platform State</strong> 
-    view displays all the bundles used to build, run and debug plug-ins with. The state is 
-    built from the active target definition.</p>
-    <p><img src="images/targetstateview.png" alt="Target Platform State view" ></p></td>
-  </tr>
-  </tbody>
+	<tr>
+		<td width="30%" valign="top" align="left"><a name="meta-data"
+			id="meta-data"></a><b>API use report details</b></td>
+		<td width="70%" valign="top">You can now provide comments to
+		accompany an API use report, which will show up in the reports as
+		additional information along with the scan parameters for reference.
+		This feature is available in the UI and in API tooling Ant tasks.
+		<p><img src="images/description.png" alt="Scan description" /></p>
+		<p>The resulting report could look like the following.</p>
+		<p><img src="images/scandetails.png"
+			alt="Sample use scan details report header." /></p>
+		</td>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<h2><a name="Build">Build </a></h2>
+		</td>
+	</tr>
+
+	<tr id="error-options">
+		<td width="30%" valign="top" align="left"><b>Enhanced
+		compiler error options for PDE build</b></td>
+		<td width="70%" valign="top">PDE/Build can now take advantage of
+		new support from the JDT compiler to specify that certain warnings
+		should instead be reported as errors.
+		<p>Set the property <tt>javacErrors.&lt;library&gt;</tt> in your
+		build.properties. Similar to the <tt>javacWarnings.&lt;library&gt;</tt>
+		property, specify the <a
+			href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm">warnings</a>
+		that should be reported as errors:</p>
+		<pre>
+    	javacErrors.. = forbidden,discouraged,
+    	javacErrors.library.jar = deprecation,nullDereference
+    	</pre></td>
+	</tr>
+
+	<tr>
+		<td width="30%" valign="top" align="left"><a
+			name="buildproperties" id="buildproperties"></a><b>Synchronize
+		project settings with PDE build</b></td>
+		<td width="70%" valign="top">To ensure PDE will export and build
+		your project with the same settings as in the workspace there are new
+		checks to synchronize project specific compiler and build path
+		settings with <code>build.properties</code>. The following validations
+		are performed and quick fixes are provided for any problems.
+		<ul>
+			<li>Compiler compliance, source and target levels match <code>jre.compliance.profile</code>,
+			<code>javacSource</code>, and <code>javacTarget</code> properties
+			(only required when compiler settings do not match default settings
+			for a bundle's required execution environment).</li>
+			<li>Folders in <code>source.&lt;library&gt;</code> exist, are
+			source folders on the Java build path, and are not duplicated.</li>
+			<li>Folders in <code>output.&lt;library&gt;</code> exist, are
+			output folders or class file folders on the Java build path, and are
+			not duplicated.</li>
+			<li>Each <code>output.&lt;library&gt;</code> entry contains all
+			output locations of its corresponding source folders on the Java
+			build path.</li>
+			<li>Source folders targeted to different libraries do not share
+			the same output location.</li>
+			<li>Source folders are not included in <code>src.includes</code>
+			entries (they are included by default).</li>
+			<li>Additionally, a check can be performed to ensure an <code>output.&lt;library&gt;</code>
+			exists for each <code>source.&lt;library&gt;</code> entry. By
+			default, this problem is ignored but can be turned on via <b>Preferences
+			&gt; Plug-in Development &gt; Compilers</b> (or project specific <b>Properties
+			&gt; Plug-in Development &gt; Plug-in Manifest Compiler</b>). This option
+			is useful when using the PDE option to export existing class files
+			from the workspace.</li>
+		</ul>
+		<p><img src="images/buildproperties.png"
+			alt="Build.properties validation" /></p>
+		</td>
+	</tr>
+
+	<tr id="pdebuildsynch">
+		<td align="left" valign="top" width="30%"><b>Synchronize
+		project settings with PDE build</b></td>
+		<td valign="top" width="70%">It's easier to synchronize your
+		project specific compiler settings and file encoding settings with PDE
+		build. Two new options appear in the <b>Build</b> section of the <b>Preferences
+		> Plug-in Development > Compilers </b> preference page. By default the new
+		options are set to <b>Ignore</b>.
+		<p><img alt="Build validation settings"
+			title="Build Validation Settings" src="images/synch-settings.png" />
+		</p>
+		<p>When set to <b>Warning</b> or <b>Error</b> problem markers will
+		appear when your project settings are not reflected in <code>build.properties</code>.
+		Quick fixes are available to help you synchronize the settings.</p>
+		<p><img alt="Warnings" title="Build Validation Warnings"
+			src="images/synch-warnings.png" />
+		</p>
+		<p>A new <code>javacProjectSettings</code> property is supported
+		in <code>build.properties</code>. The value can be a project relative
+		path to a preference settings file of compiler options supported by
+		the JDT compiler, or it can simply by <code>true</code> to indicate
+		the default preference file should be used (<code>.settings/org.eclipse.jdt.core.prefs</code>).
+		</p>
+		</td>
+	</tr>
+	
+	<tr id="bundleCompilerArgs">
+		<td align="left" valign="top" width="30%"><b>Plug-in specific
+		compiler arguments</b></td>
+		<td valign="top" width="70%">A bundle can now specify custom
+		compiler arguments to be used in export or releng builds by setting <b><tt>compilerArgs</tt></b>
+		in its build.properties file..
+		<p>These arguments will be specified in addition to whatever
+		general compiler arguments are specified by the releng setup.</p>
+		</td>
+	</tr>
+	
+	<tr id="customCompilerAdapter">
+		<td align="left" valign="top" width="30%"><b>Custom compiler
+		adapters</b></td>
+		<td valign="top" width="70%">A bundle can now specify a custom
+		ant compiler adapter to be used during export or releng builds. This
+		allows for compiling non-java sources such as AspectJ or Groovy
+		provided a suitable adapter is available.
+		<p>Set <b><tt>compilerAdapter</tt></b> in the bundle's
+		build.properties file. As well, set <b><tt>sourceFileExtensions</tt></b>
+		to a list of file extensions which should be treated as source and
+		automatically copied to generated source bundles.</p>
+		</td>
+	</tr>
+
+	<tr id="pdeerrors">
+		<td align="left" valign="top" width="30%"><b>Improved error
+		reporting from PDE build</b></td>
+		<td valign="top" width="70%">A new <code>prereqErrors.log</code>
+		file is generated by PDE build. The file helps locate bundles lowest
+		on the stack with compilation errors. An entry is added for each
+		bundle with build errors describing any prerequisite bundles that
+		contained compile errors. Entries are added in the order bundles are
+		compiled. For example:
+		<p><code> org.eclipse.debug.ui_3.6.0.201004141459: the
+		following prerequisites contain compile errors<br />
+		&nbsp;&nbsp;&nbsp;&nbsp;org.eclipse.debug.core_3.6.0.201004141459 </code></p>
+		</td>
+	</tr>
 </table>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/build.properties b/eclipse/plugins/org.eclipse.pde.ds.core/build.properties
index 0650559..a03857d 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/build.properties
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/build.properties
@@ -1,3 +1,13 @@
+###############################################################################
+# 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
+###############################################################################
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/plugin.properties b/eclipse/plugins/org.eclipse.pde.ds.core/plugin.properties
index f4d05bd..2859591 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/plugin.properties
@@ -1,3 +1,13 @@
+###############################################################################
+# 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
+###############################################################################
 #Properties file for org.eclipse.pde.ds.core
 pluginName = PDE DS Core
 providerName = Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/plugin.xml b/eclipse/plugins/org.eclipse.pde.ds.core/plugin.xml
index 52be9bc..50acf01 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/plugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
+<!--
+    Copyright (c) 2008, 2009 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
    <extension
          point="org.eclipse.core.contenttype.contentTypes">
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/XMLErrorReporter.java b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/XMLErrorReporter.java
index 877fbf5..268fa3e 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/XMLErrorReporter.java
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/XMLErrorReporter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/messages.properties b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/messages.properties
index 371ff68..b00613d 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
+# Copyright (c) 2008, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/text/DSObject.java b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/text/DSObject.java
index 19beb75..c74ce57 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/text/DSObject.java
+++ b/eclipse/plugins/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/text/DSObject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ds.ui/build.properties b/eclipse/plugins/org.eclipse.pde.ds.ui/build.properties
index 4d648cc..b47c14e 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.ui/build.properties
+++ b/eclipse/plugins/org.eclipse.pde.ds.ui/build.properties
@@ -1,3 +1,13 @@
+###############################################################################
+# 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
+###############################################################################
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
diff --git a/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.properties b/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.properties
index 1384f92..db1c02f 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.properties
@@ -1,3 +1,13 @@
+###############################################################################
+# Copyright (c) 2008, 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
 #Properties file for org.eclipse.pde.ds.ui
 pluginName = PDE DS UI
 providerName = Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.xml b/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.xml
index 3b48c95..45a4c3b 100644
--- a/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.ds.ui/plugin.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
+<!--
+    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
+ -->
+
 <plugin>
    <extension
          point="org.eclipse.ui.editors">
diff --git a/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.properties b/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.properties
index 680b946..a2b6967 100644
--- a/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
+# Copyright (c) 2005, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -8,5 +8,5 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-pluginName = PDE JUnit Plug-in Test
+pluginName = PDE JUnit Runtime Support
 providerName = Eclipse.org
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.xml b/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.xml
index fcabeac..02be040 100644
--- a/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.junit.runtime/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.launching/build.properties b/eclipse/plugins/org.eclipse.pde.launching/build.properties
index bef8e0f..e3c966a 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/build.properties
+++ b/eclipse/plugins/org.eclipse.pde.launching/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.launching/plugin.xml b/eclipse/plugins/org.eclipse.pde.launching/plugin.xml
index e4e488f..e426863 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.launching/plugin.xml
@@ -1,5 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
+<?eclipse version="3.4"?><!--
+    Copyright (c) 2005, 2009 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <plugin>
    <extension-point id="org.eclipse.pde.ui.osgiFrameworks" name="%expoint.osgiLauncher.name" schema="schema/osgiFrameworks.exsd"/>
 
diff --git a/eclipse/plugins/org.eclipse.pde.launching/schema/osgiFrameworks.exsd b/eclipse/plugins/org.eclipse.pde.launching/schema/osgiFrameworks.exsd
index ed0855c..3c18fb1 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/schema/osgiFrameworks.exsd
+++ b/eclipse/plugins/org.eclipse.pde.launching/schema/osgiFrameworks.exsd
@@ -2,9 +2,9 @@
 <!-- Schema file written by PDE -->
 <schema targetNamespace="org.eclipse.pde.ui" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
-      <appinfo>
+      <appInfo>
          <meta.schema plugin="org.eclipse.pde.ui" id="osgiFrameworks" name="OSGi Frameworks"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          &lt;p&gt;
 This extension point is used to register new OSGi frameworks. Each framework is associated with a launcher delegate that is called when the OSGi framework is selected in the &lt;b&gt;OSGi Framework&lt;/b&gt; launch configuration.
@@ -16,9 +16,9 @@ This extension point is used to register new OSGi frameworks. Each framework is
 
    <element name="extension">
       <annotation>
-         <appinfo>
+         <appInfo>
             <meta.element />
-         </appinfo>
+         </appInfo>
       </annotation>
       <complexType>
          <sequence>
@@ -43,9 +43,9 @@ This extension point is used to register new OSGi frameworks. Each framework is
                <documentation>
                   
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute translatable="true"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
       </complexType>
@@ -65,9 +65,9 @@ This extension point is used to register new OSGi frameworks. Each framework is
                <documentation>
                   human-readable name of the OSGi framework
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute translatable="true"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
          <attribute name="launcherDelegate" type="string" use="required">
@@ -75,9 +75,9 @@ This extension point is used to register new OSGi frameworks. Each framework is
                <documentation>
                   a launch configuration delegate to launch the OSGi framework. The value of this attribute is the fully qualified name of the Java class that extends &lt;code&gt;org.eclipse.pde.launcher.AbstractPDELaunchConfiguration&lt;/code&gt;.
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute kind="java" basedOn="org.eclipse.pde.launcher.AbstractPDELaunchConfiguration"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
          <attribute name="initializer" type="string">
@@ -85,27 +85,30 @@ This extension point is used to register new OSGi frameworks. Each framework is
                <documentation>
                   initializes new OSGi Framework launch configurations with suitable defaults.  The value of this attribute must be a fully-qualified name of a Java class that extends the default implementation &lt;code&gt;org.eclipse.pde.launcher.OSGiLaunchConfigurationInitializer&lt;/code&gt;.  If not specified, the default initializer &lt;code&gt;org.eclipse.pde.launcher.OSGiLaunchConfigurationInitializer&lt;/code&gt; is instantiated.
                </documentation>
-               <appinfo>
+               <appInfo>
                   <meta.attribute kind="java" basedOn="org.eclipse.pde.launcher.OSGiLaunchConfigurationInitializer"/>
-               </appinfo>
+               </appInfo>
             </annotation>
          </attribute>
       </complexType>
    </element>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="since"/>
-      </appinfo>
+      </appInfo>
       <documentation>
-         3.6
+         3.3
+&lt;p&gt;
+This extension point was moved from &lt;code&gt;org.eclipse.pde.ui&lt;/code&gt; to &lt;code&gt;org.eclipse.pde.launching&lt;/code&gt; in 3.6. However, its qualified name and visibility remains the same.
+&lt;/p&gt;
       </documentation>
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="examples"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          &lt;p&gt;
 The following is an example of the extension point:
@@ -123,9 +126,9 @@ The following is an example of the extension point:
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="apiInfo"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          &lt;p&gt;
 The value of the attribute &lt;code&gt;launcherDelegate&lt;/code&gt; must be a fully qualified name of a Java class that extends &lt;code&gt;org.eclipse.pde.launcher.AbstractPDELaunchConfiguration&lt;/code&gt;.  If the launcher is to provide its own source lookup order, then the method &lt;code&gt;setDefaultSourceLocator&lt;/code&gt; should be overridden.
@@ -137,9 +140,9 @@ The value of the attribute &lt;code&gt;initializer&lt;/code&gt; must be a fully
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="implementation"/>
-      </appinfo>
+      </appInfo>
       <documentation>
          &lt;p&gt;
 PDE supplies the Equinox OSGi Framework extension to launch Equinox frameworks.
@@ -148,11 +151,11 @@ PDE supplies the Equinox OSGi Framework extension to launch Equinox frameworks.
    </annotation>
 
    <annotation>
-      <appinfo>
+      <appInfo>
          <meta.section type="copyright"/>
-      </appinfo>
+      </appInfo>
       <documentation>
-         Copyright (c) 2006 IBM Corporation and others.
+         Copyright (c) 2006, 2010 IBM Corporation and others.
 &lt;br&gt;
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 which 
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
index 6f1ea53..4e1b924 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
@@ -26,6 +26,14 @@ import org.osgi.framework.Version;
 
 public class BundleLauncherHelper {
 
+	/**
+	 * When creating a mapping of bundles to their start levels, update configurator is set
+	 * to auto start at level three.  However, if at launch time we are launching with both
+	 * simple configurator and update configurator, we change the start level as they 
+	 * shouldn't be started together.
+	 */
+	public static final String DEFAULT_UPDATE_CONFIGURATOR_START_LEVEL = "3:true"; //$NON-NLS-1$
+
 	public static final char VERSION_SEPARATOR = '*';
 
 	public static Map getWorkspaceBundleMap(ILaunchConfiguration configuration) throws CoreException {
@@ -71,17 +79,14 @@ public class BundleLauncherHelper {
 			HashMap workspaceFeatureMap = new HashMap();
 			HashMap externalFeatureMap = new HashMap();
 
-			FeatureModelManager fmm = new FeatureModelManager();
+			FeatureModelManager fmm = PDECore.getDefault().getFeatureModelManager();
 			IFeatureModel[] workspaceFeatureModels = fmm.getWorkspaceModels();
 			for (int i = 0; i < workspaceFeatureModels.length; i++) {
 				String id = workspaceFeatureModels[i].getFeature().getId();
 				workspaceFeatureMap.put(id, workspaceFeatureModels[i]);
 			}
-			fmm.shutdown();
 
-			ExternalFeatureModelManager efmm = new ExternalFeatureModelManager();
-			efmm.initialize();
-			IFeatureModel[] externalFeatureModels = efmm.getModels();
+			IFeatureModel[] externalFeatureModels = fmm.getExternalModels();
 			for (int i = 0; i < externalFeatureModels.length; i++) {
 				String id = externalFeatureModels[i].getFeature().getId();
 				externalFeatureMap.put(id, externalFeatureModels[i]);
@@ -102,7 +107,6 @@ public class BundleLauncherHelper {
 
 			// Get the feature model for each selected feature id and resolve its plugins
 			Set launchPlugins = new HashSet();
-			PluginModelManager pluginModelMgr = new PluginModelManager();
 			for (Iterator iterator = featureResolutionMap.keySet().iterator(); iterator.hasNext();) {
 				String id = (String) iterator.next();
 
@@ -126,39 +130,39 @@ public class BundleLauncherHelper {
 				}
 
 				for (int i = 0; i < featurePlugins.length; i++) {
-					ModelEntry modelEntry = pluginModelMgr.findEntry(featurePlugins[i].getId());
-					if (modelEntry == null) {
-						continue;
-					}
-					IPluginModelBase model = null;
-					if (IPDELauncherConstants.LOCATION_WORKSPACE.equalsIgnoreCase(pluginResolution)) {
-						model = getBestCandidateModel(modelEntry.getWorkspaceModels(), featurePlugins[i].getVersion());
+					ModelEntry modelEntry = PluginRegistry.findEntry(featurePlugins[i].getId());
+					if (modelEntry != null) {
+						IPluginModelBase model = findModel(modelEntry, featurePlugins[i].getVersion(), pluginResolution);
+						if (model != null)
+							launchPlugins.add(model);
 					}
-					if (model == null || IPDELauncherConstants.LOCATION_EXTERNAL.equalsIgnoreCase(pluginResolution)) {
-						model = getBestCandidateModel(modelEntry.getExternalModels(), featurePlugins[i].getVersion());
-					}
-					if (model == null || map.containsKey(model))
-						continue;
-					launchPlugins.add(model);
 				}
 
 				IFeatureImport[] featureImports = featureModel.getFeature().getImports();
 				for (int i = 0; i < featureImports.length; i++) {
 					if (featureImports[i].getType() == IFeatureImport.PLUGIN) {
-						ModelEntry modelEntry = pluginModelMgr.findEntry(featureImports[i].getId());
-						if (modelEntry == null) {
-							continue;
-						}
-						IPluginModelBase model = null;
-						if (IPDELauncherConstants.LOCATION_WORKSPACE.equalsIgnoreCase(pluginResolution)) {
-							model = getBestCandidateModel(modelEntry.getWorkspaceModels(), featureImports[i].getVersion());
-						} else if (IPDELauncherConstants.LOCATION_EXTERNAL.equalsIgnoreCase(pluginResolution)) {
-							model = getBestCandidateModel(modelEntry.getExternalModels(), featureImports[i].getVersion());
+						ModelEntry modelEntry = PluginRegistry.findEntry(featureImports[i].getId());
+						if (modelEntry != null) {
+							IPluginModelBase model = findModel(modelEntry, featureImports[i].getVersion(), pluginResolution);
+							if (model != null)
+								launchPlugins.add(model);
 						}
+					}
+				}
+			}
 
-						if (model == null || map.containsKey(model))
-							continue;
-						launchPlugins.add(model);
+			HashMap additionalPlugins = getAdditionalPlugins(configuration, true);
+			launchPlugins.addAll(additionalPlugins.keySet());
+
+			// Get any plug-ins required by the application/product set on the config
+			if (!osgi) {
+				String[] applicationIds = RequirementHelper.getApplicationRequirements(configuration);
+				for (int i = 0; i < applicationIds.length; i++) {
+					ModelEntry modelEntry = PluginRegistry.findEntry(applicationIds[i]);
+					if (modelEntry != null) {
+						IPluginModelBase model = findModel(modelEntry, null, defaultPluginResolution);
+						if (model != null)
+							launchPlugins.add(model);
 					}
 				}
 			}
@@ -169,25 +173,38 @@ public class BundleLauncherHelper {
 			Iterator it = additionalIds.iterator();
 			while (it.hasNext()) {
 				String id = (String) it.next();
-				ModelEntry modelEntry = pluginModelMgr.findEntry(id);
-				if (modelEntry == null) {
-					continue;
-				}
-				IPluginModelBase model = null;
-				if (IPDELauncherConstants.LOCATION_WORKSPACE.equalsIgnoreCase(defaultPluginResolution)) {
-					model = getBestCandidateModel(modelEntry.getWorkspaceModels(), null);
+				ModelEntry modelEntry = PluginRegistry.findEntry(id);
+				if (modelEntry != null) {
+					IPluginModelBase model = findModel(modelEntry, null, defaultPluginResolution);
+					if (model != null)
+						launchPlugins.add(model);
 				}
-				if (model == null || IPDELauncherConstants.LOCATION_EXTERNAL.equalsIgnoreCase(defaultPluginResolution)) {
-					model = getBestCandidateModel(modelEntry.getExternalModels(), null);
+			}
+
+			//remove conflicting duplicates - if they have same version or both are singleton
+			HashMap pluginMap = new HashMap();
+			List workspaceModels = null;
+			for (Iterator iterator = launchPlugins.iterator(); iterator.hasNext();) {
+				IPluginModelBase model = (IPluginModelBase) iterator.next();
+				String id = model.getPluginBase().getId();
+				if (pluginMap.containsKey(id)) {
+					IPluginModelBase existing = (IPluginModelBase) pluginMap.get(id);
+					if (model.getPluginBase().getVersion().equalsIgnoreCase(existing.getPluginBase().getVersion()) || (isSingleton(model) && isSingleton(existing))) {
+						if (workspaceModels == null)
+							workspaceModels = Arrays.asList(PluginRegistry.getWorkspaceModels());
+						if (!workspaceModels.contains(existing)) { //if existing model is external 							
+							pluginMap.put(id, model); // launch the workspace model 
+							continue;
+						}
+					}
 				}
-				if (model == null || map.containsKey(model))
-					continue;
-				launchPlugins.add(model);
+				pluginMap.put(id, model);
 			}
 
 			// Create the start levels for the selected plugins and add them to the map
-			for (Iterator iterator = launchPlugins.iterator(); iterator.hasNext();) {
-				addBundleToMap(map, (IPluginModelBase) iterator.next(), "default:default"); //$NON-NLS-1$
+			for (Iterator iterator = pluginMap.values().iterator(); iterator.hasNext();) {
+				IPluginModelBase model = (IPluginModelBase) iterator.next();
+				addBundleToMap(map, model, "default:default"); //$NON-NLS-1$
 			}
 			return map;
 		}
@@ -199,6 +216,45 @@ public class BundleLauncherHelper {
 		return map;
 	}
 
+	/**
+	 * Finds the best candidate model from the <code>resolution</code> location. If the model is not found there, 
+	 * alternate location is explored before returning <code>null</code>.
+	 * @param modelEntry
+	 * @param version
+	 * @param location
+	 * @return model
+	 */
+	private static IPluginModelBase findModel(ModelEntry modelEntry, String version, String location) {
+		IPluginModelBase model = null;
+		if (IPDELauncherConstants.LOCATION_WORKSPACE.equalsIgnoreCase(location)) {
+			model = getBestCandidateModel(modelEntry.getWorkspaceModels(), version);
+		}
+		if (model == null) {
+			model = getBestCandidateModel(modelEntry.getExternalModels(), version);
+		}
+		if (model == null && IPDELauncherConstants.LOCATION_EXTERNAL.equalsIgnoreCase(location)) {
+			model = getBestCandidateModel(modelEntry.getWorkspaceModels(), version);
+		}
+		return model;
+	}
+
+	private static boolean isSingleton(IPluginModelBase model) {
+		if (model.getBundleDescription() == null || model.getBundleDescription().isSingleton()) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns model from the given list that is a 'best match' to the given bundle version or
+	 * <code>null</code> if no enabled models were in the provided list.  The best match will
+	 * be an exact version match if one is found.  Otherwise a model that is resolved in the
+	 * OSGi state with the highest version is returned.
+	 * 
+	 * @param models list of candidate models to choose from
+	 * @param version the bundle version to find a match for
+	 * @return best candidate model from the list of models or <code>null</code> if no there were no acceptable models in the list
+	 */
 	private static IPluginModelBase getBestCandidateModel(IPluginModelBase[] models, String version) {
 		Version requiredVersion = version != null ? Version.parseVersion(version) : Version.emptyVersion;
 		IPluginModelBase model = null;
@@ -208,6 +264,9 @@ public class BundleLauncherHelper {
 
 			if (model == null) {
 				model = models[i];
+				if (requiredVersion.compareTo(model.getBundleDescription().getVersion()) == 0) {
+					break;
+				}
 				continue;
 			}
 
@@ -218,6 +277,10 @@ public class BundleLauncherHelper {
 
 			BundleDescription current = model.getBundleDescription();
 			BundleDescription candidate = models[i].getBundleDescription();
+			if (current == null || candidate == null) {
+				continue;
+			}
+
 			if (!current.isResolved() && candidate.isResolved()) {
 				model = models[i];
 				continue;
@@ -227,7 +290,7 @@ public class BundleLauncherHelper {
 				model = models[i];
 				break;
 			}
-			
+
 			if (current.getVersion().compareTo(candidate.getVersion()) < 0) {
 				model = models[i];
 			}
@@ -260,15 +323,19 @@ public class BundleLauncherHelper {
 			ModelEntry entry = PluginRegistry.findEntry(id);
 			if (entry != null) {
 				IPluginModelBase[] models = entry.getWorkspaceModels();
+				Set versions = new HashSet();
 				for (int i = 0; i < models.length; i++) {
 					IPluginBase base = models[i].getPluginBase();
+					String v = base.getVersion();
+					if (versions.add(v)) { // don't add exact same version more than once
 
-					// match only if...
-					// a) if we have the same version
-					// b) no version
-					// c) all else fails, if there's just one bundle available, use it
-					if (base.getVersion().equals(version) || version == null || models.length == 1)
-						addBundleToMap(map, models[i], token.substring(index + 1));
+						// match only if...
+						// a) if we have the same version
+						// b) no version
+						// c) all else fails, if there's just one bundle available, use it
+						if (base.getVersion().equals(version) || version == null || models.length == 1)
+							addBundleToMap(map, models[i], token.substring(index + 1));
+					}
 				}
 			}
 		}
@@ -312,7 +379,7 @@ public class BundleLauncherHelper {
 			} else if (IPDEBuildConstants.BUNDLE_OSGI.equals(modelName)) {
 				map.put(bundle, "-1:true"); //$NON-NLS-1$
 			} else if (IPDEBuildConstants.BUNDLE_UPDATE_CONFIGURATOR.equals(modelName)) {
-				map.put(bundle, "3:true"); //$NON-NLS-1$
+				map.put(bundle, DEFAULT_UPDATE_CONFIGURATOR_START_LEVEL);
 			} else if (IPDEBuildConstants.BUNDLE_CORE_RUNTIME.equals(modelName)) {
 				if (TargetPlatformHelper.getTargetVersion() > 3.1) {
 					map.put(bundle, "default:true"); //$NON-NLS-1$
@@ -478,4 +545,59 @@ public class BundleLauncherHelper {
 			wc.doSave();
 	}
 
+	public static String writeAdditionalPluginsEntry(IPluginModelBase model, String pluginResolution, boolean checked) {
+		IPluginBase base = model.getPluginBase();
+		String id = base.getId();
+		StringBuffer buffer = new StringBuffer(id);
+		buffer.append(':');
+		buffer.append(base.getVersion());
+		buffer.append(':');
+		buffer.append(pluginResolution);
+		buffer.append(':');
+		buffer.append(checked);
+		return buffer.toString();
+	}
+
+	/**
+	 * Returns a map of IPluginModelBase to their associated String resolution setting. Reads the 
+	 * additional plug-ins attribute of the given launch config and returns a map of plug-in models
+	 * to their resolution.  The attribute stores the id, version, enablement and resolution of each plug-in.
+	 * The models to be returned are determined by trying to find a model with a matching name, matching version
+	 * (or highest) in the resolution location (falling back on other locations if the chosen option is unavailable).
+	 * The includeDisabled option allows the returned list to contain only plug-ins that are enabled (checked) in
+	 * the config.
+	 * 
+	 * @param config launch config to read attribute from
+	 * @param onlyEnabled whether all plug-ins in the attribute should be returned or just the ones marked as enabled/checked
+	 * @return map of IPluginModelBase to String resolution setting
+	 * @throws CoreException if there is a problem reading the launch config
+	 */
+	public static HashMap getAdditionalPlugins(ILaunchConfiguration config, boolean onlyEnabled) throws CoreException {
+		HashMap resolvedAdditionalPlugins = new HashMap();
+		Set userAddedPlugins = config.getAttribute(IPDELauncherConstants.ADDITIONAL_PLUGINS, (Set) null);
+		String defaultPluginResolution = config.getAttribute(IPDELauncherConstants.FEATURE_PLUGIN_RESOLUTION, IPDELauncherConstants.LOCATION_WORKSPACE);
+		if (userAddedPlugins != null) {
+			for (Iterator iterator = userAddedPlugins.iterator(); iterator.hasNext();) {
+				String addedPlugin = (String) iterator.next();
+				String[] pluginData = addedPlugin.split(":"); //$NON-NLS-1$
+				boolean checked = Boolean.valueOf(pluginData[3]).booleanValue();
+				if (!onlyEnabled || checked) {
+					String id = pluginData[0];
+					String version = pluginData[1];
+					String pluginResolution = pluginData[2];
+					ModelEntry pluginModelEntry = PluginRegistry.findEntry(id);
+					if (pluginModelEntry != null) {
+						if (IPDELauncherConstants.LOCATION_DEFAULT.equalsIgnoreCase(pluginResolution)) {
+							pluginResolution = defaultPluginResolution;
+						}
+						IPluginModelBase model = findModel(pluginModelEntry, version, pluginResolution);
+						if (model != null) {
+							resolvedAdditionalPlugins.put(model, pluginData[2]);
+						}
+					}
+				}
+			}
+		}
+		return resolvedAdditionalPlugins;
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
index ff79e36..ff886cb 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,10 +17,8 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.debug.core.*;
 import org.eclipse.osgi.service.resolver.BundleDescription;
 import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.core.plugin.*;
-import org.eclipse.pde.internal.core.util.IdUtil;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.internal.launching.*;
-import org.eclipse.pde.launching.IPDELauncherConstants;
 
 public class EclipsePluginValidationOperation extends LaunchValidationOperation {
 	public static final int CREATE_EXTENSION_ERROR_CODE = 1000;
@@ -32,10 +30,16 @@ public class EclipsePluginValidationOperation extends LaunchValidationOperation
 		super(configuration);
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation#getModels()
+	 */
 	protected IPluginModelBase[] getModels() throws CoreException {
 		return BundleLauncherHelper.getMergedBundles(fLaunchConfiguration, false);
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation#run(org.eclipse.core.runtime.IProgressMonitor)
+	 */
 	public void run(IProgressMonitor monitor) throws CoreException {
 		super.run(monitor);
 		if (fExtensionErrors.size() > 0)
@@ -45,20 +49,19 @@ public class EclipsePluginValidationOperation extends LaunchValidationOperation
 
 	private void validateExtensions() {
 		try {
-			if (fLaunchConfiguration.getAttribute(IPDELauncherConstants.USE_PRODUCT, false)) {
-				String product = fLaunchConfiguration.getAttribute(IPDELauncherConstants.PRODUCT, (String) null);
-				if (product != null) {
-					validateExtension(product);
-					String application = getApplication(product);
-					if (application != null)
-						validateExtension(application);
-				}
-			} else {
-				String configType = fLaunchConfiguration.getType().getIdentifier();
-				String attribute = configType.equals(IPDELauncherConstants.ECLIPSE_APPLICATION_LAUNCH_CONFIGURATION_TYPE) ? IPDELauncherConstants.APPLICATION : IPDELauncherConstants.APP_TO_TEST;
-				String application = fLaunchConfiguration.getAttribute(attribute, TargetPlatform.getDefaultApplication());
-				if (!IPDEConstants.CORE_TEST_APPLICATION.equals(application)) {
-					validateExtension(application);
+			String[] required = RequirementHelper.getApplicationRequirements(fLaunchConfiguration);
+			for (int i = 0; i < required.length; i++) {
+				BundleDescription bundle = getState().getBundle(required[i], null);
+				if (bundle == null) {
+					String message = NLS.bind(PDEMessages.EclipsePluginValidationOperation_pluginMissing, required[i]);
+					Status status = new Status(IStatus.ERROR, IPDEConstants.PLUGIN_ID, CREATE_EXTENSION_ERROR_CODE, message, null);
+					IStatusHandler statusHandler = DebugPlugin.getDefault().getStatusHandler(status);
+					Object extensionError = null;
+					if (statusHandler == null)
+						extensionError = status.getMessage();
+					else
+						extensionError = statusHandler.handleStatus(status, required[i]);
+					fExtensionErrors.put(extensionError, EMPTY);
 				}
 			}
 		} catch (CoreException e) {
@@ -66,59 +69,16 @@ public class EclipsePluginValidationOperation extends LaunchValidationOperation
 		}
 	}
 
-	private String getApplication(String product) {
-		String bundleID = product;
-		int index = product.lastIndexOf('.');
-		if (index >= 0) {
-			bundleID = product.substring(0, product.lastIndexOf('.'));
-		}
-		BundleDescription bundle = getState().getBundle(bundleID, null);
-		if (bundle != null) {
-			IPluginModelBase model = PluginRegistry.findModel(bundle);
-			if (model != null) {
-				IPluginExtension[] extensions = model.getPluginBase().getExtensions();
-				for (int i = 0; i < extensions.length; i++) {
-					IPluginExtension ext = extensions[i];
-					String point = ext.getPoint();
-					if ("org.eclipse.core.runtime.products".equals(point) //$NON-NLS-1$
-							&& product.equals(IdUtil.getFullId(ext))) {
-						if (ext.getChildCount() == 1) {
-							IPluginElement prod = (IPluginElement) ext.getChildren()[0];
-							if (prod.getName().equals("product")) { //$NON-NLS-1$
-								IPluginAttribute attr = prod.getAttribute("application"); //$NON-NLS-1$
-								return attr != null ? attr.getValue() : null;
-							}
-						}
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	private void validateExtension(String id) throws CoreException {
-		int index = id.lastIndexOf('.');
-		if (index == -1)
-			return;
-		String bundleID = id.substring(0, index);
-		BundleDescription bundle = getState().getBundle(bundleID, null);
-		if (bundle == null) {
-			String message = NLS.bind(PDEMessages.EclipsePluginValidationOperation_pluginMissing, bundleID);
-			Status status = new Status(IStatus.ERROR, IPDEConstants.PLUGIN_ID, CREATE_EXTENSION_ERROR_CODE, message, null);
-			IStatusHandler statusHandler = DebugPlugin.getDefault().getStatusHandler(status);
-			Object extensionError = null;
-			if (statusHandler == null)
-				extensionError = status.getMessage();
-			else
-				extensionError = statusHandler.handleStatus(status, id);
-			fExtensionErrors.put(extensionError, EMPTY);
-		}
-	}
-
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation#hasErrors()
+	 */
 	public boolean hasErrors() {
 		return super.hasErrors() || fExtensionErrors.size() >= 1;
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation#getInput()
+	 */
 	public Map getInput() {
 		Map map = super.getInput();
 		map.putAll(fExtensionErrors);
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchConfigurationHelper.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchConfigurationHelper.java
index 387b8b8..e90518b 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchConfigurationHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchConfigurationHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -129,6 +129,15 @@ public class LaunchConfigurationHelper {
 		// Special processing for launching with p2
 		if (osgiBundles != null && osgiBundles.indexOf(IPDEBuildConstants.BUNDLE_SIMPLE_CONFIGURATOR) != -1 && bundles.containsKey(IPDEBuildConstants.BUNDLE_SIMPLE_CONFIGURATOR)) {
 
+			// If update configurator is set to its default start level, override it as simple/update configurators should not be autostarted together
+			Object updateConfiguratorBundle = bundles.get(IPDEBuildConstants.BUNDLE_UPDATE_CONFIGURATOR);
+			if (updateConfiguratorBundle != null) {
+				String startLevel = (String) bundlesWithStartLevels.get(updateConfiguratorBundle);
+				if (startLevel != null && startLevel.equals(BundleLauncherHelper.DEFAULT_UPDATE_CONFIGURATOR_START_LEVEL)) {
+					bundlesWithStartLevels.put(updateConfiguratorBundle, "4:false"); //$NON-NLS-1$
+				}
+			}
+
 			// Write out P2 files (bundles.txt)
 			URL bundlesTxt = null;
 			boolean usedefault = configuration.getAttribute(IPDELauncherConstants.USE_DEFAULT, true);
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchListener.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchListener.java
index 08fe6f3..bf5c49d 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchListener.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiMigrationDelegate.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiMigrationDelegate.java
index 73cb471..f7cc6cc 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiMigrationDelegate.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiMigrationDelegate.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.launching.launcher;
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/PDEMigrationDelegate.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/PDEMigrationDelegate.java
index 893c97f..6bedbf2 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/PDEMigrationDelegate.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/PDEMigrationDelegate.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.launching.launcher;
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/RequirementHelper.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/RequirementHelper.java
new file mode 100644
index 0000000..e6455ed
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/RequirementHelper.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.launching.launcher;
+
+import java.util.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.pde.core.plugin.TargetPlatform;
+import org.eclipse.pde.internal.core.PDECore;
+import org.eclipse.pde.internal.core.PDEExtensionRegistry;
+import org.eclipse.pde.internal.launching.IPDEConstants;
+import org.eclipse.pde.launching.IPDELauncherConstants;
+
+/**
+ * Centralizes code for validating the contents of a launch and finding missing requirements. 
+ * 
+ * @since 3.6
+ * @see EclipsePluginValidationOperation
+ */
+public class RequirementHelper {
+
+	/**
+	 * Returns a list of string plug-in ids that are required to launch the product, application
+	 * or application to test that the given launch configuration specifies.  Which attributes are
+	 * checked will depend on whether a product, an application or a junit application is being launched.
+	 * 
+	 * @param config launch configuration to get attributes from
+	 * @param plugins list of plugin models to look for product extensions in
+	 * @return list of string plug-in IDs that are required by the config's application/product settings
+	 * @throws CoreException if there is a problem reading the launch config
+	 */
+	public static String[] getApplicationRequirements(ILaunchConfiguration config) throws CoreException {
+		Set requiredIds = new HashSet();
+		if (config.getAttribute(IPDELauncherConstants.USE_PRODUCT, false)) {
+			String product = config.getAttribute(IPDELauncherConstants.PRODUCT, (String) null);
+			if (product != null) {
+				getProductRequirements(product, requiredIds);
+			}
+		} else {
+			String configType = config.getType().getIdentifier();
+			if (configType.equals(IPDELauncherConstants.ECLIPSE_APPLICATION_LAUNCH_CONFIGURATION_TYPE)) {
+				String application = config.getAttribute(IPDELauncherConstants.APPLICATION, TargetPlatform.getDefaultApplication());
+				if (!IPDEConstants.CORE_TEST_APPLICATION.equals(application)) {
+					getApplicationRequirements(application, requiredIds);
+				}
+			} else {
+				// Junit launch configs can have the core test application set in either the 'app to test' or the 'application' attribute
+				String application = config.getAttribute(IPDELauncherConstants.APP_TO_TEST, (String) null);
+				if (application == null) {
+					application = config.getAttribute(IPDELauncherConstants.APPLICATION, (String) null);
+				}
+				if (application == null) {
+					application = TargetPlatform.getDefaultApplication();
+				}
+				if (!IPDEConstants.CORE_TEST_APPLICATION.equals(application)) {
+					getApplicationRequirements(application, requiredIds);
+				}
+			}
+		}
+		return (String[]) requiredIds.toArray(new String[requiredIds.size()]);
+	}
+
+	private static void getProductRequirements(String product, Collection requiredIds) {
+		PDEExtensionRegistry registry = PDECore.getDefault().getExtensionsRegistry();
+		IExtension[] extensions = registry.findExtensions("org.eclipse.core.runtime.products", true); //$NON-NLS-1$
+		for (int i = 0; i < extensions.length; i++) {
+
+			if (product.equals(extensions[i].getUniqueIdentifier()) || product.equals(extensions[i].getSimpleIdentifier())) {
+				requiredIds.add(extensions[i].getNamespaceIdentifier());
+
+				IConfigurationElement[] elements = extensions[i].getConfigurationElements();
+				for (int j = 0; j < elements.length; j++) {
+					String application = elements[j].getAttribute("application"); //$NON-NLS-1$
+					if (application != null && application.length() > 0) {
+						getApplicationRequirements(application, requiredIds);
+					}
+				}
+				// Only one extension should match the product so break out of the looop
+				break;
+			}
+		}
+	}
+
+	private static void getApplicationRequirements(String application, Collection requiredIds) {
+		PDEExtensionRegistry registry = PDECore.getDefault().getExtensionsRegistry();
+		IExtension[] extensions = registry.findExtensions("org.eclipse.core.runtime.applications", true); //$NON-NLS-1$
+		for (int i = 0; i < extensions.length; i++) {
+			if (application.equals(extensions[i].getUniqueIdentifier()) || application.equals(extensions[i].getSimpleIdentifier())) {
+				requiredIds.add(extensions[i].getNamespaceIdentifier());
+				// Only one extension should match the application so break out of the looop
+				break;
+			}
+		}
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/VMHelper.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/VMHelper.java
index ae44a3d..6381d6e 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/VMHelper.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/VMHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
index 25f3396..a605dc6 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
@@ -78,6 +78,16 @@ public class EquinoxLaunchConfiguration extends AbstractPDELaunchConfiguration {
 
 		String bundles = null;
 		if (fAllBundles.containsKey(IPDEBuildConstants.BUNDLE_SIMPLE_CONFIGURATOR)) {
+
+			// If update configurator is set to its default start level, override it as simple/update configurators should not be autostarted together
+			Object updateConfiguratorBundle = fAllBundles.get(IPDEBuildConstants.BUNDLE_UPDATE_CONFIGURATOR);
+			if (updateConfiguratorBundle != null) {
+				String startLevel = (String) fModels.get(updateConfiguratorBundle);
+				if (startLevel != null && startLevel.equals(BundleLauncherHelper.DEFAULT_UPDATE_CONFIGURATOR_START_LEVEL)) {
+					fModels.put(updateConfiguratorBundle, "4:false"); //$NON-NLS-1$
+				}
+			}
+
 			// If simple configurator is being used, we need to write out the bundles.txt instead of writing out the list in the config.ini
 			URL bundlesTxt = P2Utils.writeBundlesTxt(fModels, start, autostart, getConfigDir(configuration), null);
 			if (bundlesTxt != null) {
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/IPDELauncherConstants.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/IPDELauncherConstants.java
index d4f0b24..9da82f5 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/IPDELauncherConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/IPDELauncherConstants.java
@@ -477,4 +477,17 @@ public interface IPDELauncherConstants {
 	 * @see #FEATURE_PLUGIN_RESOLUTION
 	 */
 	String LOCATION_WORKSPACE = "workspace"; //$NON-NLS-1$
+
+	/**
+	 * Launch configuration attribute key. The value is a List specifying the additional plug-ins that 
+	 * will be included along with the features in the list {@link #SELECTED_FEATURES}
+	 * when launching (when {@link #USE_CUSTOM_FEATURES} is set to <code>true</code>.
+	 * The values in the List are strings that contain the id and versions as follows:
+	 * <pre>
+	 * [plugin_id]:[version]
+	 * </pre>
+	 *  
+	 * @since 3.6
+	 */
+	String ADDITIONAL_PLUGINS = "additional_plugins"; //$NON-NLS-1$
 }
diff --git a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
index 85e4eb7..68b5d18 100644
--- a/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
+++ b/eclipse/plugins/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
@@ -111,7 +111,15 @@ public class JUnitLaunchConfigurationDelegate extends org.eclipse.jdt.junit.laun
 			programArgs.add(configuration.getAttribute(IPDELauncherConstants.PRODUCT, "")); //$NON-NLS-1$
 		} else {
 			// Specify the application to test
-			String defaultApplication = IPDEConstants.CORE_TEST_APPLICATION.equals(application) ? null : TargetPlatform.getDefaultApplication();
+			String defaultApplication = TargetPlatform.getDefaultApplication();
+			if (IPDEConstants.CORE_TEST_APPLICATION.equals(application)) {
+				// If we are launching the core test application we don't need a test app
+				defaultApplication = null;
+			} else if (IPDEConstants.NON_UI_THREAD_APPLICATION.equals(application)) {
+				// When running in a non-UI thread, run the core test app to avoid opening the workbench
+				defaultApplication = IPDEConstants.CORE_TEST_APPLICATION;
+			}
+
 			String testApplication = configuration.getAttribute(IPDELauncherConstants.APP_TO_TEST, defaultApplication);
 			if (testApplication != null) {
 				programArgs.add("-testApplication"); //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/plugin.xml b/eclipse/plugins/org.eclipse.pde.runtime/plugin.xml
index 9e7748c..0824cb2 100644
--- a/eclipse/plugins/org.eclipse.pde.runtime/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.runtime/plugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
+<?eclipse version="3.0"?>
+<!--
      Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/PDERuntimeMessages.java b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/PDERuntimeMessages.java
index d74ece8..1d2e9d6 100644
--- a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/PDERuntimeMessages.java
+++ b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/PDERuntimeMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
index a7332a4..fbc68f9 100644
--- a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
+++ b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
index 4a1a915..09fcf13 100644
--- a/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
+++ b/eclipse/plugins/org.eclipse.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ua.core/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.pde.ua.core/META-INF/MANIFEST.MF
index 71de598..ebbfc53 100644
--- a/eclipse/plugins/org.eclipse.pde.ua.core/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.pde.ua.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde.ua.core;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Activator: org.eclipse.pde.internal.ua.core.Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.pde.core;bundle-version="[3.3.0,4.0.0)",
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
index c537e4b..623965c 100644
--- a/eclipse/plugins/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde.ua.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-Activator: org.eclipse.pde.internal.ua.ui.PDEUserAssistanceUIPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
index 64fb2ee..bdd7396 100644
--- a/eclipse/plugins/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.pde.ui.templates;singleton:=true
-Bundle-Version: 3.4.100.qualifier
+Bundle-Version: 3.4.200.qualifier
 Bundle-Vendor: %bundleVendor
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Export-Package: org.eclipse.pde.internal.ui.templates;x-internal:=true,
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/plugin.xml b/eclipse/plugins/org.eclipse.pde.ui.templates/plugin.xml
index 3841156..0d09430 100644
--- a/eclipse/plugins/org.eclipse.pde.ui.templates/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.ui.templates/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
<!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+<?eclipse version="3.2"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java b/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
index bbc2e7c..10cb59c 100644
--- a/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
+++ b/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Code 9 Corporation - ongoing development
  *     Volker Wegert - bug 243087
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties b/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
index 5177f60..b358b0e 100644
--- a/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
+++ b/eclipse/plugins/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
@@ -1,11 +1,11 @@
 ###############################################################################
-#  Copyright (c) 2006, 2009 IBM Corporation and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
-#  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
-# 
-#  Contributors:
+# Copyright (c) 2006, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.ui/icons/etool16/export_target.gif b/eclipse/plugins/org.eclipse.pde.ui/icons/etool16/export_target.gif
new file mode 100644
index 0000000..b45bf34
Binary files /dev/null and b/eclipse/plugins/org.eclipse.pde.ui/icons/etool16/export_target.gif differ
diff --git a/eclipse/plugins/org.eclipse.pde.ui/plugin.properties b/eclipse/plugins/org.eclipse.pde.ui/plugin.properties
index 16be54c..de1f4cc 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde.ui/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -260,4 +260,4 @@ contentMergeViewers.plugin.label=Plug-in Source Compare
 structureMergeViewers.manifest.label=Manifest Structure Compare
 structureMergeViewers.plugin.label=Plug-in Structure Compare
 commandParameter.name = The initial search pattern for the artifact search dialog
-consoleFactory.label = OSGi Console
\ No newline at end of file
+consoleFactory.label = Host OSGi Console
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.pde.ui/plugin.xml b/eclipse/plugins/org.eclipse.pde.ui/plugin.xml
index fcb0c8e..c19e698 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde.ui/plugin.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?><!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -315,7 +315,7 @@
       <wizard
             category="org.eclipse.pde.ui.PluginDevelopment"
             class="org.eclipse.pde.internal.ui.wizards.exports.TargetDefinitionExportWizard"
-            icon="icons/obj16/target_profile_xml_obj.gif"
+            icon="icons/etool16/export_target.gif"
             id="org.eclipse.pde.target.wizard"
             name="%target.export.wizard.name">
          <description>
@@ -2087,4 +2087,14 @@
             label="%consoleFactory.label">
       </consoleFactory>
    </extension>
+   <extension
+         point="org.eclipse.ui.console.consolePageParticipants">
+      <consolePageParticipant
+            class="org.eclipse.pde.internal.ui.util.OSGiConsolePageParticipant"
+            id="org.eclipse.pde.ui.OSGiConsoleParticipant">
+         <enablement>
+            <test property="org.eclipse.ui.console.consoleTypeTest" value="osgiConsole"/>
+         </enablement>
+      </consolePageParticipant>
+   </extension>
 </plugin>
diff --git a/eclipse/plugins/org.eclipse.pde.ui/schema/bundleImportPages.exsd b/eclipse/plugins/org.eclipse.pde.ui/schema/bundleImportPages.exsd
index b58ac93..574dc4a 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/schema/bundleImportPages.exsd
+++ b/eclipse/plugins/org.eclipse.pde.ui/schema/bundleImportPages.exsd
@@ -8,7 +8,7 @@
       <documentation>
          &lt;strong&gt;EXPERIMENTAL&lt;/strong&gt;. This extension point has been added as part of a work in progress. There is no guarantee that this API will work or that it will remain the same in future releases. Please do not use this API without consulting with the PDE team.
 &lt;p&gt;
-A bundle import page provides a wizard page that can be used in the Plug-in import wizard to configure settings for bundles to be imported by a &lt;code&gt;org.eclipse.pde.core.bundleImporters&lt;/code&gt; extension.
+A bundle import page provides an optional wizard page used to configure settings for bundles to be imported by a &lt;code&gt;org.eclipse.pde.core.bundleImporters&lt;/code&gt; extension.
 &lt;/p&gt;
       </documentation>
    </annotation>
@@ -126,7 +126,7 @@ A bundle import page provides a wizard page that can be used in the Plug-in impo
          <meta.section type="implementation"/>
       </appInfo>
       <documentation>
-         PDE provides a wizard page for editing properties of bundles that can be imported by the CVS bundle importer.
+         PDE provides a wizard page for editing properties of bundles that can be imported by the CVS bundle importer. The page allows users to import specific bundle versions or from HEAD.
       </documentation>
    </annotation>
 
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IHelpContextIds.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IHelpContextIds.java
index 60f13ac..525a91e 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IHelpContextIds.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IHelpContextIds.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -77,6 +77,7 @@ public interface IHelpContextIds {
 	public static final String PLUGIN_IMPORT_SECOND_PAGE = PREFIX + "plugin_import_second_page"; //$NON-NLS-1$
 	public static final String PLUGIN_IMPORT_EXPRESS_PAGE = PREFIX + "plugin_import_express_page"; //$NON-NLS-1$
 	public static final String PLUGIN_IMPORT_OVERWRITE_DIALOG = PREFIX + "plugin_import_overwrite_dialog"; //$NON-NLS-1$
+	public static final String PLUGIN_IMPORT_CVS_PAGE = PREFIX + "plugin_import_cvs_page"; //$NON-NLS-1$
 
 	public static final String FEATURE_IMPORT_FIRST_PAGE = PREFIX + "feature_import_first_page"; //$NON-NLS-1$
 	public static final String FEATURE_IMPORT_SECOND_PAGE = PREFIX + "feature_import_second_page"; //$NON-NLS-1$
@@ -84,6 +85,7 @@ public interface IHelpContextIds {
 	public static final String PLUGIN_EXPORT_WIZARD = PREFIX + "plugin_export_wizard"; //$NON-NLS-1$
 	public static final String FEATURE_EXPORT_WIZARD = PREFIX + "feature_export_wizard"; //$NON-NLS-1$
 	public static final String PRODUCT_EXPORT_WIZARD = PREFIX + "product_export_wizard"; //$NON-NLS-1$
+	public static final String TARGET_EXPORT_WIZARD = PREFIX + "target_export_wizard"; //$NON-NLS-1$
 
 	public static final String TEMPLATE_SELECTION = PREFIX + "template_selection"; //$NON-NLS-1$
 	public static final String TEMPLATE_EDITOR = PREFIX + "template_editor"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPDEUIConstants.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPDEUIConstants.java
index 30b45f8..d4fbf95 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPDEUIConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPDEUIConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPreferenceConstants.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPreferenceConstants.java
index 75ce32a..f1eb63d 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPreferenceConstants.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/IPreferenceConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java
index c49a3e7..b72c44b 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java
@@ -15,6 +15,7 @@ import java.util.Locale;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jdt.ui.ISharedImages;
 import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -120,6 +121,9 @@ public class PDELabelProvider extends SharedLabelProvider {
 		if (obj instanceof Locale) {
 			return getObjectText((Locale) obj);
 		}
+		if (obj instanceof IStatus) {
+			return getObjectText((IStatus) obj);
+		}
 		return super.getText(obj);
 	}
 
@@ -333,6 +337,10 @@ public class PDELabelProvider extends SharedLabelProvider {
 		return preventNull(obj.getName());
 	}
 
+	private String getObjectText(IStatus status) {
+		return status.getMessage();
+	}
+
 	public Image getImage(Object obj) {
 		if (obj instanceof IPlugin) {
 			return getObjectImage((IPlugin) obj);
@@ -443,7 +451,9 @@ public class PDELabelProvider extends SharedLabelProvider {
 		if (obj instanceof Locale) {
 			return get(PDEPluginImages.DESC_DISCOVERY);
 		}
-
+		if (obj instanceof IStatus) {
+			return getObjectImage((IStatus) obj);
+		}
 		return super.getImage(obj);
 	}
 
@@ -741,6 +751,18 @@ public class PDELabelProvider extends SharedLabelProvider {
 		return JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_PACKAGE);
 	}
 
+	private Image getObjectImage(IStatus status) {
+		int sev = status.getSeverity();
+		switch (sev) {
+			case IStatus.ERROR :
+				return PlatformUI.getWorkbench().getSharedImages().getImage(org.eclipse.ui.ISharedImages.IMG_OBJS_ERROR_TSK);
+			case IStatus.WARNING :
+				return PlatformUI.getWorkbench().getSharedImages().getImage(org.eclipse.ui.ISharedImages.IMG_OBJS_WARN_TSK);
+			default :
+				return PlatformUI.getWorkbench().getSharedImages().getImage(org.eclipse.ui.ISharedImages.IMG_OBJS_INFO_TSK);
+		}
+	}
+
 	public boolean isFullNameModeEnabled() {
 		return PDEPlugin.isFullNameModeEnabled();
 	}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEPlugin.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEPlugin.java
index 42f37e4..f4a624e 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEPlugin.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
index dc2603e..ef1ae8f 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
@@ -62,6 +62,14 @@ public class PDEUIMessages extends NLS {
 
 	public static String ExternalizeStringsProcessor_errorMessage;
 
+	public static String FeatureBlock_AdditionalPluginsEntry;
+
+	public static String FeatureBlock_AddPluginsLabel;
+
+	public static String FeatureBlock_AllFeatureSelected;
+
+	public static String FeatureBlock_RemovePluginsLabel;
+
 	public static String FeatureBlock_addRequiredFeatues;
 
 	public static String FeatureBlock_default;
@@ -74,14 +82,20 @@ public class PDEUIMessages extends NLS {
 
 	public static String FeatureBlock_externalBefore;
 
+	public static String FeatureBlock_ExternalResolutionLabel;
+
 	public static String FeatureBlock_FeatureGroupDescription;
 
+	public static String FeatureBlock_SelectFeatures;
+
 	public static String FeatureBlock_UseWorkspaceFeatures;
 
 	public static String FeatureBlock_version;
 
 	public static String FeatureBlock_workspaceBefore;
 
+	public static String FeatureBlock_WorkspaceResolutionLabel;
+
 	public static String FeatureEditor_exportTooltip;
 
 	public static String JavaArgumentsTab_addVMArgs;
@@ -96,6 +110,8 @@ public class PDEUIMessages extends NLS {
 	public static String PDECompilersConfigurationBlock_3;
 	public static String PDECompilersConfigurationBlock_4;
 	public static String PDECompilersConfigurationBlock_5;
+	public static String PDECompilersConfigurationBlock_6;
+	public static String PDECompilersConfigurationBlock_7;
 
 	public static String PDECompilersConfigurationBlock_general;
 	public static String PDECompilersConfigurationBlock_versioning;
@@ -377,8 +393,12 @@ public class PDEUIMessages extends NLS {
 
 	public static String ImportActionGroup_binaryWithLinkedContent;
 
+	public static String ImportActionGroup_cannot_import;
+
 	public static String ImportActionGroup_importContributingPlugin;
 
+	public static String ImportActionGroup_Repository_project;
+
 	public static String InformationSection_0;
 
 	public static String InformationSection_1;
@@ -1024,7 +1044,6 @@ public class PDEUIMessages extends NLS {
 	public static String ContentPage_noid;
 	public static String ContentPage_invalidId;
 	public static String ContentPage_badversion;
-	public static String ContentPage_noname;
 	public static String ContentPage_nopid;
 	public static String ContentPage_pluginNotFound;
 	public static String ContentPage_illegalCharactersInID;
@@ -1686,6 +1705,7 @@ public class PDEUIMessages extends NLS {
 	public static String ExportTargetExportFeatures;
 	public static String ExportTargetExportPlugins;
 	public static String ExportActiveTargetDefinition;
+	public static String ExportActiveTargetDefinition_message;
 	public static String ExportTargetCurrentTarget;
 	public static String ExportTargetChooseFolder;
 	public static String ExportTargetBrowse;
@@ -1693,6 +1713,7 @@ public class PDEUIMessages extends NLS {
 	public static String ExportTargetSpecifyDestination;
 	public static String ExportTargetClearDestination;
 	public static String ExportTargetError_ChooseDestination;
+	public static String ExportTargetError_validPath;
 
 	public static String CategoryDetails_title;
 	public static String CategoryDetails_sectionDescription;
@@ -2898,5 +2919,6 @@ public class PDEUIMessages extends NLS {
 	public static String SearchRepositoriesForIUProposal_description;
 
 	public static String OSGiConsole_name;
+	public static String OSGiConsoleFactory_title;
 
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
index 836f9bd..044a3c0 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java
index e40f530..6cf7048 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildPage.java
index 9db4393..ce8a734 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.build;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/TypeCompletionProposal.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/TypeCompletionProposal.java
index 687987f..bc80b82 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/TypeCompletionProposal.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/TypeCompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/XMLCompletionProposal.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/XMLCompletionProposal.java
index 0854821..f1aa923 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/XMLCompletionProposal.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/XMLCompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureAdvancedPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureAdvancedPage.java
index 87e0cce..94a6959 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureAdvancedPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureAdvancedPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureDependenciesPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureDependenciesPage.java
index 790fffb..09db0b5 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureDependenciesPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureDependenciesPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureFormPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureFormPage.java
index 4f964a2..df1cf53 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureFormPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureFormPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureIncludesPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureIncludesPage.java
index b6979d5..eaadd86 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureIncludesPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureIncludesPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureReferencePage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureReferencePage.java
index 6877743..4958022 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureReferencePage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/FeatureReferencePage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/InfoFormPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/InfoFormPage.java
index 0a224b7..0ef2207 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/InfoFormPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/InfoFormPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.feature;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependenciesPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependenciesPage.java
index 1b11738..32c3fe6 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependenciesPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependenciesPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.plugin;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionPointsPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionPointsPage.java
index 445bf3e..1891261 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionPointsPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionPointsPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.plugin;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionsPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionsPage.java
index 1b40214..7b3d5ba 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionsPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExtensionsPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.plugin;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/GeneralInfoSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/GeneralInfoSection.java
index f8f6a50..f77db83 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/GeneralInfoSection.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/GeneralInfoSection.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -34,6 +34,9 @@ import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.forms.widgets.*;
 import org.osgi.framework.Constants;
 
+/**
+ * Provides the first section of the manifest editor describing the bundle id/name/version/etc.
+ */
 public abstract class GeneralInfoSection extends PDESection {
 	private static String PLATFORM_FILTER = "Eclipse-PlatformFilter"; //$NON-NLS-1$
 
@@ -106,7 +109,6 @@ public abstract class GeneralInfoSection extends PDESection {
 	 * a different model instance from the one used by the bundle error
 	 * reporter.  Things get out of sync between the form validator and 
 	 * source validator
-	 * @return
 	 */
 	protected IPluginModelBase getModelBase() {
 		// Find the model only on the first call
@@ -154,9 +156,6 @@ public abstract class GeneralInfoSection extends PDESection {
 		};
 	}
 
-	/**
-	 * @return
-	 */
 	private boolean validateIdEntry() {
 		// Value must be specified
 		return ControlValidationUtility.validateRequiredField(fIdEntry.getText().getText(), fIdEntryValidator, IMessageProvider.ERROR);
@@ -182,9 +181,6 @@ public abstract class GeneralInfoSection extends PDESection {
 		};
 	}
 
-	/**
-	 * @return
-	 */
 	private boolean validateVersionEntry() {
 		// Value must be specified
 		if (ControlValidationUtility.validateRequiredField(fVersionEntry.getText().getText(), fVersionEntryValidator, IMessageProvider.ERROR) == false) {
@@ -214,14 +210,7 @@ public abstract class GeneralInfoSection extends PDESection {
 		};
 	}
 
-	/**
-	 * @return
-	 */
 	private boolean validateNameEntry() {
-		// Value must be specified
-		if (ControlValidationUtility.validateRequiredField(fNameEntry.getText().getText(), fNameEntryValidator, IMessageProvider.ERROR) == false) {
-			return false;
-		}
 		// Value must be externalized
 		return ControlValidationUtility.validateTranslatableField(fNameEntry.getText().getText(), fNameEntryValidator, getModelBase(), getProject());
 	}
@@ -246,9 +235,6 @@ public abstract class GeneralInfoSection extends PDESection {
 		};
 	}
 
-	/**
-	 * @return
-	 */
 	private boolean validateProviderEntry() {
 		// No validation required for an optional field
 		if (fProviderEntry.getText().getText().length() == 0) {
@@ -274,9 +260,6 @@ public abstract class GeneralInfoSection extends PDESection {
 		};
 	}
 
-	/**
-	 * @return
-	 */
 	private boolean validatePlatformEntry() {
 		// No validation required for an optional field
 		if (fPlatformFilterEntry.getText().getText().length() == 0) {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
index 1235028..eb41035 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -162,18 +162,19 @@ public class JavaAttributeWizardPage extends NewClassWizardPage {
 			}
 			//			superclass and interface
 			if (attInfo == null) {
+				initialValues.interfaceName = "org.osgi.framework.BundleActivator"; //$NON-NLS-1$
+				initialValues.interfaceType = findTypeForName(initialValues.interfaceName);
 				IEclipsePreferences prefs = new ProjectScope(project).getNode(PDECore.PLUGIN_ID);
 				if (prefs != null && !prefs.getBoolean(ICoreConstants.EXTENSIONS_PROPERTY, true)) {
-					initialValues.interfaceName = "org.osgi.framework.BundleActivator"; //$NON-NLS-1$
-					initialValues.interfaceType = findTypeForName(initialValues.interfaceName);
 					return;
 				}
-				initialValues.superClassName = "org.eclipse.core.runtime.Plugin"; //$NON-NLS-1$
 				if (model != null) {
 					IPluginImport[] imports = model.getPluginBase().getImports();
 					for (int i = 0; i < imports.length; i++) {
 						if (imports[i].getId().equals("org.eclipse.ui")) { //$NON-NLS-1$
 							initialValues.superClassName = "org.eclipse.ui.plugin.AbstractUIPlugin"; //$NON-NLS-1$
+							initialValues.interfaceName = null;
+							initialValues.interfaceType = null;
 							break;
 						}
 					}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/LibrarySection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/LibrarySection.java
index 1dcc784..3396e0a 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/LibrarySection.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/LibrarySection.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,6 +25,7 @@ import org.eclipse.pde.internal.build.IBuildPropertiesConstants;
 import org.eclipse.pde.internal.core.ClasspathUtilCore;
 import org.eclipse.pde.internal.core.bundle.BundlePluginBase;
 import org.eclipse.pde.internal.core.plugin.PluginLibrary;
+import org.eclipse.pde.internal.core.project.PDEProject;
 import org.eclipse.pde.internal.ui.*;
 import org.eclipse.pde.internal.ui.editor.*;
 import org.eclipse.pde.internal.ui.editor.build.*;
@@ -434,30 +435,41 @@ public class LibrarySection extends TableSection implements IModelChangedListene
 		dialog.setTitle(PDEUIMessages.BuildEditor_ClasspathSection_jarsTitle);
 		dialog.setMessage(PDEUIMessages.ClasspathSection_jarsMessage);
 		IPluginLibrary[] libraries = getModel().getPluginBase().getLibraries();
+		IProject project = ((IModel) getPage().getModel()).getUnderlyingResource().getProject();
 		HashSet set = new HashSet();
-		for (int i = 0; i < libraries.length; i++)
-			set.add(new Path(ClasspathUtilCore.expandLibraryName(libraries[i].getName())));
+		for (int i = 0; i < libraries.length; i++) {
+			IPath bundlePath = new Path(ClasspathUtilCore.expandLibraryName(libraries[i].getName()));
+			IPath buildPath = PDEProject.getBundleRoot(project).getProjectRelativePath().append(bundlePath);
+			set.add(buildPath);
+		}
 
 		dialog.addFilter(new LibraryFilter(set));
-		IProject project = ((IModel) getPage().getModel()).getUnderlyingResource().getProject();
 		dialog.setInput(project);
 		dialog.setComparator(new ResourceComparator(ResourceComparator.NAME));
 		dialog.create();
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IHelpContextIds.ADD_LIBRARY);
 		if (dialog.open() == Window.OK) {
 			Object[] elements = dialog.getResult();
-			String[] filePaths = new String[elements.length];
+			String[] bundlePaths = new String[elements.length];
+			String[] buildPaths = new String[elements.length];
 			IPluginModelBase model = getModel();
 			ArrayList list = new ArrayList();
 			for (int i = 0; i < elements.length; i++) {
 				IResource elem = (IResource) elements[i];
-				IPath path = elem.getProjectRelativePath();
-				if (elem instanceof IFolder)
-					path = path.addTrailingSeparator();
-				filePaths[i] = path.toString();
+				IContainer bundleRoot = PDEProject.getBundleRoot(project);
+				IPath rootPath = bundleRoot.getFullPath();
+				// make path relative to bundle root
+				IPath bundlePath = elem.getFullPath().makeRelativeTo(rootPath);
+				IPath buildPath = elem.getProjectRelativePath();
+				if (elem instanceof IFolder) {
+					bundlePath = bundlePath.addTrailingSeparator();
+					buildPath = buildPath.addTrailingSeparator();
+				}
+				bundlePaths[i] = bundlePath.toString();
+				buildPaths[i] = buildPath.toString();
 				IPluginLibrary library = model.getPluginFactory().createLibrary();
 				try {
-					library.setName(filePaths[i]);
+					library.setName(bundlePaths[i]);
 					library.setExported(true);
 					model.getPluginBase().add(library);
 					list.add(library);
@@ -466,9 +478,9 @@ public class LibrarySection extends TableSection implements IModelChangedListene
 				}
 			}
 			checkSourceRootEntry();
-			updateBuildProperties(new String[filePaths.length], filePaths, false);
+			updateBuildProperties(new String[bundlePaths.length], bundlePaths, false);
 			if (updateClasspath[0])
-				updateJavaClasspathLibs(new String[filePaths.length], filePaths);
+				updateJavaClasspathLibs(new String[buildPaths.length], buildPaths);
 			fLibraryTable.setSelection(new StructuredSelection(list.toArray()));
 			fLibraryTable.getTable().setFocus();
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
index f602006..3d239e1 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.plugin;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/BrandingPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/BrandingPage.java
index 43bc03d..2aa8d20 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/BrandingPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/BrandingPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.product;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LaunchingPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LaunchingPage.java
index 3bc3386..a871953 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LaunchingPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LaunchingPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.product;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/SplashPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/SplashPage.java
index f05dc88..8c46418 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/SplashPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/SplashPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/ArchivePage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/ArchivePage.java
index 622dd25..1f11a2a 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/ArchivePage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/ArchivePage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.site;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
index 70cee86..8d8a1f3 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Bartosz Michalik <bartosz.michalik at gmail.com> - bug 181878
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/FeaturesPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/FeaturesPage.java
index e04f36c..9bdfc05 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/FeaturesPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/FeaturesPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.site;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ContentSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ContentSection.java
index 7902a22..4066933 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ContentSection.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ContentSection.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/ManifestConfiguration.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/ManifestConfiguration.java
index b8e3eb9..c8394e9 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/ManifestConfiguration.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/ManifestConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/PluginXMLConfiguration.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/PluginXMLConfiguration.java
index 647bc73..344e1b2 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/PluginXMLConfiguration.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/PluginXMLConfiguration.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.text;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/XMLReconcilingStrategy.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/XMLReconcilingStrategy.java
index 0c41d30..fb4a143 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/XMLReconcilingStrategy.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/text/XMLReconcilingStrategy.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.text;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
index 9348394..39b76a1 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
@@ -91,20 +91,18 @@ public abstract class AbstractPluginBlock {
 	private TreeEditor autoColumnEditor = null;
 
 	/**
-	 * Label provider for the tree.  Implements ILabelProvider so it can support the text filter (see PatternFilter)
+	 * Label provider for the tree.
 	 */
-	class OSGiLabelProvider extends StyledCellLabelProvider implements ILabelProvider {
-
-		PDELabelProvider pdeLabelProvider = new PDELabelProvider();
+	class OSGiLabelProvider extends PDELabelProvider {
 
 		public Image getColumnImage(Object obj, int index) {
-			return index == 0 ? pdeLabelProvider.getColumnImage(obj, index) : null;
+			return index == 0 ? super.getColumnImage(obj, index) : null;
 		}
 
 		public String getColumnText(Object obj, int index) {
 			switch (index) {
 				case 0 :
-					return pdeLabelProvider.getColumnText(obj, index);
+					return super.getColumnText(obj, index);
 				case 1 :
 					if (levelColumnCache != null && levelColumnCache.containsKey(obj))
 						return (String) levelColumnCache.get(obj);
@@ -117,42 +115,6 @@ public abstract class AbstractPluginBlock {
 					return ""; //$NON-NLS-1$
 			}
 		}
-
-		public void update(ViewerCell cell) {
-
-			int cellIndex = cell.getColumnIndex();
-			if (cellIndex == 0) {
-				StyledString label = new StyledString(pdeLabelProvider.getText(cell.getElement()));
-				int start = label.toString().indexOf('(');
-				int end = label.toString().indexOf(')');
-				if (end > start && start > -1) {
-					label.setStyle(start, 1, StyledString.QUALIFIER_STYLER);
-					label.setStyle(end, 1, StyledString.QUALIFIER_STYLER);
-					label.setStyle(start + 1, end - start, StyledString.QUALIFIER_STYLER);
-				}
-				cell.setStyleRanges(label.getStyleRanges());
-				cell.setText(label.toString());
-				cell.setImage(getColumnImage(cell.getElement(), cellIndex));
-			} else {
-				cell.setText(getColumnText(cell.getElement(), cellIndex));
-			}
-
-			super.update(cell);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-		 */
-		public Image getImage(Object element) {
-			return getColumnImage(element, 0);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-		 */
-		public String getText(Object element) {
-			return getColumnText(element, 0);
-		}
 	}
 
 	class Listener extends SelectionAdapter {
@@ -177,7 +139,7 @@ public abstract class AbstractPluginBlock {
 			} else if (source == fWorkingSetButton) {
 				handleWorkingSets();
 			} else if (source == fAddRequiredButton) {
-				computeSubset();
+				addRequiredPlugins();
 			} else if (source == fDefaultsButton) {
 				handleRestoreDefaults();
 			}
@@ -328,11 +290,11 @@ public abstract class AbstractPluginBlock {
 		gd.horizontalIndent = indent;
 		button.setLayoutData(gd);
 		button.addSelectionListener(fListener);
-
+		button.setFont(parent.getFont());
 		return button;
 	}
 
-	protected IBaseLabelProvider getLabelProvider() {
+	protected ILabelProvider getLabelProvider() {
 		return new OSGiLabelProvider();
 	}
 
@@ -439,6 +401,9 @@ public abstract class AbstractPluginBlock {
 		column3.setWidth(80);
 		tree.setHeaderVisible(true);
 
+		tree.setFont(composite.getFont());
+		fPluginFilteredTree.getFilterControl().setFont(composite.getFont());
+
 		createEditors();
 	}
 
@@ -546,7 +511,7 @@ public abstract class AbstractPluginBlock {
 	}
 
 	private void createButtonContainer(Composite parent, int vOffset) {
-		Composite composite = new Composite(parent, SWT.NONE);
+		Composite composite = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_VERTICAL);
 		GridLayout layout = new GridLayout();
 		layout.marginHeight = layout.marginWidth = 0;
 		layout.marginTop = vOffset;
@@ -558,11 +523,11 @@ public abstract class AbstractPluginBlock {
 		fWorkingSetButton = createButton(composite, PDEUIMessages.AdvancedLauncherTab_workingSet, SWT.PUSH);
 		fAddRequiredButton = createButton(composite, NLS.bind(PDEUIMessages.AdvancedLauncherTab_subset, fTab.getName()), SWT.PUSH);
 		fDefaultsButton = createButton(composite, PDEUIMessages.AdvancedLauncherTab_defaults, SWT.PUSH);
-		fFilterButton = createButton(composite, NLS.bind(PDEUIMessages.AdvancedLauncherTab_selectedBundles, fTab.getName().toLowerCase()), SWT.CHECK);
+		fFilterButton = createButton(composite, PDEUIMessages.AdvancedLauncherTab_selectedBundles, SWT.CHECK);
 		GridData filterButtonGridData = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_END);
 		fFilterButton.setLayoutData(filterButtonGridData);
 
-		fCounter = new Label(composite, SWT.NONE);
+		fCounter = SWTFactory.createLabel(composite, "", 1); //$NON-NLS-1$
 		fCounter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_END));
 		updateCounter();
 	}
@@ -774,7 +739,11 @@ public abstract class AbstractPluginBlock {
 		fFilterButton.setSelection(config.getAttribute(IPDELauncherConstants.SHOW_SELECTED_ONLY, false));
 	}
 
-	protected void computeSubset() {
+	/**
+	 * Looks at the currently checked plugins and finds any plug-ins required by them.  The required plug-ins are
+	 * then also checked in the tree
+	 */
+	protected void addRequiredPlugins() {
 		Object[] checked = fPluginTreeViewer.getCheckedElements();
 		ArrayList toCheck = new ArrayList(checked.length);
 		for (int i = 0; i < checked.length; i++)
@@ -810,28 +779,6 @@ public abstract class AbstractPluginBlock {
 		adjustGroupState();
 	}
 
-	protected void setCheckedElements(Object[] checked) {
-		fPluginTreeViewer.setCheckedElements(checked);
-		updateGroup(fWorkspacePlugins);
-		updateGroup(fExternalPlugins);
-	}
-
-	private void updateGroup(Object group) {
-		Widget item = fPluginTreeViewer.testFindItem(group);
-		if (item instanceof TreeItem) {
-			TreeItem[] items = ((TreeItem) item).getItems();
-			for (int i = 0; i < items.length; i++) {
-				TreeItem child = items[i];
-				if (child.getChecked() == (child.getText(1).length() == 0)) {
-					Object model = items[i].getData();
-					if (model instanceof IPluginModelBase) {
-						resetText((IPluginModelBase) model);
-					}
-				}
-			}
-		}
-	}
-
 	protected IPluginModelBase findPlugin(String id) {
 		ModelEntry entry = PluginRegistry.findEntry(id);
 		if (entry != null) {
@@ -855,6 +802,28 @@ public abstract class AbstractPluginBlock {
 		return null;
 	}
 
+	protected void setCheckedElements(Object[] checked) {
+		fPluginTreeViewer.setCheckedElements(checked);
+		updateGroup(fWorkspacePlugins);
+		updateGroup(fExternalPlugins);
+	}
+
+	private void updateGroup(Object group) {
+		Widget item = fPluginTreeViewer.testFindItem(group);
+		if (item instanceof TreeItem) {
+			TreeItem[] items = ((TreeItem) item).getItems();
+			for (int i = 0; i < items.length; i++) {
+				TreeItem child = items[i];
+				if (child.getChecked() == (child.getText(1).length() == 0)) {
+					Object model = items[i].getData();
+					if (model instanceof IPluginModelBase) {
+						resetText((IPluginModelBase) model);
+					}
+				}
+			}
+		}
+	}
+
 	protected void adjustGroupState() {
 		fPluginTreeViewer.setChecked(fExternalPlugins, fNumExternalChecked > 0);
 		fPluginTreeViewer.setGrayed(fExternalPlugins, fNumExternalChecked > 0 && fNumExternalChecked < getExternalModels().length);
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
index b3c2de4..026bd67 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
@@ -11,31 +11,41 @@
 package org.eclipse.pde.internal.ui.launcher;
 
 import java.util.*;
+import java.util.List;
 import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.window.Window;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.core.plugin.*;
 import org.eclipse.pde.internal.core.*;
 import org.eclipse.pde.internal.core.ifeature.*;
 import org.eclipse.pde.internal.launching.PDELaunchingPlugin;
-import org.eclipse.pde.internal.launching.launcher.EclipsePluginValidationOperation;
+import org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper;
 import org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation;
 import org.eclipse.pde.internal.ui.*;
+import org.eclipse.pde.internal.ui.dialogs.FeatureSelectionDialog;
+import org.eclipse.pde.internal.ui.dialogs.PluginSelectionDialog;
+import org.eclipse.pde.internal.ui.elements.NamedElement;
 import org.eclipse.pde.internal.ui.shared.CachedCheckboxTreeViewer;
 import org.eclipse.pde.internal.ui.shared.FilteredCheckboxTree;
 import org.eclipse.pde.launching.IPDELauncherConstants;
 import org.eclipse.pde.ui.launcher.AbstractLauncherTab;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.*;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.progress.WorkbenchJob;
 
 /**
  * Provides the UI that is displayed in the Plug-ins tab of PDE launch configs when the user
@@ -59,22 +69,58 @@ public class FeatureBlock {
 		public Image getColumnImage(Object obj, int index) {
 			// If there is a workspace feature available, display the workspace feature icon, even if the user has selected external
 			if (index == COLUMN_FEATURE_NAME) {
-				FeatureLaunchModel model = (FeatureLaunchModel) obj;
-				return pdeLabelProvider.getImage(model.getModel(true));
+				if (obj instanceof FeatureLaunchModel) {
+					FeatureLaunchModel model = (FeatureLaunchModel) obj;
+					return pdeLabelProvider.getImage(model.getModel(true));
+				} else if (obj instanceof NamedElement) {
+					return ((NamedElement) obj).getImage();
+				} else if (obj instanceof PluginLaunchModel) {
+					IPluginModelBase pluginModelBase = ((PluginLaunchModel) obj).getPluginModelBase();
+					return pdeLabelProvider.getColumnImage(pluginModelBase, index);
+				}
+			} else if (index == COLUMN_PLUGIN_RESOLUTION) {
+				if (obj instanceof PluginLaunchModel) {
+					PluginLaunchModel pluginLaunchModel = ((PluginLaunchModel) obj);
+					if (IPDELauncherConstants.LOCATION_WORKSPACE.equalsIgnoreCase(pluginLaunchModel.getPluginResolution())) {
+						ModelEntry modelEntry = PluginRegistry.findEntry(pluginLaunchModel.getPluginModelId());
+						if (!modelEntry.hasWorkspaceModels()) {
+							return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
+						}
+					} else if (IPDELauncherConstants.LOCATION_EXTERNAL.equalsIgnoreCase(pluginLaunchModel.getPluginResolution())) {
+						ModelEntry modelEntry = PluginRegistry.findEntry(pluginLaunchModel.getPluginModelId());
+						if (!modelEntry.hasExternalModels()) {
+							return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
+						}
+					}
+				}
 			}
 			return null;
 		}
 
 		public String getColumnText(Object obj, int index) {
-			FeatureLaunchModel model = (FeatureLaunchModel) obj;
-			switch (index) {
-				case COLUMN_FEATURE_NAME :
-					return model.getId();
-				case COLUMN_PLUGIN_RESOLUTION :
-					return model.getResolutionLabel();
-				default :
-					return ""; //$NON-NLS-1$
+			if (obj instanceof NamedElement && index == COLUMN_FEATURE_NAME)
+				return ((NamedElement) obj).getLabel();
+			if (obj instanceof PluginLaunchModel) {
+				PluginLaunchModel pluginLaunchModel = (PluginLaunchModel) obj;
+				switch (index) {
+					case COLUMN_FEATURE_NAME :
+						return pluginLaunchModel.getPluginModelId();
+					case COLUMN_PLUGIN_RESOLUTION :
+						return getResolutionLabel(pluginLaunchModel.getPluginResolution());
+				}
+			}
+			if (obj instanceof FeatureLaunchModel) {
+				FeatureLaunchModel model = (FeatureLaunchModel) obj;
+				switch (index) {
+					case COLUMN_FEATURE_NAME :
+						return model.getId();
+					case COLUMN_PLUGIN_RESOLUTION :
+						return getResolutionLabel(model.getResolutionValue());
+					default :
+						return ""; //$NON-NLS-1$
+				}
 			}
+			return null;
 		}
 
 		public void update(ViewerCell cell) {
@@ -87,21 +133,33 @@ public class FeatureBlock {
 					break;
 				case COLUMN_PLUGIN_RESOLUTION :
 					cell.setText(getColumnText(cell.getElement(), COLUMN_PLUGIN_RESOLUTION));
+					cell.setImage(getColumnImage(cell.getElement(), COLUMN_PLUGIN_RESOLUTION));
 					break;
 			}
 			super.update(cell);
 		}
 
 		private StyledString getStyledText(Object element) {
-			FeatureLaunchModel model = (FeatureLaunchModel) element;
 			StyledString styledString = new StyledString(getColumnText(element, COLUMN_FEATURE_NAME));
-			styledString.append(" (", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
-			String version = model.getVersion();
-			int index = version.indexOf('-');
-			if (index > -1)
-				version = version.substring(0, index);
-			styledString.append(version, StyledString.QUALIFIER_STYLER);
-			styledString.append(")", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+			if (element instanceof FeatureLaunchModel) {
+				FeatureLaunchModel featureModel = (FeatureLaunchModel) element;
+				styledString.append(" (", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+				String version = featureModel.getVersion();
+				int index = version.indexOf('-');
+				if (index > -1)
+					version = version.substring(0, index);
+				styledString.append(version, StyledString.QUALIFIER_STYLER);
+				styledString.append(")", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+			} else if (element instanceof PluginLaunchModel) {
+				PluginLaunchModel pluginLaunchModel = (PluginLaunchModel) element;
+				styledString.append(" (", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+				String version = pluginLaunchModel.getPluginModelBase().getPluginBase().getVersion();
+				int index = version.indexOf('-');
+				if (index > -1)
+					version = version.substring(0, index);
+				styledString.append(version, StyledString.QUALIFIER_STYLER);
+				styledString.append(")", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+			}
 			return styledString;
 		}
 
@@ -129,7 +187,13 @@ public class FeatureBlock {
 
 		public void widgetSelected(SelectionEvent e) {
 			Object source = e.getSource();
-			if (source == fSelectAllButton) {
+			if (source == fValidateButton) {
+				handleValidate();
+			} else if (source == fSelectFeaturesButton) {
+				handleSelectFeatures();
+			} else if (source == fAddPluginButton) {
+				handleAddPlugin();
+			} else if (source == fSelectAllButton) {
 				handleSelectAll(true);
 			} else if (source == fDeselectAllButton) {
 				handleSelectAll(false);
@@ -137,17 +201,139 @@ public class FeatureBlock {
 				handleAddRequired();
 			} else if (source == fDefaultsButton) {
 				handleRestoreDefaults();
-			} else if (source == fValidateButton) {
-				handleValidate();
+			} else if (source == fRemovePluginButton) {
+				handleRemovePlugin();
+			} else if (source == fFilterButton) {
+				handleFilterButton();
 			} else if (source instanceof TreeColumn) {
 				handleColumn((TreeColumn) source, 0);
 			}
+
 			fTab.updateLaunchConfigurationDialog();
 		}
 
+		private void handleSelectFeatures() {
+			ArrayList featureModels = new ArrayList();
+			for (Iterator iterator = fFeatureModels.values().iterator(); iterator.hasNext();) {
+				FeatureLaunchModel featureLaunchModel = (FeatureLaunchModel) iterator.next();
+				if (!fTree.getChecked(featureLaunchModel)) {
+					featureModels.add(featureLaunchModel.getModel(true));
+				}
+			}
+			if (featureModels.size() == 0) {
+				MessageDialog.openWarning(PDEPlugin.getActiveWorkbenchShell(), PDEUIMessages.FeatureSelectionDialog_title, PDEUIMessages.FeatureBlock_AllFeatureSelected);
+				return;
+			}
+			FeatureSelectionDialog dialog = new FeatureSelectionDialog(PDEPlugin.getActiveWorkbenchShell(), (IFeatureModel[]) featureModels.toArray(new IFeatureModel[featureModels.size()]), true);
+			dialog.create();
+			if (dialog.open() == Window.OK) {
+				fTree.getControl().setRedraw(false);
+				fTree.removeFilter(fSelectedOnlyFilter);
+				Object[] selectedModels = dialog.getResult();
+				for (int i = 0; i < selectedModels.length; i++) {
+					String id = ((IFeatureModel) selectedModels[i]).getFeature().getId();
+					fTree.setChecked(fFeatureModels.get(id), true);
+				}
+				if (fFilterButton.getSelection()) {
+					fTree.addFilter(fSelectedOnlyFilter);
+				}
+				fTree.getControl().setRedraw(true);
+				updateCounter();
+			}
+		}
+
+		private void handleFilterButton() {
+			if (fFilterButton.getSelection()) {
+				fTree.addFilter(fSelectedOnlyFilter);
+			} else {
+				fTree.removeFilter(fSelectedOnlyFilter);
+			}
+			fTree.expandAll();
+		}
+
+		private void handleRemovePlugin() {
+			// Any changes here need to be reflected in the SWT.DEL key remove handling
+			IStructuredSelection selection = (IStructuredSelection) fTree.getSelection();
+			int index = fAdditionalPlugins.indexOf(selection.getFirstElement());
+			fAdditionalPlugins.removeAll(selection.toList());
+			fTree.remove(selection.toArray());
+			List input = (List) fTree.getInput();
+			input.removeAll(selection.toList());
+			if (fAdditionalPlugins.size() == 0) {
+				fTree.remove(fAdditionalPluginsParentElement);
+				input.remove(fAdditionalPluginsParentElement);
+				fRemovePluginButton.setEnabled(false);
+			} else {
+				index--;
+				fTree.setSelection(new StructuredSelection(fAdditionalPlugins.get(index > 0 ? index : 0)), true);
+				fRemovePluginButton.setEnabled(true);
+			}
+			updateCounter();
+		}
+
+		private void handleAddPlugin() {
+			PluginSelectionDialog dialog = new PluginSelectionDialog(PDEPlugin.getActiveWorkbenchShell(), getAvailablePlugins(), true);
+			if (dialog.open() == Window.OK) {
+
+				Object[] models = dialog.getResult();
+				ArrayList modelList = new ArrayList(models.length);
+				for (int i = 0; i < models.length; i++) {
+					PluginLaunchModel pluginLaunchModel = new PluginLaunchModel((IPluginModelBase) models[i], IPDELauncherConstants.LOCATION_DEFAULT);
+					modelList.add(pluginLaunchModel);
+				}
+
+				List input = (List) fTree.getInput();
+				if (!input.contains(fAdditionalPluginsParentElement)) {
+					input.add(fAdditionalPluginsParentElement);
+				}
+				fAdditionalPlugins.addAll(modelList);
+
+				fTree.getControl().setRedraw(false);
+				fTree.removeFilter(fSelectedOnlyFilter);
+				fTree.refresh();
+				for (Iterator iterator = modelList.iterator(); iterator.hasNext();) {
+					fTree.setChecked(iterator.next(), true);
+				}
+				fTree.setSelection(new StructuredSelection(modelList.get(modelList.size() - 1)), true);
+				fTree.getTree().setSortColumn(fTree.getTree().getSortColumn());
+				fTree.getTree().setSortDirection(fTree.getTree().getSortDirection());
+				if (fFilterButton.getSelection()) {
+					fTree.addFilter(fSelectedOnlyFilter);
+				}
+				fTree.getControl().setRedraw(true);
+				updateCounter();
+			}
+		}
+
+		private IPluginModelBase[] getAvailablePlugins() {
+			IPluginModelBase[] plugins = PluginRegistry.getActiveModels(false);
+			if (fAdditionalPlugins.isEmpty()) {
+				return plugins;
+			}
+			Set additionalPlugins = new HashSet();
+			for (Iterator iterator = fAdditionalPlugins.iterator(); iterator.hasNext();) {
+				PluginLaunchModel model = (PluginLaunchModel) iterator.next();
+				additionalPlugins.add(model.getPluginModelBase());
+			}
+			List result = new ArrayList();
+			for (int i = 0; i < plugins.length; i++) {
+				if (!additionalPlugins.contains(plugins[i])) {
+					result.add(plugins[i]);
+				}
+			}
+			return (IPluginModelBase[]) result.toArray(new IPluginModelBase[result.size()]);
+		}
+
 		private void handleValidate() {
 			if (fOperation == null)
-				fOperation = new EclipsePluginValidationOperation(fLaunchConfig);
+				// Unlike PluginBlock, we don't want to validate the application/product requirements because we will grab them automatically at launch time
+				fOperation = new LaunchValidationOperation(fLaunchConfig) {
+					protected IPluginModelBase[] getModels() throws CoreException {
+						// The feature block is used in both the OSGi config and Eclipse configs, use the tab id to determine which we are using
+						boolean isOSGiTab = fTab.getId().equals(IPDELauncherConstants.TAB_BUNDLES_ID);
+						return BundleLauncherHelper.getMergedBundles(fLaunchConfiguration, isOSGiTab);
+					}
+				};
 			try {
 				fOperation.run(new NullProgressMonitor());
 			} catch (CoreException e) {
@@ -180,18 +366,25 @@ public class FeatureBlock {
 				Object[] features = fTree.getCheckedElements();
 				Set requiredFeatureIDs = new HashSet();
 				for (int i = 0; i < features.length; i++) {
-					requiredFeatureIDs.add(((FeatureLaunchModel) features[i]).getId());
-					getFeatureDependencies(((FeatureLaunchModel) features[i]).getModel(fFeatureWorkspaceButton.getSelection()), requiredFeatureIDs);
+					if (features[i] instanceof FeatureLaunchModel) {
+						requiredFeatureIDs.add(((FeatureLaunchModel) features[i]).getId());
+						getFeatureDependencies(((FeatureLaunchModel) features[i]).getModel(fFeatureWorkspaceButton.getSelection()), requiredFeatureIDs);
+					}
 				}
 
-				Set toCheck = new HashSet();
+				fTree.getControl().setRedraw(false);
+				fTree.removeFilter(fSelectedOnlyFilter);
 				for (Iterator iterator = requiredFeatureIDs.iterator(); iterator.hasNext();) {
 					Object featureModel = fFeatureModels.get(iterator.next());
 					if (featureModel != null) {
-						toCheck.add(featureModel);
+						fTree.setChecked(featureModel, true);
 					}
 				}
-				fTree.setCheckedElements(toCheck.toArray());
+				if (fFilterButton.getSelection()) {
+					fTree.addFilter(fSelectedOnlyFilter);
+				}
+				fTree.getControl().setRedraw(true);
+				updateCounter();
 			}
 		}
 
@@ -234,7 +427,7 @@ public class FeatureBlock {
 				}
 			}
 			tree.setSortDirection(sortDirn);
-			int sortOrder = sortDirn == SWT.UP ? 1 : -1;
+			int sortOrder = sortDirn == SWT.UP ? -1 : 1;
 			int sortColumn = ((Integer) tc.getData(COLUMN_ID)).intValue();
 			fTree.setSorter(new TreeSorter(sortColumn, sortOrder));
 			saveSortOrder();
@@ -243,61 +436,112 @@ public class FeatureBlock {
 		private void handleRestoreDefaults() {
 			fWorkspacePluginButton.setSelection(true);
 			fExternalPluginButton.setSelection(false);
+
+			List input = (List) fTree.getInput();
+			input.removeAll(fAdditionalPlugins);
+			input.remove(fAdditionalPluginsParentElement);
+			fAdditionalPlugins.clear();
+
+			fRemovePluginButton.setEnabled(false);
 			for (Iterator iterator = fFeatureModels.values().iterator(); iterator.hasNext();) {
 				FeatureLaunchModel model = (FeatureLaunchModel) iterator.next();
 				model.setPluginResolution(IPDELauncherConstants.LOCATION_DEFAULT);
 			}
-			fTree.setAllChecked(true);
+
+			fTree.getControl().setRedraw(false);
+			fTree.removeFilter(fSelectedOnlyFilter);
+			fTree.setCheckedElements(new Object[0]); // Make sure the check state cache is cleared
 			fTree.refresh();
+			fTree.setAllChecked(true);
+			if (fFilterButton.getSelection()) {
+				fTree.addFilter(fSelectedOnlyFilter);
+			}
+			fTree.getControl().setRedraw(true);
 			updateCounter();
 		}
 
 		private void handleSelectAll(boolean state) {
+			fTree.getControl().setRedraw(false);
+			fTree.removeFilter(fSelectedOnlyFilter);
 			fTree.setAllChecked(state);
+			if (fFilterButton.getSelection()) {
+				fTree.addFilter(fSelectedOnlyFilter);
+			}
+			fTree.getControl().setRedraw(true);
 			updateCounter();
 		}
 	}
 
 	class LocationCellModifier implements ICellModifier {
 		public boolean canModify(Object element, String property) {
-			return fTree.getChecked(element);
+			if (element instanceof FeatureLaunchModel || element instanceof PluginLaunchModel) {
+				return fTree.getChecked(element);
+			}
+			return false;
 		}
 
 		public Object getValue(Object element, String property) {
 			if (property == PROPERTY_RESOLUTION) {
-				String location = ((FeatureLaunchModel) element).getResolutionValue();
-				if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_DEFAULT)) {
-					return new Integer(0);
-				} else if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_WORKSPACE)) {
-					return new Integer(1);
-				} else if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_EXTERNAL)) {
-					return new Integer(2);
+				if (element instanceof FeatureLaunchModel) {
+					String location = ((FeatureLaunchModel) element).getResolutionValue();
+					return getLocationIndex(location);
+				} else if (element instanceof PluginLaunchModel) {
+					String location = ((PluginLaunchModel) element).getPluginResolution();
+					return getLocationIndex(location);
 				}
 			}
 			return null;
 		}
 
+		private Object getLocationIndex(String location) {
+			if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_DEFAULT)) {
+				return new Integer(0);
+			} else if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_WORKSPACE)) {
+				return new Integer(1);
+			} else if (location.equalsIgnoreCase(IPDELauncherConstants.LOCATION_EXTERNAL)) {
+				return new Integer(2);
+			}
+			return null;
+		}
+
 		public void modify(Object item, String property, Object value) {
-			if (property == PROPERTY_RESOLUTION) {
-				FeatureLaunchModel model = (FeatureLaunchModel) ((TreeItem) item).getData();
+			if (property == PROPERTY_RESOLUTION && value != null) {
+				Object data = ((TreeItem) item).getData();
 				int comboIndex = ((Integer) value).intValue();
-				String location = null;
-				switch (comboIndex) {
-					case 0 :
-						location = IPDELauncherConstants.LOCATION_DEFAULT;
-						break;
-					case 1 :
-						location = IPDELauncherConstants.LOCATION_WORKSPACE;
-						break;
-					case 2 :
-						location = IPDELauncherConstants.LOCATION_EXTERNAL;
+				String location = getLocation(comboIndex);
+				if (data instanceof FeatureLaunchModel) {
+					FeatureLaunchModel model = (FeatureLaunchModel) data;
+					if (!location.equalsIgnoreCase(model.getResolutionValue())) {
+						model.setPluginResolution(location);
+						fTree.refresh(model, true);
+						fTab.updateLaunchConfigurationDialog();
+					}
+				} else if (data instanceof PluginLaunchModel) {
+					PluginLaunchModel pluginLaunchModel = (PluginLaunchModel) data;
+					if (!location.equalsIgnoreCase(pluginLaunchModel.getPluginResolution())) {
+						pluginLaunchModel.setPluginResolution(location);
+						fTree.refresh(pluginLaunchModel, true);
+						fTab.updateLaunchConfigurationDialog();
+					}
 				}
 
-				model.setPluginResolution(location);
-				fTree.refresh(model, true);
-				fTab.updateLaunchConfigurationDialog();
 			}
 		}
+
+		private String getLocation(int comboIndex) {
+			String location = null;
+			switch (comboIndex) {
+				case 0 :
+					location = IPDELauncherConstants.LOCATION_DEFAULT;
+					break;
+				case 1 :
+					location = IPDELauncherConstants.LOCATION_WORKSPACE;
+					break;
+				case 2 :
+					location = IPDELauncherConstants.LOCATION_EXTERNAL;
+			}
+			return location;
+		}
 	}
 
 	class PluginContentProvider implements ITreeContentProvider {
@@ -319,14 +563,21 @@ public class FeatureBlock {
 		}
 
 		public Object[] getChildren(Object parentElement) {
+			if (parentElement == fAdditionalPluginsParentElement) {
+				return fAdditionalPlugins.toArray();
+			}
 			return new Object[0];
 		}
 
 		public Object getParent(Object element) {
+			if (element instanceof PluginLaunchModel)
+				return fAdditionalPluginsParentElement;
 			return null;
 		}
 
 		public boolean hasChildren(Object element) {
+			if (element instanceof NamedElement)
+				return true;
 			return false;
 		}
 	}
@@ -344,11 +595,48 @@ public class FeatureBlock {
 		 * @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 (e1 == fAdditionalPluginsParentElement) {
+				return 1;
+			}
+			if (e2 == fAdditionalPluginsParentElement) {
+				return -1;
+			}
 			FeatureTreeLabelProvider labelProvider = (FeatureTreeLabelProvider) fTree.getLabelProvider();
 			return sortOrder * super.compare(viewer, labelProvider.getColumnText(e1, sortColumn), labelProvider.getColumnText(e2, sortColumn));
 		}
 	}
 
+	class PluginLaunchModel {
+		private IPluginModelBase fPluginModelBase;
+		private String fPluginResolution;
+
+		public PluginLaunchModel(IPluginModelBase pluginModelBase, String pluginResolution) {
+			fPluginModelBase = pluginModelBase;
+			fPluginResolution = pluginResolution;
+		}
+
+		public IPluginModelBase getPluginModelBase() {
+			return fPluginModelBase;
+		}
+
+		public String getPluginResolution() {
+			return fPluginResolution;
+		}
+
+		public void setPluginResolution(String pluginResolution) {
+			fPluginResolution = pluginResolution;
+		}
+
+		public String getPluginModelId() {
+			return fPluginModelBase.getPluginBase().getId();
+		}
+
+		public String getPluginModelVersion() {
+			return fPluginModelBase.getPluginBase().getVersion();
+		}
+
+	}
+
 	class FeatureLaunchModel {
 		public IFeatureModel fWorkspaceModel;
 		public IFeatureModel fTargetModel;
@@ -404,27 +692,40 @@ public class FeatureBlock {
 		}
 
 		/**
-		 * @return the translated string label for the current resolution value
+		 * @return resolution value that can be stored in the config, one of {@link IPDELauncherConstants#LOCATION_DEFAULT}, {@link IPDELauncherConstants#LOCATION_WORKSPACE} or {@link IPDELauncherConstants#LOCATION_EXTERNAL}
 		 */
-		public String getResolutionLabel() {
-			if (fPluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_DEFAULT)) {
-				return PDEUIMessages.FeatureBlock_default;
-			} else if (fPluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_WORKSPACE)) {
-				return PDEUIMessages.FeatureBlock_workspaceBefore;
-			} else if (fPluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_EXTERNAL)) {
-				return PDEUIMessages.FeatureBlock_externalBefore;
-			}
-			return ""; //$NON-NLS-1$
+		public String getResolutionValue() {
+			return fPluginResolution;
 		}
 
-		/**
-		 * @return resolution value that can be stored in the config, one of {@link IPDELauncherConstants#LOCATION_DEFAULT}, {@link IPDELauncherConstants#LOCATION_WORKSPACE} or {@link IPDELauncherConstants#LOCATION_EXTERNAL}
+		/* (non-Javadoc)
+		 * @see java.lang.Object#toString()
 		 */
-		public String getResolutionValue() {
+		public String toString() {
+			if (fWorkspaceModel != null) {
+				return fWorkspaceModel.getFeature().getId() + " " + fPluginResolution; //$NON-NLS-1$
+			}
+			if (fTargetModel != null) {
+				return fTargetModel.getFeature().getId() + " " + fPluginResolution; //$NON-NLS-1$
+			}
 			return fPluginResolution;
 		}
 	}
 
+	/**
+	 * @return the translated string label for the current resolution value
+	 */
+	public String getResolutionLabel(String pluginResolution) {
+		if (pluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_DEFAULT)) {
+			return PDEUIMessages.FeatureBlock_default;
+		} else if (pluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_WORKSPACE)) {
+			return PDEUIMessages.FeatureBlock_WorkspaceResolutionLabel;
+		} else if (pluginResolution.equalsIgnoreCase(IPDELauncherConstants.LOCATION_EXTERNAL)) {
+			return PDEUIMessages.FeatureBlock_ExternalResolutionLabel;
+		}
+		return ""; //$NON-NLS-1$
+	}
+
 	private static final int COLUMN_FEATURE_NAME = 0;
 	private static final int COLUMN_PLUGIN_RESOLUTION = 1;
 
@@ -438,11 +739,15 @@ public class FeatureBlock {
 
 	private Button fWorkspacePluginButton;
 	private Button fExternalPluginButton;
+	private Button fFilterButton;
 	private Label fCounter;
 
 	private Button fFeatureWorkspaceButton;
 	private Button fAutoValidate;
 	private Button fValidateButton;
+	private Button fSelectFeaturesButton;
+	private Button fAddPluginButton;
+	private Button fRemovePluginButton;
 
 	private ILaunchConfiguration fLaunchConfig;
 	private ButtonSelectionListener fListener;
@@ -450,10 +755,14 @@ public class FeatureBlock {
 	private CachedCheckboxTreeViewer fTree;
 	private LaunchValidationOperation fOperation;
 
+	private ViewerFilter fSelectedOnlyFilter;
+
 	/**
 	 * Maps feature ID to the FeatureLaunchModel that represents the feature in the tree
 	 */
 	private Map fFeatureModels;
+	private List fAdditionalPlugins;
+	private NamedElement fAdditionalPluginsParentElement;
 
 	public FeatureBlock(AbstractLauncherTab pluginsTab) {
 		Assert.isNotNull(pluginsTab);
@@ -463,6 +772,11 @@ public class FeatureBlock {
 
 	public void createControl(Composite parent, int span, int indent) {
 		fListener = new ButtonSelectionListener();
+		fSelectedOnlyFilter = new ViewerFilter() {
+			public boolean select(Viewer viewer, Object parentElement, Object element) {
+				return fTree.getChecked(element);
+			}
+		};
 
 		Composite composite = SWTFactory.createComposite(parent, 1, span, GridData.FILL_BOTH, 0, 0);
 
@@ -502,17 +816,46 @@ public class FeatureBlock {
 			public boolean isElementVisible(Viewer viewer, Object element) {
 				if (element instanceof FeatureLaunchModel) {
 					return super.isElementVisible(viewer, ((FeatureLaunchModel) element).getId());
+				} else if (element instanceof PluginLaunchModel) {
+					return super.isElementVisible(viewer, ((PluginLaunchModel) element).getPluginModelId());
 				}
 				return super.isElementVisible(viewer, element);
 			}
 		};
 		filter.setIncludeLeadingWildcard(true);
-		FilteredCheckboxTree tree = new FilteredCheckboxTree(parent, null, SWT.FULL_SELECTION, filter);
+		FilteredCheckboxTree tree = new FilteredCheckboxTree(parent, null, SWT.FULL_SELECTION, filter) {
+			/* (non-Javadoc)
+			 * @see org.eclipse.pde.internal.ui.shared.FilteredCheckboxTree#doCreateRefreshJob()
+			 */
+			protected WorkbenchJob doCreateRefreshJob() {
+				// If we are only showing selected items, we need to redo the filter after text filtering is applied.  The only selected filter uses the tree's check state, which hasn't been restored correctly at filter time. 
+				WorkbenchJob job = super.doCreateRefreshJob();
+				job.addJobChangeListener(new JobChangeAdapter() {
+					public void done(IJobChangeEvent event) {
+						if (event.getResult().isOK()) {
+							getDisplay().asyncExec(new Runnable() {
+								public void run() {
+									fTree.getControl().setRedraw(false);
+									fTree.removeFilter(fSelectedOnlyFilter);
+									fTree.restoreLeafCheckState();
+									fTree.addFilter(fSelectedOnlyFilter);
+									fTree.getControl().setRedraw(true);
+								}
+							});
+						}
+					}
+				});
+				return job;
+			}
+		};
 
 		GridData gd = new GridData(GridData.FILL_BOTH);
 		tree.setLayoutData(gd);
 		fTree = tree.getCheckboxTreeViewer();
 
+		fTree.getControl().setFont(parent.getFont());
+		tree.getFilterControl().setFont(parent.getFont());
+
 		TreeColumn column1 = new TreeColumn(fTree.getTree(), SWT.LEFT);
 		column1.setText(PDEUIMessages.FeatureBlock_features);
 		column1.setWidth(400);
@@ -534,7 +877,7 @@ public class FeatureBlock {
 				fTab.updateLaunchConfigurationDialog();
 			}
 		});
-		String[] items = new String[] {PDEUIMessages.FeatureBlock_default, PDEUIMessages.FeatureBlock_workspaceBefore, PDEUIMessages.FeatureBlock_externalBefore};
+		String[] items = new String[] {PDEUIMessages.FeatureBlock_default, PDEUIMessages.FeatureBlock_WorkspaceResolutionLabel, PDEUIMessages.FeatureBlock_ExternalResolutionLabel};
 		ComboBoxCellEditor cellEditor = new ComboBoxCellEditor(fTree.getTree(), items);
 		cellEditor.getControl().pack();
 		fTree.setCellEditors(new CellEditor[] {null, cellEditor});
@@ -551,10 +894,53 @@ public class FeatureBlock {
 				fTab.updateLaunchConfigurationDialog();
 			}
 		});
+		fTree.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				IStructuredSelection selection = (IStructuredSelection) fTree.getSelection();
+				boolean allPlugins = true;
+				for (Iterator iterator = selection.iterator(); iterator.hasNext();) {
+					Object element = iterator.next();
+					if (!(element instanceof PluginLaunchModel)) {
+						allPlugins = false;
+					}
+				}
+				fRemovePluginButton.setEnabled(allPlugins);
+			}
+		});
+		fTree.getTree().addKeyListener(new KeyAdapter() {
+			public void keyReleased(KeyEvent e) {
+				if (e.keyCode == SWT.DEL) {
+					// Any changes here need to be reflected in the remove button handling
+					IStructuredSelection selection = (IStructuredSelection) fTree.getSelection();
+					int index = fAdditionalPlugins.indexOf(selection.getFirstElement());
+					List input = (List) fTree.getInput();
+					for (Iterator iterator = selection.iterator(); iterator.hasNext();) {
+						Object element = iterator.next();
+						if (element instanceof PluginLaunchModel) {
+							fAdditionalPlugins.remove(element);
+							fTree.remove(element);
+							input.remove(element);
+						}
+					}
+					if (fAdditionalPlugins.size() == 0) {
+						fTree.remove(fAdditionalPluginsParentElement);
+						input.remove(fAdditionalPluginsParentElement);
+						fRemovePluginButton.setEnabled(false);
+					} else {
+						index--;
+						fTree.setSelection(new StructuredSelection(fAdditionalPlugins.get(index > 0 ? index : 0)), true);
+						fRemovePluginButton.setEnabled(true);
+					}
+					updateCounter();
+					fTab.updateLaunchConfigurationDialog();
+				}
+			}
+		});
 	}
 
 	private void createButtonContainer(Composite parent, int vOffset) {
-		Composite buttonComp = new Composite(parent, SWT.NONE);
+		Composite buttonComp = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_VERTICAL);
 		GridLayout layout = new GridLayout();
 		layout.marginHeight = layout.marginWidth = 0;
 		layout.marginTop = vOffset;
@@ -565,13 +951,18 @@ public class FeatureBlock {
 		fSelectAllButton.addSelectionListener(fListener);
 		fDeselectAllButton = SWTFactory.createPushButton(buttonComp, PDEUIMessages.AdvancedLauncherTab_deselectAll, null);
 		fDeselectAllButton.addSelectionListener(fListener);
+		fSelectFeaturesButton = SWTFactory.createPushButton(buttonComp, PDEUIMessages.FeatureBlock_SelectFeatures, null);
+		fSelectFeaturesButton.addSelectionListener(fListener);
 		fAddRequiredFeaturesButton = SWTFactory.createPushButton(buttonComp, PDEUIMessages.FeatureBlock_addRequiredFeatues, null);
 		fAddRequiredFeaturesButton.addSelectionListener(fListener);
+		fAddPluginButton = SWTFactory.createPushButton(buttonComp, NLS.bind(PDEUIMessages.FeatureBlock_AddPluginsLabel, fTab.getName().replaceAll("&", "")), null); //$NON-NLS-1$//$NON-NLS-2$
+		fAddPluginButton.addSelectionListener(fListener);
+		fRemovePluginButton = SWTFactory.createPushButton(buttonComp, NLS.bind(PDEUIMessages.FeatureBlock_RemovePluginsLabel, fTab.getName().replaceAll("&", "")), null); //$NON-NLS-1$//$NON-NLS-2$
+		fRemovePluginButton.addSelectionListener(fListener);
+		fRemovePluginButton.setEnabled(false);
 		fDefaultsButton = SWTFactory.createPushButton(buttonComp, PDEUIMessages.AdvancedLauncherTab_defaults, null);
 		fDefaultsButton.addSelectionListener(fListener);
 
-		SWTFactory.createHorizontalSpacer(buttonComp, 1);
-
 		SWTFactory.createLabel(buttonComp, PDEUIMessages.FeatureBlock_defaultPluginResolution, 1);
 		fWorkspacePluginButton = SWTFactory.createRadioButton(buttonComp, PDEUIMessages.FeatureBlock_workspaceBefore);
 		fWorkspacePluginButton.addSelectionListener(fListener);
@@ -580,7 +971,14 @@ public class FeatureBlock {
 
 		Composite countComp = SWTFactory.createComposite(buttonComp, 1, 1, SWT.NONE, 0, 0);
 		countComp.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, true, true));
-		fCounter = new Label(countComp, SWT.NONE);
+
+		fFilterButton = SWTFactory.createCheckButton(countComp, NLS.bind(PDEUIMessages.AdvancedLauncherTab_selectedBundles, ""), null, false, 1); //$NON-NLS-1$
+		fFilterButton.addSelectionListener(fListener);
+
+		fCounter = SWTFactory.createLabel(countComp, "", 1); //$NON-NLS-1$
+
+		Image siteImage = PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_SITE_OBJ);
+		fAdditionalPluginsParentElement = new NamedElement(NLS.bind(PDEUIMessages.FeatureBlock_AdditionalPluginsEntry, fTab.getName().replaceAll("&", "")), siteImage); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 	public void initialize() throws CoreException {
@@ -588,15 +986,9 @@ public class FeatureBlock {
 	}
 
 	public void initializeFrom(ILaunchConfiguration config) throws CoreException {
-		if (fLaunchConfig != null && fLaunchConfig.equals(config)) {
-			// Do nothing
-			return;
-		}
-
 		fLaunchConfig = config;
-
+		fTree.removeFilter(fSelectedOnlyFilter);
 		setInput(config, fTree);
-		updateCounter();
 
 		// Setup other buttons
 		String pluginResolution = config.getAttribute(IPDELauncherConstants.FEATURE_PLUGIN_RESOLUTION, IPDELauncherConstants.LOCATION_WORKSPACE);
@@ -616,17 +1008,23 @@ public class FeatureBlock {
 			savePluginState((ILaunchConfigurationWorkingCopy) fLaunchConfig);
 		}
 
-		fTab.updateLaunchConfigurationDialog();
-
 		PDEPreferencesManager prefs = new PDEPreferencesManager(IPDEUIConstants.PLUGIN_ID);
 		int index = prefs.getInt(IPreferenceConstants.FEATURE_SORT_COLUMN);
 		TreeColumn column = fTree.getTree().getColumn(index == 0 ? COLUMN_FEATURE_NAME : index - 1);
 		fListener.handleColumn(column, prefs.getInt(IPreferenceConstants.FEATURE_SORT_ORDER));
+		fRemovePluginButton.setEnabled(false);
+		fFilterButton.setSelection(config.getAttribute(IPDELauncherConstants.SHOW_SELECTED_ONLY, false));
+		if (fFilterButton.getSelection()) {
+			fTree.addFilter(fSelectedOnlyFilter);
+		}
+		fTree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
+		fTree.expandAll();
 		fTree.refresh(true);
+		fTab.updateLaunchConfigurationDialog();
 	}
 
 	public void performApply(ILaunchConfigurationWorkingCopy config) {
-		config.setAttribute(IPDELauncherConstants.SHOW_SELECTED_ONLY, false);
+		config.setAttribute(IPDELauncherConstants.SHOW_SELECTED_ONLY, fFilterButton.getSelection());
 		config.setAttribute(IPDELauncherConstants.FEATURE_DEFAULT_LOCATION, fFeatureWorkspaceButton.getSelection() ? IPDELauncherConstants.LOCATION_WORKSPACE : IPDELauncherConstants.LOCATION_EXTERNAL);
 		config.setAttribute(IPDELauncherConstants.FEATURE_PLUGIN_RESOLUTION, fWorkspacePluginButton.getSelection() ? IPDELauncherConstants.LOCATION_WORKSPACE : IPDELauncherConstants.LOCATION_EXTERNAL);
 		config.setAttribute(IPDELauncherConstants.AUTOMATIC_VALIDATE, fAutoValidate.getSelection());
@@ -637,16 +1035,37 @@ public class FeatureBlock {
 
 	private void savePluginState(ILaunchConfigurationWorkingCopy config) {
 		Set featuresEntry = new HashSet(); // By using a set, debug will sort the attribute for us
-		Object[] checked = fTree.getCheckedElements();
-		for (int i = 0; i < checked.length; i++) {
-			FeatureLaunchModel model = (FeatureLaunchModel) checked[i];
-			StringBuffer buffer = new StringBuffer();
-			buffer.append(model.getId());
-			buffer.append(':');
-			buffer.append(model.getResolutionValue());
-			featuresEntry.add(buffer.toString());
+		Set pluginsEntry = new HashSet();
+		ArrayList checkPluginLaunchModels = new ArrayList();
+
+		Object[] models = fTree.getCheckedElements();
+
+		for (int i = 0; i < models.length; i++) {
+			if (models[i] instanceof FeatureLaunchModel) {
+				FeatureLaunchModel featureModel = (FeatureLaunchModel) models[i];
+				StringBuffer buffer = new StringBuffer();
+				buffer.append(featureModel.getId());
+				buffer.append(':');
+				buffer.append(featureModel.getResolutionValue());
+				featuresEntry.add(buffer.toString());
+			} else if (models[i] instanceof PluginLaunchModel) {
+				PluginLaunchModel pluginLaunchModel = (PluginLaunchModel) models[i];
+				String entry = BundleLauncherHelper.writeAdditionalPluginsEntry(pluginLaunchModel.getPluginModelBase(), pluginLaunchModel.getPluginResolution(), true);
+				pluginsEntry.add(entry);
+				checkPluginLaunchModels.add(pluginLaunchModel);
+			}
+		}
+
+		for (Iterator iterator = fAdditionalPlugins.iterator(); iterator.hasNext();) {
+			PluginLaunchModel uncheckedPluginLaunchModel = (PluginLaunchModel) iterator.next();
+			if (checkPluginLaunchModels.contains(uncheckedPluginLaunchModel))
+				continue;
+			String entry = BundleLauncherHelper.writeAdditionalPluginsEntry(uncheckedPluginLaunchModel.getPluginModelBase(), uncheckedPluginLaunchModel.getPluginResolution(), false);
+			pluginsEntry.add(entry);
 		}
 		config.setAttribute(IPDELauncherConstants.SELECTED_FEATURES, featuresEntry);
+		config.setAttribute(IPDELauncherConstants.ADDITIONAL_PLUGINS, pluginsEntry);
+
 	}
 
 	private void saveSortOrder() {
@@ -670,7 +1089,7 @@ public class FeatureBlock {
 	private void updateCounter() {
 		if (fCounter != null) {
 			int checked = fTree.getCheckedLeafCount();
-			int total = fFeatureModels.values().size();
+			int total = fFeatureModels.values().size() + fAdditionalPlugins.size();
 			fCounter.setText(NLS.bind(PDEUIMessages.AbstractPluginBlock_counter, new Integer(checked), new Integer(total)));
 		}
 	}
@@ -684,18 +1103,15 @@ public class FeatureBlock {
 	protected void setInput(ILaunchConfiguration config, CheckboxTreeViewer tree) {
 		// Maps feature IDs to their models
 		Map featureModels = new HashMap();
-		FeatureModelManager fmm = new FeatureModelManager();
+		FeatureModelManager fmm = PDECore.getDefault().getFeatureModelManager();
 		IFeatureModel[] workspaceModels = fmm.getWorkspaceModels();
 		for (int i = 0; i < workspaceModels.length; i++) {
 			String id = workspaceModels[i].getFeature().getId();
 			featureModels.put(id, new FeatureLaunchModel(workspaceModels[i], null));
 		}
-		fmm.shutdown();
 
 		// If there is both a workspace and a target model with the same id, combine them into the same launch model
-		ExternalFeatureModelManager efmm = new ExternalFeatureModelManager();
-		efmm.initialize();
-		IFeatureModel[] externalModels = efmm.getModels();
+		IFeatureModel[] externalModels = fmm.getExternalModels();
 		for (int i = 0; i < externalModels.length; i++) {
 			String id = externalModels[i].getFeature().getId();
 			if (featureModels.containsKey(id)) {
@@ -707,10 +1123,27 @@ public class FeatureBlock {
 		}
 
 		fFeatureModels = featureModels;
-		tree.setInput(fFeatureModels.values());
-
-		// Loop through the saved config to determine location settings and selection
 		try {
+			fAdditionalPlugins = new ArrayList();
+			List checkedAdditionalPlugins = new ArrayList();
+			HashMap allAdditionalMap = BundleLauncherHelper.getAdditionalPlugins(config, false);
+			HashMap checkedAdditionalMap = BundleLauncherHelper.getAdditionalPlugins(config, true);
+			for (Iterator iterator = allAdditionalMap.keySet().iterator(); iterator.hasNext();) {
+				IPluginModelBase model = (IPluginModelBase) iterator.next();
+				PluginLaunchModel launchModel = new PluginLaunchModel(model, (String) allAdditionalMap.get(model));
+				fAdditionalPlugins.add(launchModel);
+				if (checkedAdditionalMap.containsKey(model)) {
+					checkedAdditionalPlugins.add(launchModel);
+				}
+			}
+
+			List models = new ArrayList(fFeatureModels.values());
+			if (fAdditionalPlugins.size() > 0) {
+				models.add(fAdditionalPluginsParentElement);
+			}
+			tree.setInput(models);
+
+			// Loop through the saved config to determine location settings and selection
 			Set selected = config.getAttribute(IPDELauncherConstants.SELECTED_FEATURES, (Set) null);
 			if (selected == null) {
 				tree.setCheckedElements(fFeatureModels.values().toArray());
@@ -730,7 +1163,10 @@ public class FeatureBlock {
 						}
 					}
 				}
-				tree.setCheckedElements(selectedFeatureList.toArray());
+				List checkedElements = new ArrayList();
+				checkedElements.addAll(selectedFeatureList);
+				checkedElements.addAll(checkedAdditionalPlugins);
+				tree.setCheckedElements(checkedElements.toArray());
 			}
 		} catch (CoreException e) {
 			PDELaunchingPlugin.log(e);
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FilteredCheckboxTree.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FilteredCheckboxTree.java
index 2d1f274..120fa03 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FilteredCheckboxTree.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FilteredCheckboxTree.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Ian Bull <irbull at cs.uvic.ca> - bug 207064
  *******************************************************************************/
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/JUnitProgramBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/JUnitProgramBlock.java
index 1c43e7b..ba35643 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/JUnitProgramBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/JUnitProgramBlock.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.launcher;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
index 48333d5..b1ce648 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OpenLogDialog.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OpenLogDialog.java
index b434643..e5ef4c4 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OpenLogDialog.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OpenLogDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PDELogFileProvider.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PDELogFileProvider.java
index 03ebc6a..785a191 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PDELogFileProvider.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PDELogFileProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
index 06b9cf9..65682b0 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
@@ -16,13 +16,12 @@ import java.util.*;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.pde.core.plugin.*;
-import org.eclipse.pde.internal.core.util.IdUtil;
-import org.eclipse.pde.internal.launching.IPDEConstants;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.core.plugin.PluginRegistry;
 import org.eclipse.pde.internal.launching.launcher.*;
+import org.eclipse.pde.internal.ui.PDEPlugin;
 import org.eclipse.pde.launching.IPDELauncherConstants;
 import org.eclipse.pde.ui.launcher.AbstractLauncherTab;
-import org.eclipse.pde.ui.launcher.EclipseLaunchShortcut;
 
 public class PluginBlock extends AbstractPluginBlock {
 
@@ -200,71 +199,27 @@ public class PluginBlock extends AbstractPluginBlock {
 		}
 	}
 
-	protected void computeSubset() {
-		validateExtensions();
-		super.computeSubset();
-	}
-
-	private void validateExtensions() {
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.launcher.AbstractPluginBlock#addRequiredPlugins()
+	 */
+	protected void addRequiredPlugins() {
+		// Check that the application or product we are launching has its requirements included
 		try {
-			if (fLaunchConfig.getAttribute(IPDELauncherConstants.USE_PRODUCT, true)) {
-				String product = fLaunchConfig.getAttribute(IPDELauncherConstants.PRODUCT, (String) null);
-				if (product != null) {
-					validateLaunchId(product);
-					String application = getApplication(product);
-					if (application != null)
-						validateLaunchId(application);
-				}
-			} else {
-				String configType = fLaunchConfig.getType().getIdentifier();
-				String attribute = configType.equals(EclipseLaunchShortcut.CONFIGURATION_TYPE) ? IPDELauncherConstants.APPLICATION : IPDELauncherConstants.APP_TO_TEST;
-				String application = fLaunchConfig.getAttribute(attribute, TargetPlatform.getDefaultApplication());
-				if (!IPDEConstants.CORE_TEST_APPLICATION.equals(application))
-					validateLaunchId(application);
-			}
-		} catch (CoreException e) {
-		}
-	}
-
-	private void validateLaunchId(String launchId) {
-		if (launchId != null) {
-			int index = launchId.lastIndexOf('.');
-			if (index > 0) {
-				String pluginId = launchId.substring(0, index);
+			String[] requiredIds = RequirementHelper.getApplicationRequirements(fLaunchConfig);
+			for (int i = 0; i < requiredIds.length; i++) {
 				// see if launcher plugin is already included
-				IPluginModelBase base = findPlugin(pluginId);
+				IPluginModelBase base = findPlugin(requiredIds[i]);
 				if (base == null) {
-					base = PluginRegistry.findModel(pluginId);
+					base = PluginRegistry.findModel(requiredIds[i]);
 					if (base != null) {
 						fPluginTreeViewer.setChecked(base, true);
 					}
 				}
 			}
+		} catch (CoreException e) {
+			PDEPlugin.log(e);
 		}
-	}
-
-	private String getApplication(String product) {
-		String bundleID = product.substring(0, product.lastIndexOf('.'));
-		IPluginModelBase model = findPlugin(bundleID);
-
-		if (model != null) {
-			IPluginExtension[] extensions = model.getPluginBase().getExtensions();
-			for (int i = 0; i < extensions.length; i++) {
-				IPluginExtension ext = extensions[i];
-				String point = ext.getPoint();
-				if ("org.eclipse.core.runtime.products".equals(point) //$NON-NLS-1$
-						&& product.equals(IdUtil.getFullId(ext))) {
-					if (ext.getChildCount() == 1) {
-						IPluginElement prod = (IPluginElement) ext.getChildren()[0];
-						if (prod.getName().equals("product")) { //$NON-NLS-1$
-							IPluginAttribute attr = prod.getAttribute("application"); //$NON-NLS-1$
-							return attr != null ? attr.getValue() : null;
-						}
-					}
-				}
-			}
-		}
-		return null;
+		super.addRequiredPlugins();
 	}
 
 	protected LaunchValidationOperation createValidationOperation() {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/SoftwareInstallBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/SoftwareInstallBlock.java
index 800c25a..8510db6 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/SoftwareInstallBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/SoftwareInstallBlock.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.pde.internal.ui.launcher;
 
 import org.eclipse.core.runtime.CoreException;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/nls/ModelChange.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/nls/ModelChange.java
index 390dc4c..14fc4cc 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/nls/ModelChange.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/nls/ModelChange.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.nls;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index c91e3d1..a30ed64 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -60,6 +60,8 @@ PDECompilersConfigurationBlock_2=Problems with 'output.<libr&ary>' entry:
 PDECompilersConfigurationBlock_3=Proble&ms with 'bin.includes' entry:
 PDECompilersConfigurationBlock_4=Problems with 'src.inclu&des' entry:
 PDECompilersConfigurationBlock_5=Missing or incompatible &Java compliance properties:
+PDECompilersConfigurationBlock_6=Missing project specific Java compiler settings:
+PDECompilersConfigurationBlock_7=Missing or incorrect file encodings
 PDECompilersConfigurationBlock_general=General
 PDECompilersConfigurationBlock_versioning=Versioning
 PDECompilersConfigurationBlock_references=References
@@ -102,16 +104,23 @@ BuildEditor_ClasspathSection_jarsTitle = JAR Selection
 BuildEditor_ClasspathSection_jarsDesc = Choose JAR archives to be added to the build path:
 
 ######## Feature Manifest Editor ####################
-FeatureBlock_addRequiredFeatues=Add Required Features
+FeatureBlock_AdditionalPluginsEntry=Additional {0}
+FeatureBlock_AddPluginsLabel=Add {0}&...
+FeatureBlock_AllFeatureSelected=All available features have been selected.
+FeatureBlock_RemovePluginsLabel=Rem&ove {0}
+FeatureBlock_addRequiredFeatues=Select Re&quired
 FeatureBlock_default=Default
 FeatureBlock_defaultPluginResolution=Default Plug-in Location:
 FeatureBlock_features=ID
 FeatureBlock_pluginResolution=Plug-in Location
-FeatureBlock_externalBefore=External
+FeatureBlock_externalBefore=E&xternal
+FeatureBlock_ExternalResolutionLabel=External
 FeatureBlock_FeatureGroupDescription=The features selected below and all required plug-ins will be launched.
-FeatureBlock_UseWorkspaceFeatures=Use features from workspace if available
+FeatureBlock_SelectFeatures=Sele&ct Features...
+FeatureBlock_UseWorkspaceFeatures=Use features from works&pace if available
 FeatureBlock_version=Version
-FeatureBlock_workspaceBefore=Workspace
+FeatureBlock_workspaceBefore=Wor&kspace
+FeatureBlock_WorkspaceResolutionLabel=Workspace
 FeatureEditor_BuildAction_label = &Export...
 FeatureEditor_FeaturePage_title = Overview
 FeatureEditor_InfoPage_title = Information
@@ -509,7 +518,7 @@ AdvancedFeatureExportPage_noSite=Site URL is not set
 AdvancedPluginExportPage_signJar=JA&R Signing
 AdvancedPluginExportPage_noAlias=Alias is not set
 AdvancedLauncherTab_subset = Add Re&quired {0}
-AdvancedLauncherTab_selectedBundles = Only s&how selected {0}
+AdvancedLauncherTab_selectedBundles = Only s&how selected
 AdvancedLauncherTab_addNew=&Add new workspace {0} to this launch configuration automatically
 AdvancedLauncherTab_defaults = Restore Defa&ults
 AddSingleon_dir_label=set the 'singleton' directive
@@ -708,7 +717,6 @@ CommandDetails_id=Command ID:
 CommandDetails_clear=Clear
 CommandDetails_param={0} :
 ContentPage_badversion = Version must be in the format 'major.minor.micro'
-ContentPage_noname = Name is not set
 ContentPage_nopid = Plug-in ID is not set
 ContentPage_pluginNotFound = Plug-in with the specified id could not be found
 CommandDetails_execute=Execute command
@@ -1038,7 +1046,9 @@ TemplateSelectionPage_column_name = Name
 TemplateSelectionPage_column_point = Extension Point
 
 ImportActionGroup_binaryWithLinkedContent=Binary Project with &Linked Content
+ImportActionGroup_cannot_import=The selected plug-ins cannot be imported from a repository.
 ImportActionGroup_importContributingPlugin=&Import Contributing Plug-in as
+ImportActionGroup_Repository_project=P&roject from a Repository...
 
 ####
 
@@ -1357,7 +1367,7 @@ PluginsView_schemaEditor=PDE &Schema Editor
 PluginsView_copy=&Copy
 PluginsView_dependentPlugins=&Required Plug-ins
 PluginsView_pluginsInJavaSearch=&Plug-ins in Java Search
-PluginsTabToolBar_auto_validate=Validate {0} automatically prior to &launching
+PluginsTabToolBar_auto_validate=Validate {0} automatically prior to launchin&g
 PluginsView_addToJavaSearch=&Add to Java Search
 PluginsView_removeFromJavaSearch=Remove &from Java Search
 PluginWorkingSet_setContent=Working set content:
@@ -1375,7 +1385,7 @@ PluginEditor_exportTooltip=Export deployable plug-ins and fragments
 PluginWorkingSet_noPluginsChecked=At least one plug-in must be checked
 PluginStatusDialog_pluginValidation=Validation
 PluginsView_openWith=Open &With
-PluginsView_import=&Import As
+PluginsView_import=I&mport As
 PluginsView_select=Se&lect
 PluginsView_showIn=Sho&w In
 PluginsTab_target=Target Platform
@@ -1560,6 +1570,7 @@ ExportTargetDeleteOldData = Deleting old data...
 ExportTargetExportFeatures = Exporting features...
 ExportTargetExportPlugins = Exporting plugins...
 ExportActiveTargetDefinition = Export Active Target Definition
+ExportActiveTargetDefinition_message = Please choose a destination directory to export all target content
 ExportTargetCurrentTarget = Active &Target: 
 ExportTargetChooseFolder = &Destination:
 ExportTargetBrowse = &Browse...
@@ -1567,6 +1578,7 @@ ExportTargetSelectDestination = Select Destination
 ExportTargetSpecifyDestination = Specify the destination directory for the current target
 ExportTargetClearDestination = &Clear destination directory before exporting
 ExportTargetError_ChooseDestination = Please choose a destination directory
+ExportTargetError_validPath = Destination directory must be a valid path
 
 
 CategoryDetails_title = Category Properties
@@ -2332,4 +2344,5 @@ PDEJUnitLaunchConfigurationTab_Run_Tests_In_UI_Thread=Run in &UI thread
 SearchRepositoriesForIUProposal_message=Search repositories for ''{0}''
 SearchRepositoriesForIUProposal_description=Opens the artifact search dialog to search for ''{0}'' to add to your target
 
-OSGiConsole_name=OSGi Console
\ No newline at end of file
+OSGiConsole_name=Host OSGi Console [{0}]
+OSGiConsoleFactory_title=WARNING: This console is connected to the current running instance of Eclipse!
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
index 72cb1d4..bd4ec48 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.preferences;
 
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+
 import com.ibm.icu.text.MessageFormat;
 import java.util.*;
 import java.util.List;
@@ -199,19 +201,23 @@ public class PDECompilersConfigurationBlock {
 	//general
 	private static final Key KEY_P_DISCOURAGED_CLASS = getPDEPrefKey(CompilerFlags.P_DISCOURAGED_CLASS);
 	private static final Key KEY_P_NO_REQUIRED_ATT = getPDEPrefKey(CompilerFlags.P_NO_REQUIRED_ATT);
-	private static final Key KEY_P_BUILD = getPDEPrefKey(CompilerFlags.P_BUILD);
-	private static final Key KEY_P_BUILD_MISSING_OUTPUT = getPDEPrefKey(CompilerFlags.P_BUILD_MISSING_OUTPUT);
-	private static final Key KEY_P_BUILD_SOURCE_LIBRARY = getPDEPrefKey(CompilerFlags.P_BUILD_SOURCE_LIBRARY);
-	private static final Key KEY_P_BUILD_OUTPUT_LIBRARY = getPDEPrefKey(CompilerFlags.P_BUILD_OUTPUT_LIBRARY);
-	private static final Key KEY_P_BUILD_SRC_INCLUDES = getPDEPrefKey(CompilerFlags.P_BUILD_SRC_INCLUDES);
-	private static final Key KEY_P_BUILD_BIN_INCLUDES = getPDEPrefKey(CompilerFlags.P_BUILD_BIN_INCLUDES);
-	private static final Key KEY_P_BUILD_JAVA_COMPLIANCE = getPDEPrefKey(CompilerFlags.P_BUILD_JAVA_COMPLIANCE);
 	private static final Key KEY_P_NOT_EXTERNALIZED = getPDEPrefKey(CompilerFlags.P_NOT_EXTERNALIZED);
 	private static final Key KEY_P_INCOMPATIBLE_ENV = getPDEPrefKey(CompilerFlags.P_INCOMPATIBLE_ENV);
 	private static final Key KEY_P_MISSING_EXPORT_PKGS = getPDEPrefKey(CompilerFlags.P_MISSING_EXPORT_PKGS);
 	private static final Key KEY_P_DEPRECATED = getPDEPrefKey(CompilerFlags.P_DEPRECATED);
 	private static final Key KEY_P_INTERNAL = getPDEPrefKey(CompilerFlags.P_INTERNAL);
 
+	// build
+	private static final Key KEY_P_BUILD_SOURCE_LIBRARY = getPDEPrefKey(CompilerFlags.P_BUILD_SOURCE_LIBRARY);
+	private static final Key KEY_P_BUILD_OUTPUT_LIBRARY = getPDEPrefKey(CompilerFlags.P_BUILD_OUTPUT_LIBRARY);
+	private static final Key KEY_P_BUILD_MISSING_OUTPUT = getPDEPrefKey(CompilerFlags.P_BUILD_MISSING_OUTPUT);
+	private static final Key KEY_P_BUILD_SRC_INCLUDES = getPDEPrefKey(CompilerFlags.P_BUILD_SRC_INCLUDES);
+	private static final Key KEY_P_BUILD_BIN_INCLUDES = getPDEPrefKey(CompilerFlags.P_BUILD_BIN_INCLUDES);
+	private static final Key KEY_P_BUILD_JAVA_COMPLIANCE = getPDEPrefKey(CompilerFlags.P_BUILD_JAVA_COMPLIANCE);
+	private static final Key KEY_P_BUILD_JAVA_COMPILER = getPDEPrefKey(CompilerFlags.P_BUILD_JAVA_COMPILER);
+	private static final Key KEY_P_BUILD_ENCODINGS = getPDEPrefKey(CompilerFlags.P_BUILD_ENCODINGS);
+	private static final Key KEY_P_BUILD = getPDEPrefKey(CompilerFlags.P_BUILD);
+
 	// versioning
 	private static final Key KEY_P_VERSION_EXP_PKG = getPDEPrefKey(CompilerFlags.P_MISSING_VERSION_EXP_PKG);
 	private static final Key KEY_P_VERSION_IMP_PKG = getPDEPrefKey(CompilerFlags.P_MISSING_VERSION_IMP_PKG);
@@ -223,7 +229,7 @@ public class PDECompilersConfigurationBlock {
 
 	private static String[] SEVERITIES = {PDEUIMessages.PDECompilersConfigurationBlock_error, PDEUIMessages.PDECompilersConfigurationBlock_warning, PDEUIMessages.PDECompilersConfigurationBlock_ignore};
 
-	private static Key[] fgAllKeys = {KEY_F_UNRESOLVED_FEATURES, KEY_F_UNRESOLVED_PLUGINS, KEY_P_BUILD, KEY_P_BUILD_MISSING_OUTPUT, KEY_P_BUILD_SOURCE_LIBRARY, KEY_P_BUILD_OUTPUT_LIBRARY, KEY_P_BUILD_SRC_INCLUDES, KEY_P_BUILD_BIN_INCLUDES, KEY_P_BUILD_JAVA_COMPLIANCE, KEY_P_INTERNAL, KEY_P_DEPRECATED, KEY_P_DISCOURAGED_CLASS, KEY_P_INCOMPATIBLE_ENV, KEY_P_MISSING_EXPORT_PKGS, KEY_P_NO_REQUIRED_ATT, KEY_P_NOT_EXTERNALIZED, KEY_P_UNKNOWN_ATTRIBUTE, KEY_P_UNKNOWN_CLASS, KEY_P_UNKNOWN_ELEMENT, KEY_P_UNKNOWN_IDENTIFIER, KEY_P_UNKNOWN_RESOURCE, KEY_P_UNRESOLVED_EX_POINTS, KEY_P_UNRESOLVED_IMPORTS, KEY_P_VERSION_EXP_PKG, KEY_P_VERSION_IMP_PKG, KEY_P_VERSION_REQ_BUNDLE, KEY_S_CREATE_DOCS, KEY_S_DOC_FOLDER, KEY_S_OPEN_TAGS};
+	private static Key[] fgAllKeys = {KEY_F_UNRESOLVED_FEATURES, KEY_F_UNRESOLVED_PLUGINS, KEY_P_BUILD, KEY_P_BUILD_MISSING_OUTPUT, KEY_P_BUILD_SOURCE_LIBRARY, KEY_P_BUILD_OUTPUT_LIBRARY, KEY_P_BUILD_SRC_INCLUDES, KEY_P_BUILD_BIN_INCLUDES, KEY_P_BUILD_JAVA_COMPLIANCE, KEY_P_BUILD_JAVA_COMPILER, KEY_P_BUILD_ENCODINGS, KEY_P_INTERNAL, KEY_P_DEPRECATED, KEY_P_DISCOURAGED_CLASS, KEY_P_INCOMPATIBLE_ENV, KEY_P_MISSING_EXPORT_PKGS, KEY_P_NO_REQUIRED_ATT, KEY_P_NOT_EXTERNALIZED, KEY_P_UNKNOWN_ATTRIBUTE, KEY_P_UNKNOWN_CLASS, KEY_P_UNKNOWN_ELEMENT, KEY_P_UNKNOWN_IDENTIFIER, KEY_P_UNKNOWN_RESOURCE, KEY_P_UNRESOLVED_EX_POINTS, KEY_P_UNRESOLVED_IMPORTS, KEY_P_VERSION_EXP_PKG, KEY_P_VERSION_IMP_PKG, KEY_P_VERSION_REQ_BUNDLE, KEY_S_CREATE_DOCS, KEY_S_DOC_FOLDER, KEY_S_OPEN_TAGS};
 
 	/**
 	 * Constant representing the {@link IDialogSettings} section for this block
@@ -516,7 +522,7 @@ public class PDECompilersConfigurationBlock {
 				initializeComboControls(client, new String[] {PDEUIMessages.compilers_p_no_required_att, PDEUIMessages.CompilersConfigurationTab_incompatEnv, PDEUIMessages.compilers_p_exported_pkgs}, new Key[] {KEY_P_NO_REQUIRED_ATT, KEY_P_INCOMPATIBLE_ENV, KEY_P_MISSING_EXPORT_PKGS}, CompilerFlags.PLUGIN_FLAGS);
 				//build.properties
 				client = createExpansibleComposite(sbody, PDEUIMessages.PDECompilersConfigurationBlock_build);
-				initializeComboControls(client, new String[] {PDEUIMessages.PDECompilersConfigurationBlock_1, PDEUIMessages.PDECompilersConfigurationBlock_2, PDEUIMessages.PDECompilersConfigurationBlock_0, PDEUIMessages.PDECompilersConfigurationBlock_3, PDEUIMessages.PDECompilersConfigurationBlock_4, PDEUIMessages.PDECompilersConfigurationBlock_5, PDEUIMessages.CompilersConfigurationTab_buildPropertiesErrors}, new Key[] {KEY_P_BUILD_SOURCE_LIBRARY, KEY_P_BUILD_OUTPUT_LIBRARY, KEY_P_BUILD_MISSING_OUTPUT, KEY_P_BUILD_BIN_INCLUDES, KEY_P_BUILD_SRC_INCLUDES, KEY_P_BUILD_JAVA_COMPLIANCE, KEY_P_BUILD}, CompilerFlags.PLUGIN_FLAGS);
+				initializeComboControls(client, new String[] {PDEUIMessages.PDECompilersConfigurationBlock_1, PDEUIMessages.PDECompilersConfigurationBlock_2, PDEUIMessages.PDECompilersConfigurationBlock_0, PDEUIMessages.PDECompilersConfigurationBlock_3, PDEUIMessages.PDECompilersConfigurationBlock_4, PDEUIMessages.PDECompilersConfigurationBlock_5, PDEUIMessages.PDECompilersConfigurationBlock_6, PDEUIMessages.PDECompilersConfigurationBlock_7, PDEUIMessages.CompilersConfigurationTab_buildPropertiesErrors}, new Key[] {KEY_P_BUILD_SOURCE_LIBRARY, KEY_P_BUILD_OUTPUT_LIBRARY, KEY_P_BUILD_MISSING_OUTPUT, KEY_P_BUILD_BIN_INCLUDES, KEY_P_BUILD_SRC_INCLUDES, KEY_P_BUILD_JAVA_COMPLIANCE, KEY_P_BUILD_JAVA_COMPILER, KEY_P_BUILD_ENCODINGS, KEY_P_BUILD}, CompilerFlags.PLUGIN_FLAGS);
 				// Versioning
 				client = createExpansibleComposite(sbody, PDEUIMessages.PDECompilersConfigurationBlock_versioning);
 				initializeComboControls(client, new String[] {PDEUIMessages.compilers_p_missing_require_bundle, PDEUIMessages.compilers_p_missing_exp_pkg, PDEUIMessages.compilers_p_missing_imp_pkg}, new Key[] {KEY_P_VERSION_REQ_BUNDLE, KEY_P_VERSION_EXP_PKG, KEY_P_VERSION_IMP_PKG}, CompilerFlags.PLUGIN_FLAGS);
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/TargetPlatformPreferencePage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/TargetPlatformPreferencePage.java
index ad06159..cb4cc97 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/TargetPlatformPreferencePage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/TargetPlatformPreferencePage.java
@@ -275,6 +275,7 @@ public class TargetPlatformPreferencePage extends PreferencePage implements IWor
 				try {
 					fTargets.add(targets[i].getTargetDefinition());
 				} catch (CoreException e) {
+					PDECore.log(e);
 					setErrorMessage(e.getMessage());
 				}
 			}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/refactoring/PluginManifestChange.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/refactoring/PluginManifestChange.java
index c7b2022..e554e27 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/refactoring/PluginManifestChange.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/refactoring/PluginManifestChange.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.refactoring;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/FindReferencesAction.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/FindReferencesAction.java
index 8abc5d2..fae4e8f 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/FindReferencesAction.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/FindReferencesAction.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.search;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/ShowDescriptionAction.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/ShowDescriptionAction.java
index 12a1574..4ab1c16 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/ShowDescriptionAction.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/ShowDescriptionAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
index 8497528..db46e4b 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.search.dependencies;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/UnusedImportsDialog.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/UnusedImportsDialog.java
index fb888b9..139afd8 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/UnusedImportsDialog.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/UnusedImportsDialog.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.search.dependencies;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/CachedCheckboxTreeViewer.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/CachedCheckboxTreeViewer.java
index b7015f3..7d70d24 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/CachedCheckboxTreeViewer.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/CachedCheckboxTreeViewer.java
@@ -237,4 +237,22 @@ public class CachedCheckboxTreeViewer extends ContainerCheckedTreeViewer {
 		}
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#remove(java.lang.Object[])
+	 */
+	public void remove(Object[] elementsOrTreePaths) {
+		for (int i = 0; i < elementsOrTreePaths.length; i++) {
+			updateCheckState(elementsOrTreePaths[i], false);
+		}
+		super.remove(elementsOrTreePaths);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#remove(java.lang.Object)
+	 */
+	public void remove(Object elementsOrTreePaths) {
+		updateCheckState(elementsOrTreePaths, false);
+		super.remove(elementsOrTreePaths);
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/AddBundleContainerSelectionPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/AddBundleContainerSelectionPage.java
index ba70e0e..7fafa47 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/AddBundleContainerSelectionPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/AddBundleContainerSelectionPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/EditIUContainerPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/EditIUContainerPage.java
index b5cb46e..947e48b 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/EditIUContainerPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/EditIUContainerPage.java
@@ -27,6 +27,7 @@ import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.jface.window.SameShellProvider;
 import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.PDECore;
 import org.eclipse.pde.internal.core.target.IUBundleContainer;
 import org.eclipse.pde.internal.core.target.provisional.*;
@@ -83,6 +84,7 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 
 	private RepositorySelectionGroup fRepoSelector;
 	private AvailableIUGroup fAvailableIUGroup;
+	private Label fSelectionCount;
 	private Button fPropertiesButton;
 	private IAction fPropertyAction;
 	private Button fShowCategoriesButton;
@@ -159,7 +161,6 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 		createDetailsArea(composite);
 		createCheckboxArea(composite);
 
-		setPageComplete(false);
 		restoreWidgetState();
 		setControl(composite);
 		setPageComplete(false);
@@ -207,8 +208,14 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 			public void checkStateChanged(CheckStateChangedEvent event) {
 				IInstallableUnit[] units = fAvailableIUGroup.getCheckedLeafIUs();
 				if (units.length > 0) {
+					if (units.length == 1) {
+						fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemSelected, Integer.toString(units.length)));
+					} else {
+						fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemsSelected, Integer.toString(units.length)));
+					}
 					fSelectedIUStatus = Status.OK_STATUS;
 				} else {
+					fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemsSelected, Integer.toString(0)));
 					fSelectedIUStatus = BAD_IU_SELECTION;
 				}
 				pageChanged();
@@ -224,6 +231,8 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 		fAvailableIUGroup.setUseBoldFontForFilteredItems(true);
 		GridData data = (GridData) fAvailableIUGroup.getStructuredViewer().getControl().getLayoutData();
 		data.heightHint = 200;
+
+		fSelectionCount = SWTFactory.createLabel(parent, NLS.bind(Messages.EditIUContainerPage_itemsSelected, Integer.toString(0)), 1);
 	}
 
 	/**
@@ -388,6 +397,9 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 		if (fSelectedIUStatus.getSeverity() == IStatus.ERROR) {
 			setErrorMessage(fSelectedIUStatus.getMessage());
 			setPageComplete(false);
+		} else if (fAvailableIUGroup != null && fAvailableIUGroup.getCheckedLeafIUs().length == 0) {
+			// On page load and when sites are selected, we might not have an error status, but we want finish to remain disabled
+			setPageComplete(false);
 		} else {
 			setErrorMessage(null);
 			setPageComplete(true);
@@ -488,6 +500,13 @@ public class EditIUContainerPage extends WizardPage implements IEditBundleContai
 				IInstallableUnit[] units = fAvailableIUGroup.getCheckedLeafIUs();
 				if (units.length > 0) {
 					fAvailableIUGroup.getCheckboxTreeViewer().setSelection(new StructuredSelection(units[0]), true);
+					if (units.length == 1) {
+						fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemSelected, Integer.toString(units.length)));
+					} else {
+						fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemsSelected, Integer.toString(units.length)));
+					}
+				} else {
+					fSelectionCount.setText(NLS.bind(Messages.EditIUContainerPage_itemsSelected, Integer.toString(0))); //$NON-NLS-1$
 				}
 				fAvailableIUGroup.getCheckboxTreeViewer().collapseAll();
 
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/Messages.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/Messages.java
index e5ce02b..993f511 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/Messages.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/Messages.java
@@ -90,6 +90,8 @@ public class Messages extends NLS {
 	public static String EditIUContainerPage_7;
 	public static String EditIUContainerPage_8;
 	public static String EditIUContainerPage_9;
+	public static String EditIUContainerPage_itemSelected;
+	public static String EditIUContainerPage_itemsSelected;
 	public static String EditProfileContainerPage_1;
 	public static String EditProfileContainerPage_2;
 	public static String EditProfileContainerPage_3;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/StyledBundleLabelProvider.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/StyledBundleLabelProvider.java
index c153a46..88f1f36 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/StyledBundleLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/StyledBundleLabelProvider.java
@@ -23,6 +23,7 @@ import org.eclipse.pde.internal.core.target.*;
 import org.eclipse.pde.internal.core.target.provisional.*;
 import org.eclipse.pde.internal.ui.PDEPlugin;
 import org.eclipse.pde.internal.ui.PDEPluginImages;
+import org.eclipse.pde.internal.ui.shared.target.TargetLocationsGroup.IUWrapper;
 import org.eclipse.pde.internal.ui.util.SharedLabelProvider;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.ISharedImages;
@@ -140,6 +141,8 @@ public class StyledBundleLabelProvider extends StyledCellLabelProvider implement
 				styledString.append(repos[0].toString());
 			}
 			appendBundleCount(styledString, container);
+		} else if (element instanceof IUWrapper) {
+			styledString = getStyledString(((IUWrapper) element).getIU());
 		} else if (element instanceof IInstallableUnit) {
 			IInstallableUnit iu = (IInstallableUnit) element;
 			String name = fTranslations.getIUProperty(iu, IInstallableUnit.PROP_NAME);
@@ -217,6 +220,7 @@ public class StyledBundleLabelProvider extends StyledCellLabelProvider implement
 	 */
 	public Image getImage(Object element) {
 		if (element instanceof IResolvedBundle) {
+
 			IResolvedBundle bundle = (IResolvedBundle) element;
 			int flag = 0;
 			if (bundle.getStatus().getSeverity() == IStatus.WARNING || bundle.getStatus().getSeverity() == IStatus.INFO) {
@@ -225,7 +229,10 @@ public class StyledBundleLabelProvider extends StyledCellLabelProvider implement
 				flag = SharedLabelProvider.F_ERROR;
 			}
 
-			if (bundle.isFragment()) {
+			if (bundle.getStatus().getSeverity() == IStatus.ERROR && bundle.getStatus().getCode() == IResolvedBundle.STATUS_FEATURE_DOES_NOT_EXIST) {
+				// Missing features are represented by resolved bundles in the tree
+				return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_FEATURE_OBJ, flag);
+			} else if (bundle.isFragment()) {
 				return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_FRAGMENT_OBJ, flag);
 			} else if (bundle.isSourceBundle()) {
 				return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_PLUGIN_MF_OBJ, flag);
@@ -272,6 +279,8 @@ public class StyledBundleLabelProvider extends StyledCellLabelProvider implement
 			} else if (element instanceof IUBundleContainer) {
 				return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_REPOSITORY_OBJ, flag);
 			}
+		} else if (element instanceof IUWrapper) {
+			return getImage(((IUWrapper) element).getIU());
 		} else if (element instanceof IInstallableUnit) {
 			return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_NOREF_FEATURE_OBJ);
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetContentsGroup.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetContentsGroup.java
index 50ccbcb..9b0c449 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetContentsGroup.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetContentsGroup.java
@@ -91,9 +91,9 @@ public class TargetContentsGroup {
 	private Map fFileBundleMapping;
 
 	/**
-	 * List of IResolvedBundles that are being used to display error statuses for missing features, possibly <code>null</code>
+	 * List of IResolvedBundles that are being used to display error statuses for missing plug-ins/features, possibly <code>null</code>
 	 */
-	private List fMissingFeatures;
+	private List fMissing;
 
 	private static final NameVersionDescriptor OTHER_CATEGORY = new NameVersionDescriptor(Messages.TargetContentsGroup_OtherPluginsParent, null);
 
@@ -902,8 +902,12 @@ public class TargetContentsGroup {
 
 		int total = fAllBundles.size();
 		if (fFeaureModeButton.getSelection()) {
-			total = fTargetDefinition.getAllFeatures().length;
-			total += ((TargetDefinition) fTargetDefinition).getOtherBundles().length;
+			if (fTargetDefinition == null) {
+				total = 0;
+			} else {
+				total = fTargetDefinition.getAllFeatures().length;
+				total += ((TargetDefinition) fTargetDefinition).getOtherBundles().length;
+			}
 		}
 
 		fSelectAllButton.setEnabled(fTargetDefinition != null && fTree.getCheckedLeafCount() != total);
@@ -960,21 +964,18 @@ public class TargetContentsGroup {
 	}
 
 	private void updateCheckState() {
+		List result = new ArrayList();
+		// Checked error statuses
+		if (fMissing != null) {
+			result.addAll(fMissing);
+		}
 		if (fFeaureModeButton.getSelection()) {
-			List result = new ArrayList();
-
 			// Checked features and plugins
 			result.addAll(((TargetDefinition) fTargetDefinition).getFeaturesAndBundles());
-
-			// Checked error statuses
-			if (fMissingFeatures != null) {
-				result.addAll(fMissingFeatures);
-			}
-
-			fTree.setCheckedElements(result.toArray());
 		} else {
-			fTree.setCheckedElements(fTargetDefinition.getBundles());
+			result.addAll(Arrays.asList(fTargetDefinition.getBundles()));
 		}
+		fTree.setCheckedElements(result.toArray());
 	}
 
 	/**
@@ -1075,7 +1076,9 @@ public class TargetContentsGroup {
 				}
 				if (checked[i] instanceof IResolvedBundle) {
 					// Missing features are included as IResolvedBundles, save them as features instead
-					if (((IResolvedBundle) checked[i]).getStatus().getCode() == IResolvedBundle.STATUS_DOES_NOT_EXIST) {
+					if (((IResolvedBundle) checked[i]).getStatus().getCode() == IResolvedBundle.STATUS_PLUGIN_DOES_NOT_EXIST) {
+						included.add(new NameVersionDescriptor(((IResolvedBundle) checked[i]).getBundleInfo().getSymbolicName(), null, NameVersionDescriptor.TYPE_PLUGIN));
+					} else if (((IResolvedBundle) checked[i]).getStatus().getCode() == IResolvedBundle.STATUS_FEATURE_DOES_NOT_EXIST) {
 						included.add(new NameVersionDescriptor(((IResolvedBundle) checked[i]).getBundleInfo().getSymbolicName(), null, NameVersionDescriptor.TYPE_FEATURE));
 					} else {
 						included.add(new NameVersionDescriptor(((IResolvedBundle) checked[i]).getBundleInfo().getSymbolicName(), null));
@@ -1158,8 +1161,23 @@ public class TargetContentsGroup {
 
 		public Object[] getElements(Object inputElement) {
 			if (inputElement instanceof ITargetDefinition) {
+				List result = new ArrayList();
+
+				// Check if there are any errors for missing features/bundles to display
+				if (fMissing == null) {
+					fMissing = new ArrayList();
+				} else {
+					fMissing.clear();
+				}
+				IResolvedBundle[] bundles = fTargetDefinition.getBundles();
+				for (int i = 0; i < bundles.length; i++) {
+					if (!bundles[i].getStatus().isOK()) {
+						fMissing.add(bundles[i]);
+						result.add(bundles[i]);
+					}
+				}
+
 				if (fFeaureModeButton.getSelection()) {
-					List result = new ArrayList();
 					IFeatureModel[] features = fTargetDefinition.getAllFeatures();
 					result.addAll(Arrays.asList(features));
 
@@ -1167,29 +1185,14 @@ public class TargetContentsGroup {
 					if (((TargetDefinition) fTargetDefinition).getOtherBundles().length > 0) {
 						result.add(OTHER_CATEGORY);
 					}
-
-					// Check if there are any errors to display
-					if (fMissingFeatures == null) {
-						fMissingFeatures = new ArrayList();
-					} else {
-						fMissingFeatures.clear();
-					}
-					IResolvedBundle[] bundles = fTargetDefinition.getBundles();
-					for (int i = 0; i < bundles.length; i++) {
-						if (!bundles[i].getStatus().isOK()) {
-							fMissingFeatures.add(bundles[i]);
-							result.add(bundles[i]);
-						}
-					}
-
-					return result.toArray();
 				} else if (fGrouping == GROUP_BY_CONTAINER) {
-					return fTargetDefinition.getBundleContainers();
+					result.addAll(Arrays.asList(fTargetDefinition.getBundleContainers()));
 				} else if (fGrouping == GROUP_BY_NONE) {
-					return fTargetDefinition.getAllBundles();
+					result.addAll(Arrays.asList(fTargetDefinition.getAllBundles()));
 				} else {
-					return getFileBundleMapping().keySet().toArray();
+					result.addAll(Arrays.asList(getFileBundleMapping().keySet().toArray()));
 				}
+				return result.toArray();
 			}
 			return new Object[] {inputElement};
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetLocationsGroup.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetLocationsGroup.java
index de2f92c..4772ac4 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetLocationsGroup.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/TargetLocationsGroup.java
@@ -11,8 +11,10 @@
 package org.eclipse.pde.internal.ui.shared.target;
 
 import java.util.*;
+import java.util.List;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
@@ -278,6 +280,8 @@ public class TargetLocationsGroup {
 			IBundleContainer oldContainer = null;
 			if (selected instanceof IBundleContainer) {
 				oldContainer = (IBundleContainer) selected;
+			} else if (selected instanceof IUWrapper) {
+				oldContainer = ((IUWrapper) selected).getParent();
 			} else if (selected instanceof IResolvedBundle) {
 				TreeItem[] treeSelection = fTreeViewer.getTree().getSelection();
 				if (treeSelection.length > 0) {
@@ -320,40 +324,64 @@ public class TargetLocationsGroup {
 		IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
 		IBundleContainer[] containers = fTarget.getBundleContainers();
 		if (!selection.isEmpty() && containers != null && containers.length > 0) {
-			Set newContainers = new HashSet();
-			newContainers.addAll(Arrays.asList(fTarget.getBundleContainers()));
-			Iterator iterator = selection.iterator();
+			List toRemove = new ArrayList();
 			boolean removedSite = false;
-			while (iterator.hasNext()) {
+			boolean removedContainer = false;
+			for (Iterator iterator = selection.iterator(); iterator.hasNext();) {
 				Object currentSelection = iterator.next();
 				if (currentSelection instanceof IBundleContainer) {
 					if (currentSelection instanceof IUBundleContainer) {
 						removedSite = true;
 					}
-					newContainers.remove(currentSelection);
+					removedContainer = true;
+					toRemove.add(currentSelection);
+				}
+				if (currentSelection instanceof IUWrapper) {
+					toRemove.add(currentSelection);
 				}
 			}
-			if (newContainers.size() > 0) {
-				fTarget.setBundleContainers((IBundleContainer[]) newContainers.toArray(new IBundleContainer[newContainers.size()]));
+
+			if (removedContainer) {
+				Set newContainers = new HashSet();
+				newContainers.addAll(Arrays.asList(fTarget.getBundleContainers()));
+				newContainers.removeAll(toRemove);
+				if (newContainers.size() > 0) {
+					fTarget.setBundleContainers((IBundleContainer[]) newContainers.toArray(new IBundleContainer[newContainers.size()]));
+				} else {
+					fTarget.setBundleContainers(null);
+				}
+
+				// If we remove a site container, the content change update must force a re-resolve bug 275458 / bug 275401
+				contentsChanged(removedSite);
+				fTreeViewer.refresh(false);
+				updateButtons();
 			} else {
-				fTarget.setBundleContainers(null);
+				for (Iterator iterator = toRemove.iterator(); iterator.hasNext();) {
+					Object current = iterator.next();
+					if (current instanceof IUWrapper) {
+						((IUWrapper) current).getParent().removeInstallableUnit(((IUWrapper) current).getIU());
+					}
+				}
+				contentsChanged(removedSite);
+				fTreeViewer.refresh(true);
+				updateButtons();
 			}
-
-			// If we remove a site container, the content change update must force a re-resolve bug 275458 / bug 275401
-			contentsChanged(removedSite);
-			fTreeViewer.refresh(false);
-			updateButtons();
 		}
 	}
 
 	private void updateButtons() {
 		IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
-		fEditButton.setEnabled(!selection.isEmpty() && selection.getFirstElement() instanceof IBundleContainer);
+		fEditButton.setEnabled(!selection.isEmpty() && (selection.getFirstElement() instanceof IBundleContainer || selection.getFirstElement() instanceof IUWrapper));
 		// If any container is selected, allow the remove (the remove ignores non-container entries)
 		boolean removeAllowed = false;
 		Iterator iter = selection.iterator();
 		while (iter.hasNext()) {
-			if (iter.next() instanceof IBundleContainer) {
+			Object current = iter.next();
+			if (current instanceof IBundleContainer) {
+				removeAllowed = true;
+				break;
+			}
+			if (current instanceof IUWrapper) {
 				removeAllowed = true;
 				break;
 			}
@@ -400,7 +428,13 @@ public class TargetLocationsGroup {
 						// TODO See if we can get the profile using API
 						try {
 							IProfile profile = ((TargetDefinition) fTarget).getProfile();
-							return ((IUBundleContainer) parentElement).getInstallableUnits(profile);
+							IInstallableUnit[] units = ((IUBundleContainer) parentElement).getInstallableUnits(profile);
+							// Wrap the units so that they remember their parent container
+							List wrappedUnits = new ArrayList(units.length);
+							for (int i = 0; i < units.length; i++) {
+								wrappedUnits.add(new IUWrapper(units[i], (IUBundleContainer) parentElement));
+							}
+							return wrappedUnits.toArray();
 						} catch (CoreException e) {
 							return new Object[] {e.getStatus()};
 						}
@@ -413,6 +447,9 @@ public class TargetLocationsGroup {
 		}
 
 		public Object getParent(Object element) {
+			if (element instanceof IUWrapper) {
+				return ((IUWrapper) element).getParent();
+			}
 			return null;
 		}
 
@@ -456,4 +493,26 @@ public class TargetLocationsGroup {
 
 	}
 
+	/**
+	 * Wraps an installable unit so that it knows what bundle container parent it belongs to
+	 * in the tree.
+	 */
+	class IUWrapper {
+		private IInstallableUnit fIU;
+		private IUBundleContainer fParent;
+
+		public IUWrapper(IInstallableUnit unit, IUBundleContainer parent) {
+			fIU = unit;
+			fParent = parent;
+		}
+
+		public IInstallableUnit getIU() {
+			return fIU;
+		}
+
+		public IUBundleContainer getParent() {
+			return fParent;
+		}
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/messages.properties b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/messages.properties
index e041218..c439645 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/messages.properties
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/shared/target/messages.properties
@@ -88,6 +88,8 @@ EditIUContainerPage_6=Select content from a software site to be added to your ta
 EditIUContainerPage_7=Edit Software Site
 EditIUContainerPage_8=Include all environments
 EditIUContainerPage_9=The target platform service could not be acquired.
+EditIUContainerPage_itemSelected={0} item selected
+EditIUContainerPage_itemsSelected={0} items selected
 EditProfileContainerPage_1=Var&iables...
 EditProfileContainerPage_2=Select a configuration directory
 EditProfileContainerPage_3=Edit Installation
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsole.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsole.java
index c75b3d6..77df9a0 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsole.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsole.java
@@ -7,23 +7,32 @@
  *
  * Contributors:
  *     Chris Aniszczyk <caniszczyk at gmail.com> - initial API and implementation
+ *     IBM Corporation - ongoing enhancements and bug fixing
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.util;
 
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.osgi.framework.console.ConsoleSession;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.ui.PDEPlugin;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 import org.eclipse.ui.console.IOConsole;
+import org.eclipse.ui.console.IOConsoleOutputStream;
+import org.osgi.framework.BundleContext;
 
+/**
+ * OSGi console connected to the Host/Running Eclipse.
+ * 
+ * @since 3.6
+ */
 public class OSGiConsole extends IOConsole {
 
 	public final static String TYPE = "osgiConsole"; //$NON-NLS-1$
 	private final ConsoleSession session;
 
 	public OSGiConsole(final OSGiConsoleFactory factory) {
-		super(PDEUIMessages.OSGiConsole_name, TYPE, null, true);
+		super(NLS.bind(PDEUIMessages.OSGiConsole_name, Platform.getInstallLocation().getURL().getPath()), TYPE, null, true);
 		session = new ConsoleSession() {
 
 			public OutputStream getOutput() {
@@ -41,8 +50,21 @@ public class OSGiConsole extends IOConsole {
 	}
 
 	protected void init() {
-		PDEPlugin.getDefault().getBundle().getBundleContext().registerService(ConsoleSession.class.getName(), session, null);
 		super.init();
+		IOConsoleOutputStream info = newOutputStream(); // create a stream to write info message to
+		try {
+			info.write(PDEUIMessages.OSGiConsoleFactory_title);
+		} catch (IOException e) {
+		} finally {
+			try {
+				info.close();
+			} catch (IOException e) {
+				PDEPlugin.log(e);
+			}
+		}
+
+		BundleContext context = PDEPlugin.getDefault().getBundle().getBundleContext();
+		context.registerService(ConsoleSession.class.getName(), session, null);
 	}
 
 	protected void dispose() {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsoleFactory.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsoleFactory.java
index 4c950c2..e957351 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsoleFactory.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsoleFactory.java
@@ -7,13 +7,20 @@
  *
  * Contributors:
  *     Chris Aniszczyk <caniszczyk at gmail.com> - initial API and implementation
+ *     IBM Corporation - ongoing enhancements and bug fixes
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.util;
 
 import org.eclipse.ui.console.*;
 
+/**
+ * Console factory extension used to create a "Host OSGi Console".
+ * 
+ * @since 3.6
+ */
 public class OSGiConsoleFactory implements IConsoleFactory {
-	private IConsoleManager fConsoleManager = null;
+	private final IConsoleManager fConsoleManager;
+	private IOConsole fConsole = null;
 
 	public OSGiConsoleFactory() {
 		fConsoleManager = ConsolePlugin.getDefault().getConsoleManager();
@@ -23,19 +30,32 @@ public class OSGiConsoleFactory implements IConsoleFactory {
 	 * @see org.eclipse.ui.console.IConsoleFactory#openConsole()
 	 */
 	public void openConsole() {
-		openConsole(null);
-	}
+		IOConsole console = getConsole();
 
-	public void openConsole(String initialText) {
-		IOConsole fConsole = new OSGiConsole(this);
-		fConsoleManager.addConsoles(new IConsole[] {fConsole});
-		if (initialText != null) {
-			fConsole.getDocument().set(initialText);
+		IConsole[] existing = fConsoleManager.getConsoles();
+		boolean exists = false;
+		for (int i = 0; i < existing.length; i++) {
+			if (console == existing[i])
+				exists = true;
 		}
-		fConsoleManager.showConsoleView(fConsole);
+		if (!exists)
+			fConsoleManager.addConsoles(new IConsole[] {console});
+		fConsoleManager.showConsoleView(console);
+	}
+
+	private synchronized IOConsole getConsole() {
+		if (fConsole != null)
+			return fConsole;
+		fConsole = new OSGiConsole(this);
+		return fConsole;
 	}
 
 	void closeConsole(OSGiConsole console) {
+		synchronized (this) {
+			if (console != fConsole)
+				throw new IllegalArgumentException("Wrong console instance!"); //$NON-NLS-1$
+			fConsole = null;
+		}
 		fConsoleManager.removeConsoles(new IConsole[] {console});
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsolePageParticipant.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsolePageParticipant.java
new file mode 100644
index 0000000..a6fcbbe
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/OSGiConsolePageParticipant.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.util;
+
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.ui.console.*;
+import org.eclipse.ui.console.actions.CloseConsoleAction;
+import org.eclipse.ui.part.IPageBookViewPage;
+
+/**
+ * Page participant extension for an OSGi console. Contributes a close action.
+ * 
+ * @since 3.6
+ */
+public class OSGiConsolePageParticipant implements IConsolePageParticipant {
+
+	private CloseConsoleAction fCloseAction;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	public Object getAdapter(Class adapter) {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.console.IConsolePageParticipant#init(org.eclipse.ui.part.IPageBookViewPage, org.eclipse.ui.console.IConsole)
+	 */
+	public void init(IPageBookViewPage page, IConsole console) {
+		fCloseAction = new CloseConsoleAction(console);
+		IToolBarManager manager = page.getSite().getActionBars().getToolBarManager();
+		manager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fCloseAction);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.console.IConsolePageParticipant#dispose()
+	 */
+	public void dispose() {
+		fCloseAction = null;
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.console.IConsolePageParticipant#activated()
+	 */
+	public void activated() {
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.console.IConsolePageParticipant#deactivated()
+	 */
+	public void deactivated() {
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/ImportActionGroup.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/ImportActionGroup.java
index 82719eb..0ce6420 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/ImportActionGroup.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/ImportActionGroup.java
@@ -1,25 +1,31 @@
 /*******************************************************************************
- *  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:
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.views.plugins;
 
-import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.*;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.internal.core.importing.provisional.BundleImportDescription;
+import org.eclipse.pde.internal.core.importing.provisional.IBundleImporterDelegate;
+import org.eclipse.pde.internal.core.project.BundleProjectService;
+import org.eclipse.pde.internal.ui.PDEPlugin;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
-import org.eclipse.pde.internal.ui.wizards.imports.PluginImportOperation;
-import org.eclipse.pde.internal.ui.wizards.imports.PluginImportWizard;
+import org.eclipse.pde.internal.ui.wizards.imports.*;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.actions.ActionContext;
 import org.eclipse.ui.actions.ActionGroup;
 
@@ -42,6 +48,9 @@ public class ImportActionGroup extends ActionGroup {
 				case PluginImportOperation.IMPORT_WITH_SOURCE :
 					setText(PDEUIMessages.PluginsView_asSourceProject);
 					break;
+				case PluginImportOperation.IMPORT_FROM_REPOSITORY :
+					setText(PDEUIMessages.ImportActionGroup_Repository_project);
+					break;
 			}
 		}
 
@@ -64,6 +73,7 @@ public class ImportActionGroup extends ActionGroup {
 			importMenu.add(new ImportAction(PluginImportOperation.IMPORT_BINARY, sSelection));
 			importMenu.add(new ImportAction(PluginImportOperation.IMPORT_BINARY_WITH_LINKS, sSelection));
 			importMenu.add(new ImportAction(PluginImportOperation.IMPORT_WITH_SOURCE, sSelection));
+			importMenu.add(new ImportAction(PluginImportOperation.IMPORT_FROM_REPOSITORY, sSelection));
 			menu.add(importMenu);
 		}
 	}
@@ -79,8 +89,39 @@ public class ImportActionGroup extends ActionGroup {
 		if (display == null)
 			display = Display.getDefault();
 		IPluginModelBase[] models = (IPluginModelBase[]) externalModels.toArray(new IPluginModelBase[externalModels.size()]);
+		if (importType == PluginImportOperation.IMPORT_FROM_REPOSITORY) {
+			Map importMap = getImportDescriptions(display.getActiveShell(), models);
+			if (importMap != null) {
+				RepositoryImportWizard wizard = new RepositoryImportWizard(importMap);
+				WizardDialog dialog = new WizardDialog(display.getActiveShell(), wizard);
+				dialog.open();
+			}
+		} else {
+			PluginImportWizard.doImportOperation(display.getActiveShell(), importType, models, false);
+		}
+	}
 
-		PluginImportWizard.doImportOperation(display.getActiveShell(), importType, models, false);
+	/**
+	 * Return a map of {@link IBundleImporterDelegate} > Array of {@link BundleImportDescription} to be imported.
+	 * 
+	 * @param shell shell to open message dialogs on, if required
+	 * @param models candidate models
+	 * @return  map of importer delegates to import descriptions
+	 */
+	private Map getImportDescriptions(Shell shell, IPluginModelBase[] models) {
+		BundleProjectService service = (BundleProjectService) BundleProjectService.getDefault();
+		try {
+			Map descriptions = service.getImportDescriptions(models); // all possible descriptions
+			if (!descriptions.isEmpty()) {
+				return descriptions;
+			}
+			// no applicable importers for selected models
+			MessageDialog.openInformation(shell, PDEUIMessages.ImportWizard_title, PDEUIMessages.ImportActionGroup_cannot_import);
+		} catch (CoreException e) {
+			PDEPlugin.log(e);
+			MessageDialog.openError(shell, PDEUIMessages.ImportWizard_title, e.getMessage());
+		}
+		return null;
 	}
 
 	public static boolean canImport(IStructuredSelection selection) {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/JavaSearchActionGroup.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/JavaSearchActionGroup.java
index c2640ac..eeb41ae 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/JavaSearchActionGroup.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/JavaSearchActionGroup.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.views.plugins;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportActiveTargetJob.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportActiveTargetJob.java
index 629dca3..1d47228 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportActiveTargetJob.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportActiveTargetJob.java
@@ -15,6 +15,7 @@ import java.net.URI;
 import org.eclipse.core.filesystem.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
 import org.eclipse.equinox.p2.engine.IProfile;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.core.plugin.PluginRegistry;
@@ -65,11 +66,18 @@ public class ExportActiveTargetJob extends Job {
 			if (fclearDestinationDirectory) {
 				monitor.subTask(PDEUIMessages.ExportTargetDeleteOldData); //Deleting old data...
 			}
+			IProvisioningAgent agent = (IProvisioningAgent) PDECore.getDefault().acquireService(IProvisioningAgent.SERVICE_NAME);
+			ExportTargetMetadata component = null;
 
+			if (agent != null) {
+				component = new ExportTargetMetadata(agent);
+			}
 			try {
 				if (fclearDestinationDirectory) {
-					ExportTargetMetadata.getDefault().clearExporedRepository(fDestination);
-
+					if (component != null) {
+						// If p2 is available, clear the existing repositories
+						component.clearExporedRepository(fDestination);
+					}
 					if (featureDir.fetchInfo().exists()) {
 						featureDir.delete(EFS.NONE, new NullProgressMonitor());
 					}
@@ -111,12 +119,16 @@ public class ExportActiveTargetJob extends Job {
 			}
 
 			try {
-				TargetDefinition definition = ((TargetDefinition) TargetPlatformService.getDefault().getWorkspaceTargetHandle().getTargetDefinition());
-				IProfile profile = definition.getProfile();
-				ExportTargetMetadata component = ExportTargetMetadata.getDefault();
-				IStatus status = component.exportMetadata(profile, fDestination, definition.getName());
-				if (status.isOK())
-					return status;
+				if (component != null) {
+					// If p2 is available, export the metadata
+					TargetDefinition definition = ((TargetDefinition) TargetPlatformService.getDefault().getWorkspaceTargetHandle().getTargetDefinition());
+					IProfile profile = definition.getProfile();
+					IStatus status = component.exportMetadata(profile, fDestination, definition.getName());
+					if (status.isOK()) {
+						return status;
+					}
+					return Status.OK_STATUS;
+				}
 			} catch (CoreException e) {
 				return new Status(IStatus.ERROR, PDEPlugin.getPluginId(), "Failed to export the target", e); //$NON-NLS-1$ 
 			}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportDestinationTab.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportDestinationTab.java
index 97ec7ba..e4b8e05 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportDestinationTab.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportDestinationTab.java
@@ -94,7 +94,7 @@ public class ExportDestinationTab extends AbstractExportTab {
 		initializeCombo(settings, S_ZIP_FILENAME, fArchiveCombo);
 		initializeCombo(settings, S_INSTALL_DESTINATION, fInstallCombo);
 		// Always add a default repo location to the install combo
-		String defaultRepo = PDEPlugin.getWorkspace().getRoot().getLocation() + "/.metadata/.plugins/org.eclipse.pde.core/install/";
+		String defaultRepo = PDEPlugin.getWorkspace().getRoot().getLocation() + "/.metadata/.plugins/org.eclipse.pde.core/install/"; //$NON-NLS-1$
 		if (fInstallCombo.indexOf(defaultRepo) == -1) {
 			fInstallCombo.add(defaultRepo);
 		}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportTargetMetadata.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportTargetMetadata.java
index 72f3abb..8211dc6 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportTargetMetadata.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportTargetMetadata.java
@@ -28,17 +28,8 @@ public class ExportTargetMetadata {
 	IProvisioningAgent agent = null;
 	public static ExportTargetMetadata instance = null;
 
-	public void start() {
-		instance = this;
-	}
-
-	public void stop() {
-		instance = null;
-
-	}
-
-	public static ExportTargetMetadata getDefault() {
-		return instance;
+	public ExportTargetMetadata(IProvisioningAgent agent) {
+		this.agent = agent;
 	}
 
 	public synchronized void clearExporedRepository(URI destination) {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizard.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizard.java
index 57d86de..0cd6f7b 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizard.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizard.java
@@ -15,6 +15,7 @@ import java.io.File;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.pde.internal.ui.PDEPluginImages;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 import org.eclipse.ui.IExportWizard;
 import org.eclipse.ui.IWorkbench;
@@ -26,6 +27,7 @@ public class TargetDefinitionExportWizard extends Wizard implements IExportWizar
 	public TargetDefinitionExportWizard() {
 		setNeedsProgressMonitor(true);
 		setWindowTitle(PDEUIMessages.ExportActiveTargetDefinition);
+		setDefaultPageImageDescriptor(PDEPluginImages.DESC_TARGET_WIZ);
 	}
 
 	public void addPages() {
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizardPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizardPage.java
index 65ae7ce..cf6be7c 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizardPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/TargetDefinitionExportWizardPage.java
@@ -11,31 +11,35 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.wizards.exports;
 
+import java.io.File;
+import java.io.IOException;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.pde.internal.core.target.TargetDefinition;
 import org.eclipse.pde.internal.core.target.TargetPlatformService;
-import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.pde.internal.ui.*;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.*;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.PlatformUI;
 
 public class TargetDefinitionExportWizardPage extends WizardPage {
 
 	private static final String PAGE_ID = "org.eclipse.pde.target.exportPage"; //$NON-NLS-1$
-	private Button browseButton = null;
-	private Text destDirText = null;
-	private Button clearDestinationDirCheck = null;
+	private Button fBrowseButton = null;
+	private Combo fDestinationCombo = null;
+	private Button fClearDestinationButton = null;
 
 	protected TargetDefinitionExportWizardPage() {
 		super(PAGE_ID);
 		setPageComplete(false);
 		setTitle(PDEUIMessages.ExportActiveTargetDefinition);
-		// TODO setImage(...)
+		setMessage(PDEUIMessages.ExportActiveTargetDefinition_message);
 	}
 
 	public void createControl(Composite parent) {
@@ -43,12 +47,9 @@ public class TargetDefinitionExportWizardPage extends WizardPage {
 		GridLayout layout = new GridLayout(1, false);
 		container.setLayout(layout);
 		createExportDirectoryControl(container);
-
-		//TODO initSettings();
-
-		Dialog.applyDialogFont(container);
 		setControl(container);
-		setPageComplete(validate());
+		Dialog.applyDialogFont(container);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IHelpContextIds.TARGET_EXPORT_WIZARD);
 	}
 
 	private void createExportDirectoryControl(Composite parent) {
@@ -70,44 +71,45 @@ public class TargetDefinitionExportWizardPage extends WizardPage {
 		l.setLayoutData(gd);
 		new Label(parent, SWT.NONE).setText(PDEUIMessages.ExportTargetChooseFolder);
 
-		destDirText = new Text(parent, SWT.BORDER);
-		destDirText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		destDirText.addModifyListener(new ModifyListener() {
+		fDestinationCombo = SWTFactory.createCombo(parent, SWT.BORDER, 1, null);
+		fDestinationCombo.addModifyListener(new ModifyListener() {
 			public void modifyText(ModifyEvent e) {
 				controlChanged();
 			}
 		});
-		browseButton = new Button(parent, SWT.PUSH);
-		browseButton.setText(PDEUIMessages.ExportTargetBrowse);
-		browseButton.addSelectionListener(new SelectionAdapter() {
+
+		fBrowseButton = new Button(parent, SWT.PUSH);
+		fBrowseButton.setText(PDEUIMessages.ExportTargetBrowse);
+		fBrowseButton.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
 				DirectoryDialog dialog = new DirectoryDialog(getShell());
 				dialog.setText(PDEUIMessages.ExportTargetSelectDestination);
 				dialog.setMessage(PDEUIMessages.ExportTargetSpecifyDestination);
-				String dir = destDirText.getText();
+				String dir = fDestinationCombo.getText();
 				dialog.setFilterPath(dir);
 				dir = dialog.open();
 				if (dir == null || dir.equals("")) { //$NON-NLS-1$
 					return;
 				}
-				destDirText.setText(dir);
+				fDestinationCombo.setText(dir);
 				controlChanged();
 			}
 		});
 
-		clearDestinationDirCheck = new Button(parent, SWT.CHECK);
-		clearDestinationDirCheck.setText(PDEUIMessages.ExportTargetClearDestination);
+		fClearDestinationButton = new Button(parent, SWT.CHECK);
+		fClearDestinationButton.setText(PDEUIMessages.ExportTargetClearDestination);
 		gd = new GridData();
 		gd.horizontalSpan = 2;
-		clearDestinationDirCheck.setLayoutData(gd);
+		gd.horizontalIndent = 15;
+		fClearDestinationButton.setLayoutData(gd);
 	}
 
 	public String getDestinationDirectory() {
-		return destDirText.getText();
+		return fDestinationCombo.getText();
 	}
 
 	public boolean isClearDestinationDirectory() {
-		return clearDestinationDirCheck.getSelection();
+		return fClearDestinationButton.getSelection();
 	}
 
 	public void controlChanged() {
@@ -117,8 +119,45 @@ public class TargetDefinitionExportWizardPage extends WizardPage {
 	protected boolean validate() {
 		setMessage(null);
 
-		if (destDirText.getText().equals("")) { //$NON-NLS-1$
-			setMessage(PDEUIMessages.ExportTargetError_ChooseDestination, IStatus.WARNING);
+		if (fDestinationCombo.getText().equals("")) { //$NON-NLS-1$
+			setMessage(PDEUIMessages.ExportTargetError_ChooseDestination, IStatus.ERROR);
+			return false;
+		} else if (!isValidLocation(fDestinationCombo.getText().trim())) {
+			setMessage(PDEUIMessages.ExportTargetError_validPath, IStatus.ERROR);
+			return false;
+		}
+
+		return true;
+	}
+
+	protected void initializeCombo(IDialogSettings settings, String key, Combo combo) {
+		for (int i = 0; i < 6; i++) {
+			String curr = settings.get(key + String.valueOf(i));
+			if (curr != null && combo.indexOf(curr) == -1) {
+				combo.add(curr);
+			}
+		}
+		if (combo.getItemCount() > 0)
+			combo.setText(combo.getItem(0));
+	}
+
+	protected void saveCombo(IDialogSettings settings, String key, Combo combo) {
+		if (combo.getText().trim().length() > 0) {
+			settings.put(key + String.valueOf(0), combo.getText().trim());
+			String[] items = combo.getItems();
+			int nEntries = Math.min(items.length, 5);
+			for (int i = 0; i < nEntries; i++) {
+				settings.put(key + String.valueOf(i + 1), items[i].trim());
+			}
+		}
+	}
+
+	protected boolean isValidLocation(String location) {
+		try {
+			String destinationPath = new File(location).getCanonicalPath();
+			if (destinationPath == null || destinationPath.length() == 0)
+				return false;
+		} catch (IOException e) {
 			return false;
 		}
 
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/PointSelectionPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/PointSelectionPage.java
index 393d7b7..de3b213 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/PointSelectionPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/PointSelectionPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.wizards.extension;
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/CVSBundleImportPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/CVSBundleImportPage.java
index 726ddf4..62353be 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/CVSBundleImportPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/CVSBundleImportPage.java
@@ -16,8 +16,7 @@ import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.importing.CvsBundleImportDescription;
 import org.eclipse.pde.internal.core.importing.provisional.BundleImportDescription;
-import org.eclipse.pde.internal.ui.PDEUIMessages;
-import org.eclipse.pde.internal.ui.SWTFactory;
+import org.eclipse.pde.internal.ui.*;
 import org.eclipse.pde.internal.ui.provisional.IBundeImportWizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.*;
@@ -157,6 +156,8 @@ public class CVSBundleImportPage extends WizardPage implements IBundeImportWizar
 			bundlesViewer.setInput(descriptions);
 			updateCount();
 		}
+
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IHelpContextIds.PLUGIN_IMPORT_CVS_PAGE);
 	}
 
 	/* (non-Javadoc)
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportWizard.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportWizard.java
index fce0f2e..90269aa 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportWizard.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportWizard.java
@@ -106,7 +106,7 @@ public class PluginImportWizard extends Wizard implements IImportWizard, IPageCh
 		if (!page1.finishPages()) {
 			return false;
 		}
-		doImportOperation(getShell(), page1.getImportType(), models, page2.forceAutoBuild(), launchedConfiguration > 0, page1.getAlternateSourceLocations(), page1.getImportDescriptions());
+		doImportOperation(page1.getImportType(), models, page2.forceAutoBuild(), launchedConfiguration > 0, page1.getAlternateSourceLocations(), page1.getImportDescriptions());
 		return true;
 	}
 
@@ -151,21 +151,23 @@ public class PluginImportWizard extends Wizard implements IImportWizard, IPageCh
 	}
 
 	public static void doImportOperation(Shell shell, int importType, IPluginModelBase[] models, boolean forceAutobuild) {
-		doImportOperation(shell, importType, models, forceAutobuild, false, null, null);
+		doImportOperation(importType, models, forceAutobuild, false, null, null);
 	}
 
 	/**
+	 * Performs the import.
 	 * 
-	 * @param shell
-	 * @param importType
-	 * @param models
-	 * @param forceAutobuild
-	 * @param launchedConfiguration
+	 * @param importType one of the import operation types
+	 * @param models models being imported
+	 * @param forceAutobuild whether to force a build after the import
+	 * @param launchedConfiguration if there is a launched target currently running 
 	 * @param alternateSource used to locate source attachments or <code>null</code> if default
 	 * 	source locations should be used (from active target platform).
+	 * @param importerToDescriptions map of bundle importers to import descriptions if importing
+	 *  from a repository, else <code>null</code>
 	 *  
 	 */
-	private static void doImportOperation(Shell shell, int importType, IPluginModelBase[] models, boolean forceAutobuild, boolean launchedConfiguration, SourceLocationManager alternateSource, Map importerToDescriptions) {
+	public static void doImportOperation(int importType, IPluginModelBase[] models, boolean forceAutobuild, boolean launchedConfiguration, SourceLocationManager alternateSource, Map importerToDescriptions) {
 		PluginImportOperation job = new PluginImportOperation(models, importType, forceAutobuild);
 		job.setImportDescriptions(importerToDescriptions);
 		job.setAlternateSource(alternateSource);
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/RepositoryImportWizard.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/RepositoryImportWizard.java
new file mode 100644
index 0000000..97c2535
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/RepositoryImportWizard.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.wizards.imports;
+
+import java.util.*;
+import java.util.Map.Entry;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.internal.core.importing.IBundleImporter;
+import org.eclipse.pde.internal.core.importing.provisional.BundleImportDescription;
+import org.eclipse.pde.internal.core.project.BundleProjectService;
+import org.eclipse.pde.internal.ui.*;
+import org.eclipse.pde.internal.ui.provisional.IBundeImportWizardPage;
+
+/**
+ * Wizard to import plug-ins from a repository.
+ * 
+ * @since 3.6
+ */
+public class RepositoryImportWizard extends Wizard {
+
+	/**
+	 * Map of import delegates to import descriptions as provided by the {@link BundleProjectService}
+	 */
+	private Map fImportMap;
+
+	/**
+	 * Map of importer identifier to associated wizard import page
+	 */
+	private Map fIdToPages = new HashMap();
+
+	private static final String STORE_SECTION = "RepositoryImportWizard"; //$NON-NLS-1$
+
+	/**
+	 * Map of import delegates to import descriptions.
+	 * 
+	 * @param importMap
+	 */
+	public RepositoryImportWizard(Map importMap) {
+		IDialogSettings masterSettings = PDEPlugin.getDefault().getDialogSettings();
+		setDialogSettings(getSettingsSection(masterSettings));
+		setDefaultPageImageDescriptor(PDEPluginImages.DESC_PLUGIN_IMPORT_WIZ);
+		setWindowTitle(PDEUIMessages.ImportWizard_title);
+		fImportMap = importMap;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.wizard.Wizard#addPages()
+	 */
+	public void addPages() {
+		Iterator iterator = fImportMap.entrySet().iterator();
+		while (iterator.hasNext()) {
+			Entry entry = (Entry) iterator.next();
+			IBundleImporter importer = (IBundleImporter) entry.getKey();
+			BundleImportDescription[] descriptions = (BundleImportDescription[]) entry.getValue();
+			IBundeImportWizardPage page = (IBundeImportWizardPage) fIdToPages.get(importer.getId());
+			if (page == null) {
+				page = getImportPage(importer.getId());
+				if (page != null) {
+					fIdToPages.put(importer.getId(), page);
+					addPage(page);
+					page.setSelection(descriptions);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Creates and returns a wizard page associated with the given bundle importer extension identifier
+	 * or <code>null</code> of none.
+	 * 
+	 * @param importerId org.eclipse.pde.core.bundleImporters extension identifier
+	 * @return associated bundle import wizard page or <code>null</code>
+	 */
+	private IBundeImportWizardPage getImportPage(String importerId) {
+		IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(IPDEUIConstants.EXTENSION_POINT_BUNDLE_IMPORT_PAGES);
+		if (point != null) {
+			IConfigurationElement[] infos = point.getConfigurationElements();
+			for (int i = 0; i < infos.length; i++) {
+				IConfigurationElement element = infos[i];
+				String id = element.getAttribute("bundleImporter"); //$NON-NLS-1$
+				if (id != null && importerId.equals(id)) {
+					try {
+						return (IBundeImportWizardPage) element.createExecutableExtension("class"); //$NON-NLS-1$
+					} catch (CoreException e) {
+						PDEPlugin.log(e);
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	private IDialogSettings getSettingsSection(IDialogSettings master) {
+		IDialogSettings setting = master.getSection(STORE_SECTION);
+		if (setting == null) {
+			setting = master.addNewSection(STORE_SECTION);
+		}
+		return setting;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
+	 */
+	public boolean performFinish() {
+		// collect the bundle descriptions from each page and import
+		Map importMap = new HashMap();
+		List plugins = new ArrayList();
+		IWizardPage[] pages = getPages();
+		for (int i = 0; i < pages.length; i++) {
+			IBundeImportWizardPage page = (IBundeImportWizardPage) pages[i];
+			if (page.finish()) {
+				BundleImportDescription[] descriptions = page.getSelection();
+				if (descriptions != null && descriptions.length > 0) {
+					for (int j = 0; j < descriptions.length; j++) {
+						BundleImportDescription description = descriptions[j];
+						if (j == 0) {
+							Object importer = description.getProperty(BundleProjectService.BUNDLE_IMPORTER);
+							if (importer != null) {
+								importMap.put(importer, descriptions);
+							}
+						}
+						Object plugin = description.getProperty(BundleProjectService.PLUGIN);
+						if (plugin != null) {
+							plugins.add(plugin);
+						}
+					}
+				}
+			} else {
+				return false;
+			}
+		}
+		if (!importMap.isEmpty()) {
+			PluginImportWizard.doImportOperation(PluginImportOperation.IMPORT_FROM_REPOSITORY, (IPluginModelBase[]) plugins.toArray(new IPluginModelBase[plugins.size()]), false, false, null, importMap);
+		}
+		return true;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java
index 27fd485..4657b6c 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -103,12 +103,6 @@ public abstract class ContentPage extends WizardPage {
 			return errorMessage;
 		}
 
-		// Validate Name
-		errorMessage = validateName();
-		if (errorMessage != null) {
-			return errorMessage;
-		}
-
 		return null;
 	}
 
@@ -124,15 +118,6 @@ public abstract class ContentPage extends WizardPage {
 		return null;
 	}
 
-	/**
-	 */
-	private String validateName() {
-		if (fNameText.getText().trim().length() == 0) {
-			return PDEUIMessages.ContentPage_noname;
-		}
-		return null;
-	}
-
 	private String validateId() {
 		String id = fIdText.getText().trim();
 		if (id.length() == 0)
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/PluginClassCodeGenerator.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/PluginClassCodeGenerator.java
index 5297d20..69c7065 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/PluginClassCodeGenerator.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/PluginClassCodeGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +20,7 @@ import org.eclipse.pde.core.plugin.IPluginReference;
 import org.eclipse.pde.internal.build.IPDEBuildConstants;
 import org.eclipse.pde.internal.core.util.CoreUtility;
 import org.eclipse.pde.ui.templates.PluginReference;
+
 public class PluginClassCodeGenerator {
 	private PluginFieldData fPluginData;
 	private IProject fProject;
@@ -47,7 +48,8 @@ public class PluginClassCodeGenerator {
 		IFile file = fProject.getFile(path.append(className + ".java")); //$NON-NLS-1$
 		StringWriter swriter = new StringWriter();
 		PrintWriter writer = new PrintWriter(swriter);
-		if (fPluginData.getOSGiFramework() != null) {
+		// only generate/extend plug-in classes if it's a IU plug-in
+		if (fPluginData.getOSGiFramework() != null || !fPluginData.isUIPlugin()) {
 			generateActivatorClass(packageName, className, writer);
 		} else {
 			generatePluginClass(packageName, className, writer);
@@ -162,18 +164,26 @@ public class PluginClassCodeGenerator {
 		writer.println();
 		writer.println("public class " + className + " implements BundleActivator {"); //$NON-NLS-1$ //$NON-NLS-2$
 		writer.println();
+		writer.println("\tprivate static BundleContext context;"); //$NON-NLS-1$
+		writer.println();
+		writer.println("\tstatic BundleContext getContext() {"); //$NON-NLS-1$
+		writer.println("\t\treturn context;"); //$NON-NLS-1$
+		writer.println("\t}"); //$NON-NLS-1$
+		writer.println();
 		writer.println("\t/*"); //$NON-NLS-1$
 		writer.println("\t * (non-Javadoc)"); //$NON-NLS-1$
 		writer.println("\t * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)"); //$NON-NLS-1$
 		writer.println("\t */"); //$NON-NLS-1$
-		writer.println("\tpublic void start(BundleContext context) throws Exception {"); //$NON-NLS-1$
+		writer.println("\tpublic void start(BundleContext bundleContext) throws Exception {"); //$NON-NLS-1$
+		writer.println("\t\t" + className + ".context = bundleContext;"); //$NON-NLS-1$ //$NON-NLS-2$
 		writer.println("\t}"); //$NON-NLS-1$
 		writer.println();
 		writer.println("\t/*"); //$NON-NLS-1$
 		writer.println("\t * (non-Javadoc)"); //$NON-NLS-1$
 		writer.println("\t * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)"); //$NON-NLS-1$
 		writer.println("\t */"); //$NON-NLS-1$
-		writer.println("\tpublic void stop(BundleContext context) throws Exception {"); //$NON-NLS-1$
+		writer.println("\tpublic void stop(BundleContext bundleContext) throws Exception {"); //$NON-NLS-1$
+		writer.println("\t\t" + className + ".context = null;"); //$NON-NLS-1$ //$NON-NLS-2$
 		writer.println("\t}"); //$NON-NLS-1$
 		writer.println();
 		writer.println("}"); //$NON-NLS-1$		
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java
index ced79a6..3c8c426 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/ConfigurationTab.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/ConfigurationTab.java
index d4c45df..350b7ca 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/ConfigurationTab.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/ConfigurationTab.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/JUnitTabGroup.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/JUnitTabGroup.java
index 100d430..a55eaaa 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/JUnitTabGroup.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/JUnitTabGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/OSGiSettingsTab.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/OSGiSettingsTab.java
index 831ce93..98498d2 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/OSGiSettingsTab.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/OSGiSettingsTab.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/TracingTab.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/TracingTab.java
index 9d6e4bb..90ca849 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/TracingTab.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/TracingTab.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates/OptionTemplateWizardPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates/OptionTemplateWizardPage.java
index a403e7a..c82a819 100644
--- a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates/OptionTemplateWizardPage.java
+++ b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates/OptionTemplateWizardPage.java
@@ -1,11 +1,11 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2008 IBM Corporation and others.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.ui.templates;
diff --git a/eclipse/plugins/org.eclipse.pde/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.pde/META-INF/MANIFEST.MF
index 3edcd48..4ed2ac9 100644
--- a/eclipse/plugins/org.eclipse.pde/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.pde/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde; singleton:=true
-Bundle-Version: 3.4.100.qualifier
+Bundle-Version: 3.6.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.pde/about.properties b/eclipse/plugins/org.eclipse.pde/about.properties
index 729f063..6b13031 100644
--- a/eclipse/plugins/org.eclipse.pde/about.properties
+++ b/eclipse/plugins/org.eclipse.pde/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse Plug-in Development Environment\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/pde
 
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-create.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-create.xml
index 8381f0f..2acec7f 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-create.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-create.xml
@@ -63,7 +63,7 @@
       </subitem>
       <subitem label="Accept the rest of the default preloaded values on the &quot;Plug-in Project&quot; page and click &quot;Next &gt;&quot;" skip="false">
       </subitem>
-      <subitem label="Accept the default preloaded values on the &quot;Plug-in Content&quot; page and click &quot;Next &gt;&quot;" skip="false">
+      <subitem label="Accept the default preloaded values on the &quot;Content&quot; page. Verify that  &quot;Rich Client Applications&quot; section marks No. Click &quot;Next &gt;&quot;" skip="false">
       </subitem>
       <subitem label="Select the &quot;Hello, World&quot; template from the list of &quot;Available Templates&quot; and click &quot;Finish&quot;" skip="false">
       </subitem>
@@ -86,11 +86,11 @@
       </subitem>
       <subitem label="Select the &quot;Sample Menu&quot; entry" skip="false">
       </subitem>
-      <subitem label="Replace the content of the &quot;label&quot; text box under the &quot;Extension Element Details&quot; heading with &quot;Hello!&quot;" skip="false">
+      <subitem label="Replace the content of the &quot;label&quot; text box under the &quot;Extension Element Details&quot; heading with &quot;Hello Menu&quot;" skip="false">
       </subitem>
       <subitem label="Select the &quot;Sample Action&quot; entry under the &quot;All Extensions&quot; heading" skip="false">
       </subitem>
-      <subitem label="Replace the content of the &quot;label&quot; text box under the &quot;Extension Element Details&quot; heading with &quot;Display Hello World!&quot;" skip="false">
+      <subitem label="Replace the content of the &quot;label&quot; text box under the &quot;Extension Element Details&quot; heading with &quot;Display Hello World&quot;" skip="false">
       </subitem>
       <subitem label="Select &quot;File-&gt;Save&quot; from the main menu" skip="false">
       </subitem>
@@ -108,18 +108,22 @@
                serialization="org.eclipse.ui.navigate.openResource(filePath=/com.example.helloworld/META-INF/MANIFEST.MF)">
          </command>
       </subitem>
-      <subitem label="Click the &quot;Launch an Eclipse application&quot; hyperlink under the &quot;Testing&quot; heading" skip="false">
+      <subitem label="Click the &quot;Launch an Eclipse application&quot; hyperlink under the &quot;Testing&quot; heading." skip="false">
       </subitem>
-      <subitem label="Note the &quot;Hello!&quot; entry in the main menu in the newly launched Eclipse platform" skip="true">
+      <subitem label="Note the &quot;Hello Menu&quot; entry in the main menu in the newly launched Eclipse platform." skip="true">
       </subitem>
-      <subitem label="Select &quot;Hello!-&gt;Display Hello World!&quot; from the main menu" skip="false">
+      <subitem label="Select &quot;Hello Menu-&gt;Display Hello World&quot; from the main menu." skip="false">
+      </subitem>
+      <subitem label="Verify that a dialog box is displayed with the title &quot;Helloworld&quot; and message as &quot;Hello, Eclipse world&quot;. Click &quot;OK&quot; to close it." skip="false">
       </subitem>
       <subitem label="Click on the &quot;Workbench&quot;  icon to close the &quot;Welcome&quot; view and go to the Eclipse workbench." skip="true">
       </subitem>
-      <subitem label="Note the icon with the Eclipse logo in the main toolbar in the newly launched Eclipse platform" skip="true">
+      <subitem label="Note the icon with the Eclipse logo in the main toolbar in the newly launched Eclipse platform." skip="true">
       </subitem>
-      <subitem label="Click the icon with the Eclipse logo in the main toolbar" skip="false">
+      <subitem label="Click the icon with the Eclipse logo in the main toolbar." skip="false">
       </subitem>
+      <subitem label="Verify that a dialog box is displayed with the title &quot;Helloworld&quot; and message as &quot;Hello, Eclipse world&quot;. Click &quot;OK&quot; to close it." skip="false">
+      </subitem>      
       <subitem label="Select &quot;File-&gt;Exit&quot; from the main menu to exit the target Eclipse platform" skip="false">
       </subitem>
    </item>
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-feature.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-feature.xml
index 901ca85..106f99d 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-feature.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/helloworld/helloworld-feature.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     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:
+    Copyright (c) 2005, 2009 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
          IBM Corporation - initial API and implementation
+    -->
  -->
 
 <!-- Simple Cheat Sheet -->
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-create.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-create.xml
index da827f3..7af1073 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-create.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-create.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -61,11 +61,8 @@
                skip="false"/>
       <subitem label="Select the &quot;Yes&quot; radio button under the &quot;Rich Client Application&quot; heading on the &quot;Plug-in Content&quot; page and click &quot;Next &gt;&quot;" 
                skip="false"/>
-      <subitem label="Select the &quot;Hello RCP&quot; template from the list of &quot;Available Templates&quot; and click &quot;Next&quot;" 
+      <subitem label="Select the &quot;Hello RCP&quot; template from the list of &quot;Available Templates&quot; and click &quot;Finish&quot;" 
                skip="false"/>
-      <subitem
-            label="Select the &quot;Add branding&quot; check box and click &quot;Finish&quot;">
-      </subitem>           
    </item>
 
    <!-- Item -->
@@ -96,8 +93,8 @@
          dialog="true"
          skip="false">
       <description>
-         In this step, we want to modify the <b>Hello RCP</b> text in
-         the window title bar of our RCP application to <b>Hello Eclipse</b>.
+         In this step, we want to suppress the <b>Hello RCP</b> text in
+         the window title bar of our RCP application.
          <br/>
          <br/>
          To modify the plug-in source accordingly, 
@@ -107,7 +104,7 @@
                skip="false">                                                    
          <command serialization="org.eclipse.ui.navigate.openResource(filePath=/com.example.rcpapp/src/com/example/rcpapp/ApplicationWorkbenchWindowAdvisor.java)" required="false" translate="" />
       </subitem>
-      <subitem label="Add &apos;configurer.setTitle(&quot;Hello Eclipse&quot;);&apos; in end of the &quot;preWindowOpen()&quot; method" 
+      <subitem label="Comment out &apos;configurer.setTitle(&quot;Hello RCP&quot;);&apos; in the &quot;preWindowOpen()&quot; method" 
                skip="false"/>
       <subitem label="Select &quot;File-&gt;Save&quot; from the main menu" 
                skip="false"/>
@@ -129,7 +126,7 @@
       </subitem>               
       <subitem label="Click the &quot;Launch an Eclipse application&quot; hyperlink under the &quot;Testing&quot; heading" 
                skip="false"/>
-      <subitem label="Verify that you see an empty window with a window title of &quot;Hello Eclipse&quot;" 
+      <subitem label="Verify that you see an empty window with no window title" 
                skip="true"/>
       <subitem label="Exit the RCP application" 
                skip="false"/>
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-customize.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-customize.xml
index 04e72ce..6db3d7b 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-customize.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-customize.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -124,8 +124,8 @@
                skip="true"/>
       <subitem label="Select &quot;File-&gt;Save&quot; from the main menu" 
                skip="false"/>
-      <subitem label="Note:  Eclipse expects a file called &quot;splash.bmp&quot; to be located in the root of the specified plug-in. Verify that the root folder of &quot;com.example.rcpapp&quot; plug-in has the &quot;splash.bmp&apos;." 
-               skip="true"/>
+      <subitem label="Note:  Eclipse expects a file called &quot;splash.bmp&quot; to be located in the root of the specified plug-in. Verify that the root folder of &quot;com.example.rcpapp&quot; plug-in has the &quot;splash.bmp&quot;." 
+               skip="false"/>
    </item>   
 
    <!-- Item -->
@@ -167,7 +167,7 @@
                skip="false"/>
       <subitem label="Select the &quot;win32&quot; tab under the &quot;Program Launcher&quot; heading" 
                skip="true"/>
-      <subitem label="Select the &quot;Use a single ICO file containing 7 images as specified above&quot; radio button" 
+      <subitem label="Select the &quot;Use a single ICO file containing 6 images as specified above&quot; radio button" 
                skip="true"/>
       <subitem label="Click the &quot;Browse...&quot; button adjacent to the &quot;File&quot; text box" 
                skip="true"/>
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-export.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-export.xml
index 184a70f..dc89042 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-export.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-export.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -83,7 +83,7 @@
       <subitem label="Select the checkbox corresponding to the &quot;icons&quot; directory under the &quot;Binary Build&quot; heading" 
                skip="false"/>
       <subitem label="Select the checkbox corresponding to the &quot;splash.bmp&quot; file under the &quot;Binary Build&quot; heading" 
-               skip="false"/>
+               skip="true"/>
       <subitem label="Select &quot;File-&gt;Save&quot; from the main menu" 
                skip="false"/>
    </item>
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-feature-product.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-feature-product.xml
index a9eff57..7612c8f 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-feature-product.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-feature-product.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -89,7 +89,7 @@
       </description>
       <subitem label="Select the &quot;Dependencies&quot; tab to display the &quot;Dependencies&quot; page" 
                skip="false"/>
-      <subitem label="Select the &quot;New Feature...&quot; button under the &quot;Features&quot; heading" 
+      <subitem label="Select the &quot;New Feature...&quot; tool button in the &quot;Features&quot; section." 
                skip="false"/>
       <subitem label="Input &quot;com.example.feature&quot; into the &quot;Project Name&quot; text box on the &quot;Feature Properties&quot; page" 
                skip="false"/>
diff --git a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-plugin-product.xml b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-plugin-product.xml
index 226467e..6636e8b 100644
--- a/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-plugin-product.xml
+++ b/eclipse/plugins/org.eclipse.pde/cheatsheets/rcpapp/rcpapp-plugin-product.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -62,7 +62,7 @@
                skip="false"/>
       <subitem label="Input &quot;rcpapp.product&quot; into the &quot;File name&quot; text box" 
                skip="false"/>
-      <subitem label="Select the &quot;Use a launch configuration&quot; radio button inside the &quot;Initialize the file content&quot; group and click &quot;Finish&quot;" 
+      <subitem label="Select the &quot;Use a launch configuration&quot; radio button inside the &quot;Initialize the file content&quot; group and verify that &quot;com.example.rcpapp.application&quot; is selected in the  combo box. Click &quot;Finish&quot;" 
                skip="false"/>
    </item>
 
@@ -94,13 +94,13 @@
       <description>
          To define the product, perform the following steps:
       </description>
-      <subitem label="Input &quot;RCP Application&quot; into the &quot;Name&quot; text box on the &quot;General Information&quot; section" 
+      <subitem label="Click the &quot;New...&quot; button next to the &quot;Product ID&quot; drop down menu to open the &quot;New Product Definition&quot; dialog box" 
                skip="false"/>
-      <subitem label="Click the &quot;New...&quot; button next to the &quot;Product&quot; drop down menu to open the &quot;New Product Definition&quot; dialog box" 
+      <subitem label="Input &quot;RCP Application&quot; into the &quot;Product Name&quot; text box" 
                skip="false"/>
-      <subitem label="Verify &quot;com.example.rcpapp&quot; is the inputted value for the &quot;Defining Plug-in&quot; text box" 
+      <subitem label="Verify &quot;com.example.rcpapp&quot; is the value entered for the &quot;Defining Plug-in&quot; text box" 
                skip="true"/>        
-      <subitem label="Verify &quot;product&quot; is the inputted value for the &quot;Product ID&quot; text box" 
+      <subitem label="Verify &quot;product&quot; is the value entered for the &quot;Product ID&quot; text box" 
                skip="true"/>        
       <subitem label="Accept the defaults and click &quot;Finish&quot;" 
                skip="false"/>        
diff --git a/eclipse/plugins/org.eclipse.pde/plugin.properties b/eclipse/plugins/org.eclipse.pde/plugin.properties
index 35927d3..6fc07fc 100644
--- a/eclipse/plugins/org.eclipse.pde/plugin.properties
+++ b/eclipse/plugins/org.eclipse.pde/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.pde/plugin.xml b/eclipse/plugins/org.eclipse.pde/plugin.xml
index e129154..3c68829 100644
--- a/eclipse/plugins/org.eclipse.pde/plugin.xml
+++ b/eclipse/plugins/org.eclipse.pde/plugin.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?><!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+     Copyright (c) 2005, 2009 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch.htm
index 881a6ea..106da1e 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch.htm
@@ -17,7 +17,7 @@ Platform architecture
 <h1>Platform architecture </h1>
 
 <p>The Eclipse platform is structured around the concept of <b>plug-ins</b>.  Plug-ins are
-structured bundles of code and/or data that contribute function to the system.  Function can be
+structured bundles of code and/or data that contribute functionality to the system.  Functionality can be
 contributed in the form of code libraries (Java classes with public API), platform <b>extensions</b>,
 or even documentation.  Plug-ins can define <b>extension points</b>, well-defined places 
 where other plug-ins can add functionality.</p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch_struct.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch_struct.htm
index 5973848..24583f8 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch_struct.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/arch_struct.htm
@@ -21,7 +21,7 @@ Platform SDK roadmap</H2>
 The platform runtime core implements the runtime engine that starts the platform base and dynamically discovers and runs plug-ins. A
 <b> plug-in</b> is a structured component that describes itself to the system using
 an OSGi manifest (<b>MANIFEST.MF</b>) file and a plug-in manifest
-(<b>plugin.xml</b>) file. The platform maintains a registry of installed plug-ins and the function they provide.</P>
+(<b>plugin.xml</b>) file. The platform maintains a registry of installed plug-ins and the functionality they provide.</P>
 
 <P >
 A general goal of the runtime is that the end user should not pay a memory or performance penalty for plug-ins that are installed, but not used. A plug-in can be installed and added to the registry, but the plug-in will not be activated unless
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/bundle_security.html b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/bundle_security.html
index fe4d97d..09c3117 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/bundle_security.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/bundle_security.html
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Language" content="en-us">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -60,7 +60,7 @@
 
 <p>The 'Ant' build tool has a built-in task for automating the signing of code. For more information, see the related Ant documentation at:</p>
 <p>
-<a href="http://ant.apache.org/manual/CoreTasks/signjar.html">http://ant.apache.org/manual/CoreTasks/signjar.html</a></p>
+<a href="http://ant.apache.org/manual/Tasks/signjar.html">http://ant.apache.org/manual/Tasks/signjar.html</a></p>
 </li><li>The Eclipse 'export deployable plug-ins and fragments' functionality
 
 <p>Eclipse ships with the ability to export Eclipse plug-ins  and sign them at the same time. When exporting deployable plug-ins and fragments, there is a JAR Signing tab available. In the tab, the exporter can specify a KeyStore (a password-protected key storage) containing a private key to use for the signing.</p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/compare_contentviewer.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/compare_contentviewer.htm
index 9718638..41a238e 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/compare_contentviewer.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/compare_contentviewer.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -157,8 +157,7 @@ TextMergeViewer that provide syntax highlighting must implement both the <code>g
 <p> 
 <a href="../reference/api/org/eclipse/compare/rangedifferencer/RangeDifferencer.html"><b>RangeDifferencer</b></a>
  finds the longest sequences of matching and
-non-matching comparable entities in text content. Its implementation is based on
-an objectified version of the algorithm by Eugene W. Myers found <a href="http://citeseer.ist.psu.edu/myers86ond.html">here</a>.
+non-matching comparable entities in text content.
  Clients must supply
 an input to the differencer that implements the
 <a href="../reference/api/org/eclipse/compare/rangedifferencer/IRangeComparator.html"><b>IRangeComparator</b></a>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_breakpoints.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_breakpoints.htm
index ec69461..233fa6b 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_breakpoints.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_breakpoints.htm
@@ -36,7 +36,7 @@ for your particular debug model by defining a class that implements
 <p>Breakpoints are implemented using <a href="resAdv_markers.htm">resource markers</a>.
 Recall that resource markers allow you to associate meta information about a 
 resource in the form of named attributes. By implementing a breakpoint 
-using markers, the debug model can make use of all the existing marker function 
+using markers, the debug model can make use of all the existing marker functionality 
 such as persistence, searching, adding, deleting, and displaying in editors.</p>
 <p>Why is it important to know about markers when using breakpoints?&nbsp; When
 you create a breakpoint type, you must also specify an associated marker
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_ui.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_ui.htm
index b452c98..3e41d6f 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_ui.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/debug_ui.htm
@@ -27,7 +27,7 @@ groups many of these utilities and includes methods for the following:</p>
   <li>Enabling or disabling the use of step filters</li>
 </ul>
 <p><a href="../reference/api/org/eclipse/debug/ui/IDebugView.html"><b>IDebugView</b></a>
-provides common function for debug views. It provides access to an
+provides common functionality for debug views. It provides access to an
 underlying viewer and its debug model presentation. Typically, clients
 should extend <a href="../reference/api/org/eclipse/debug/ui/AbstractDebugView.html"><b>AbstractDebugView</b></a>
 rather than implement the interface from scratch. <a href="../reference/api/org/eclipse/debug/ui/AbstractDebugView.html"><b>AbstractDebugView</b></a>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/forms_editors.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/forms_editors.htm
index 8c5b490..ae03201 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/forms_editors.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/forms_editors.htm
@@ -84,7 +84,7 @@ proficiency of your users. There are two ways you can approach it:</p>
 	In turn, add complex value-add functionality in the form pages that are hard 
 	to achieve from source. We have learned from experience that it is very hard 
 	to convince seasoned users to switch from source editing if the value-add is 
-	marginal or debatable. However, function that was only available in GUI 
+	marginal or debatable. However, functionality that was only available in GUI 
 	pages and was very high-quality was used readily.</p></li>
 </ol>
 <p align="left">Creating a high quality multi-page editor with mixed GUI and 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundles.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundles.png
new file mode 100644
index 0000000..3a65b5c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundles.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundlesinstalled.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundlesinstalled.png
new file mode 100644
index 0000000..f30fde3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2allbundlesinstalled.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2cloudinstall.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2cloudinstall.png
new file mode 100644
index 0000000..5184c9c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2cloudinstall.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2forcedupdate.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2forcedupdate.png
new file mode 100644
index 0000000..024e193
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2forcedupdate.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2reuse.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2reuse.png
new file mode 100644
index 0000000..7e5e39a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/p2reuse.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/int_eclipse.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/int_eclipse.htm
index fad7457..41b3c9e 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/int_eclipse.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/int_eclipse.htm
@@ -46,7 +46,7 @@ plug into the workbench using well defined hooks called <b>extension points</b>.
 <P >
 The platform itself is built in layers of plug-ins, each one defining extensions to the extension points of 
 lower-level plug-ins, and in turn defining their own extension points for further customization.  This extension 
-model allows plug-in developers to add a variety of function to the basic tooling platform. The artifacts for each 
+model allows plug-in developers to add a variety of functionality to the basic tooling platform. The artifacts for each 
 tool, such as files and other data, are coordinated by a common platform resource model.</P>
 <P >
 The platform gives the users a common way to work with the tools, and provides integrated management o
@@ -102,7 +102,7 @@ Workbench UI</H4>
     <td width="71%">Implements the user cockpit for navigating the platform. It defines extension points for adding UI components such as views or menu actions.&nbsp;
       It supplies additional toolkits (JFace and SWT) for building user
       interfaces. The UI services are structured so that a subset of the UI plug-ins can be used to build rich client applications that are
-      independent of the resource management and workspace model.  IDE-centric plug-ins define additional function for 
+      independent of the resource management and workspace model.  IDE-centric plug-ins define additional functionality for 
       navigating and manipulating resources.</td>
   </tr>
   <tr>
@@ -137,7 +137,7 @@ Help system</H4>
   
 <h4>Other utilities</h4>
     </td>
-    <td width="60%">Other utility plug-ins supply function such as searching and comparing resources, performing builds using XML configuration files,
+    <td width="60%">Other utility plug-ins supply functionality such as searching and comparing resources, performing builds using XML configuration files,
     and dynamically updating the platform from a server.</td>
   </tr>
 </table>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/jface.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/jface.htm
index fbc4e90..37d01ba 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/jface.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/jface.htm
@@ -14,7 +14,7 @@
 <BODY BGCOLOR="#ffffff">
 <H1>The JFace UI framework</H1>
 <P >
-We've seen that the workbench defines extension points for plug-ins to contribute UI function to the platform. Many of these extension points,
+We've seen that the workbench defines extension points for plug-ins to contribute UI functionality to the platform. Many of these extension points,
 particularly wizard extensions, are implemented using classes in the
 <b>
 org.eclipse.jface.*</b> packages. What's the distinction? </P>
@@ -68,7 +68,7 @@ using background threads.  See <a href="swt_threading.htm#workbench_threads">The
 <P >
 The lines between SWT and JFace are much cleaner. SWT does not depend on any JFace or platform code at all. Many of the SWT examples show how you can build a standalone application. </P>
 <P >
-JFace is designed to provide common application UI function on top of the SWT
+JFace is designed to provide common application UI functionality on top of the SWT
 library. JFace does not try to &quot;hide&quot; SWT or replace its function. It provides classes and interfaces that handle many of the common tasks associated with programming a dynamic UI using
 SWT.</P>
 <P >
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_actions_touchpoints.html b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_actions_touchpoints.html
new file mode 100644
index 0000000..8395e44
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_actions_touchpoints.html
@@ -0,0 +1,627 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+<meta name="copyright"
+	content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1"
+	TYPE="text/css">
+<title>Provisioning Actions and Touchpoints</title>
+</head>
+<body>
+<h1>Provisioning Actions and Touchpoints</h1>
+<h2>Introduction</h2>
+<p>A p2 Installable Unit (IU) is installed using the facilities
+provided by a <i>touchpoint</i>. The IU metadata consists of a reference
+to the touchpoint (Touchpoint Type) which also defines the version of
+the touchpoint (i.e an expectancy that it supports a certain set of
+operations), and describes instructions to execute in various p2 engine
+phases. The instructions are named after the phases - the phases
+"install", "uninstall", "configure", "unconfigure" are of interest when
+authoring, but there are also some internal phases such as "collect" and
+"checktrust" executed by the engine. Each instruction (e.g. "install")
+describes a sequence of actions to execute on the referenced touchpoint.
+Examples of actions are: create and remove directories, change
+permissions, install and remove bundles. Currently, two touchpoints
+(native, and eclipse) have been implemented. The native touchpoint has
+approximately 5 different actions, and the eclipse touchpoint has
+approximately 20. Most of these actions take parameters.</p>
+<p>The instructions are grouped and described in a Touchpoint Data
+Element. The touchpoint data element uses a Map where the key is the
+name of a p2 engine phase (such as "install"), and the value is a string
+representation of a sequence of actions. Using multiple touchpoint data
+elements is useful as it allows separation between sets of actions for
+install/uninstall/configure/unconfigure which makes it easier to
+maintain the meta data.</p>
+<h2>Actions</h2>
+<h3>Fully Qualified Action Names and Importing Actions</h3>
+<p>Each action has a fully qualified name; for example
+"org.eclipse.equinox.p2.touchpoint.eclipse.installBundle" is the FQN for
+the Eclipse touchpoints "installBundle" action. One can use the short
+name of an action if the action is imported or if the IUs "touchpoint
+type" matches the action.</p>
+Most bundle IUs use the Eclipse touchpoint type so you may be able to
+use:
+<table>
+	<tr>
+		<td><pre> installBundle(bundle:${artifact}) 
+</pre></td>
+	</tr>
+</table>
+However, if you get an error such as the following, use the fully
+qualified name.
+<table>
+	<tr>
+		<td><pre>java.lang.IllegalArgumentException: No action found for: installBundle.
+</pre></td>
+	</tr>
+</table>
+A valid call of this action using FQN might be something like:
+<table>
+	<tr>
+		<td><pre> org.eclipse.equinox.p2.touchpoint.eclipse.installBundle(bundle:${artifact}) 
+</pre></td>
+	</tr>
+</table>
+<h3>Native Touchpoint Actions</h3>
+<p><b>Action Fully Qualified Name:</b></p>
+<pre>org.eclipse.equinox.p2.touchpoint.natives.<i>action_name</i> 
+</pre>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>action</b></td>
+		<td><b>parameters</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">collect</td>
+		<td>-</td>
+		<td>collects all associated artifacts for an IU and places them
+		in a local touchpoint addressable cache. This action may be called
+		explicitly during the collect phase but is typically called as the
+		"default" action called for IUs with the Native Touchpoint Type as
+		part of the main Collect and Sizing phases.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold">cleanupzip
+		</td>
+		<td><code>source, target</code></td>
+		<td>removes unzipped files and directories that where unzipped
+		from <i>source</i> into <i>target</i> - i.e. an "undo operation" of an
+		<i>unzip</i> instruction.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">unzip</td>
+		<td>source, target</td>
+		<td>unzips the <i>source</i> into the <i>target</i> directory.
+		The <i>source</i> can be the special <code>@artifact</code> source
+		path, which denotes the download cache location for the first artifact
+		key in the IU. <i>Comments in code indicates that the use of <code>@artifact</code>
+		may be deprecated.</i></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">mkdir</td>
+		<td>path</td>
+		<td>Creates the directory specified by the parameter <i>path</i>.
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">rmdir</td>
+		<td>path</td>
+		<td>Removes the directory specified by the parameter <i>path</i>.
+		Action has no effect if the referenced directory contains files. Use
+		the <i>remove</i> action for a forced recursive remove.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">link</td>
+		<td>targetDir, linkTarget,
+		linkName, force</td>
+		<td>Performs the system action <code>ln -s</code> with the
+		parameters <i>linkTarget</i> being the source-file, <i>targetDir</i>
+		is the directory where the symbolic link will be created, and <i>linkName</i>
+		is the name of the resulting link in the <i>targetDir</i>. The <i>force</i>
+		parameter is a boolean in string form (i.e. "true"/"false") and
+		indicates if an existing link with the same name should be removed
+		before the new link is created.
+		<div style="border: 2px solid #8E87EB; padding: 6px;">This
+		action executes the system command <i>ln -s</i>, and is not available
+		on platforms that do not have this (i.e. Windows)</div>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">chmod</td>
+		<td>targetDir, targetFile,
+		permissions, options</td>
+		<td>Changes permission on a file using the system chmod command.
+		The <i>targetDir</i> parameter is either a path, or the special <code>@artifact</code>
+		which is a reference to the directory where the first artifact
+		included in the installable unit is located. The parameter <i>targetFile</i>
+		is the name of a file, and <i>permissions</i> is written like for the
+		<i>chmod</i> system command. The options parameter allows passing
+		additional options like "-R" for recursive operation. If multiple
+		parameters are needed separate them with a space (like on the command
+		line).
+		<div style="border: 2px solid #8E87EB; padding: 6px;">This
+		action executes the system command <i>chmod</i>, and is not available
+		on platforms that do not have this (i.e. Windows)</div>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">remove</td>
+		<td>path</td>
+		<td>Removes a file, or a directory (and all files under this
+		directory) as referenced by the parameter <i>path</i>.
+		<p><br>
+		(Since 3.5)</p>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">copy</td>
+		<td>source, target, overwrite</td>
+		<td>Copies a file or a directory (and all of its content) denoted
+		by <i>source</i> path to the <i>target</i> path.
+		<p>The boolean flag <i>overwrite</i> should be set to <i>true</i>
+		if the copy action should overwrite existing files. If overwrite is <i>false</i>
+		the operation will fail with an IO error in the files already exists.
+		<br>
+		(Since 3.5)</p>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">cleanupcopy
+		</td>
+		<td>source, target</td>
+		<td>Cleans up what was installed earlier with a <i>copy</i> from
+		<i>source</i> to <i>target</i>. I.e. this is an "undo" of a <i>copy</i>
+		operation.
+		<p><br>
+		(Since 3.5)</p>
+		</td>
+	</tr>
+</table>
+<h3>Eclipse Touchpoint Actions</h3>
+<p><b>Action Fully Qualified Name:</b></p>
+<pre>org.eclipse.equinox.p2.touchpoint.eclipse.<i>action_name</i> 
+</pre>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>instruction</b></td>
+		<td><b>parameters</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">collect</td>
+		<td>-</td>
+		<td>collects all associated artifacts for an IU and places them
+		in a local touchpoint addressable cache. This action may be called
+		explicitly during the collect phase but is typically called as the
+		"default" action called for IUs with the Eclipse Touchpoint Type as
+		part of the main Collect and Sizing phases.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">installBundle
+		</td>
+		<td>bundle</td>
+		<td>Installs a bundle artifact specified by the parameter <i>bundle</i>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">uninstallBundle
+		</td>
+		<td>bundle</td>
+		<td>Uninstalls a bundle artifact with a bundle-id specified by
+		the paramter <i>bundle</i></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">addSourceBundle
+		</td>
+		<td>bundle</td>
+		<td>Installs a source bundle artifact with the bundle-id
+		specified by the parameter <i>bundle</i></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">removeSourceBundle
+		</td>
+		<td>bundle</td>
+		<td>Removes/uninstalls the source bundle artifact with the
+		bundle-id specified by the parameter <i>bundle</i></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">installFeature
+		</td>
+		<td>feature, featureId, version</td>
+		<td>Installs the feature referenced by the parameter <i>feature</i>
+		(matched against artifacts in the iu). The feature is installed with
+		the id specified by the parameter <i>featureId</i>, or if this
+		parameter has the value <code>default</code>, with the id specified in
+		the artifact referenced by <i>feature</i>. The features is installed
+		with the version specified in <i>version</i>, or with the version
+		specified in the artifact referenced by the <i>feature</i> parameter
+		if the <i>version</i> parameter has the value <code>default</code></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">uninstallFeature
+		</td>
+		<td>feature, featureId, version</td>
+		<td>Uninstalls a feature. Parameters have the same meaning as for
+		the command <code>installFeature</code></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">setLauncherName
+		</td>
+		<td>name</td>
+		<td>Sets the name of the launcher to <code>name</code>. The
+		launcher name is used to configure launcher name specific ini files.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">addProgramArg
+		</td>
+		<td>programArg</td>
+		<td>Adds the string specified in the parameter <i>programArg</i>
+		as an argument to the program. If the parameters is the special value
+		<code>@artifact</code>, the location of the artifact referenced by the
+		first artifact key in the IU is used as the parameter value.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">removeProgramArg
+		</td>
+		<td>programArg</td>
+		<td>Removes the program argument specified in the string <i>programArg</i>
+		- if the parameters is the special value <code>@artifact</code>, the
+		location of the artifact referenced by the first artifact key in the
+		IU is used as the parameter value.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">setStartLevel
+		</td>
+		<td>startLevel</td>
+		<td>Sets the start level to the integer value specified in the
+		parameter <i>startValue</i></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">markStarted
+		</td>
+		<td>started</td>
+		<td>Marks the bundle referenced by the first artifact key in the
+		IU as started / not started, as controlled by the boolean parameter <i>started</i>
+		(in string form i.e. "true"/"false").</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">setFrameworkDependentProperty
+		</td>
+		<td>propName, propValue</td>
+		<td>Sets the framework dependant property named <i>propName</i>
+		to the value specified in <i>propValue</i>. Framework dependent
+		properties are properties specific to the Equinox implementation of
+		the OSGi framework.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">setFrameworkIndependentProperty
+		</td>
+		<td>propName, propValue</td>
+		<td>Sets the framework independant property named <i>propName</i>
+		to the value specified in <i>propValue</i>. Framework independent
+		properties do not specifically target Eclipse and are generally
+		applicable to other OSGi frameworks.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">setProgramProperty
+		</td>
+		<td>propName, propValue</td>
+		<td>Sets the program property named <i>propName</i> to the value
+		specified in <i>propValue</i>. Program properties are used by the
+		executable program to among other things locate the jars needed to
+		start Eclipse.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">addJVMArg
+		</td>
+		<td>jvmArg</td>
+		<td>Adds the string specified in the parameter <i>jvmArg</i> to
+		the arguments passed to the JVM.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">removeJVMArg
+		</td>
+		<td>jvmArg</td>
+		<td>Removes the string specified in the parameter <i>jvmArg</i>
+		from the arguments passed to the JVM.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">checkTrust
+		</td>
+		<td>-</td>
+		<td>collects the set of bundle files on which the signature trust
+		check should be performed. The checkTrust action is not meant to be
+		user callable and is done as part of the CheckTrust phase.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">addRepository
+		</td>
+		<td>location, type, enabled</td>
+		<td>Adds the repository at <i>location</i> of type <i>type</i> to
+		the list of known repositories. The repository will then be available
+		when installing or updating the profile in the future. The <i>enabled</i>
+		parameter takes a boolean value ("true" or "false") indicating whether
+		the add repository should be enabled. The value of the <i>location</i>
+		parameter must be a well-formed URI. The <i>type</i> parameter value
+		must be the value of one of the IRepository.TYPE_* constants,
+		Specifically, type "0" indicates a metadata repository, and type "1"
+		indicates an artifact repository.
+		<p><i>Example:</i></p>
+		<pre>instructions.configure=org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:0,name:BIRT 2.5,enabled:true); \
+  org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:1,name:BIRT 2.5,enabled:true);
+</pre></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">removeRepository
+		</td>
+		<td>location, type</td>
+		<td>Removes the repository at <i>location</i> of type <i>type</i>
+		from the list of known
+		<p>repositories. The value of the <i>location</i> parameter must
+		be a well-formed URI. The <i>type</i> parameter value must be the
+		value of one of the IRepository.TYPE_* constants, Specifically, type
+		"0" indicates a metadata repository, and type "1" indicates an
+		artifact repository.</p>
+		</td>
+	</tr>
+</table>
+<h2>Action Format</h2>
+<p>The Touchpoint Data Element has a Map that describes the actions
+to execute in the various p2 engine phases (e.g. "install", "uninstall",
+"configure", "unconfigure", "collect" and "checktrust"). The key of the
+Map entry is the name of a phase (i.e. when the actions should be
+executed), and the value is a <i>statement-sequence</i>:</p>
+<pre>  statement-sequence&nbsp;:
+      | statement ';'
+      | statement-sequence statement
+     &nbsp;;
+</pre>
+<p>Where a statement is of the format:</p>
+<pre>  statement&nbsp;:
+      | actionName '(' parameters ')'
+     &nbsp;;
+</pre>
+<pre>  parameters&nbsp;:
+      | // empty
+      | parameter
+      | parameters ',' parameter
+     &nbsp;;
+</pre>
+<pre>   parameter&nbsp;: 
+      | paramName ':' paramValue
+     &nbsp;;
+ 
+ actionName, paramName, paramValue&nbsp;:
+      | String 
+     &nbsp;;
+</pre>
+<p>In the p2 engine, the Phase will lookup the "actionName" using
+it's own phase specific actions (e.g. "collect") and also those made
+available by the associated touchpoint (e.g. "mkdir" in the native
+touchpoint, and "installBundle" in the Eclipse touchpoint) .</p>
+<p>As an example - an "install" instruction for a bundle might
+consist of the following statement:</p>
+<pre>  installBundle(bundle:${artifact});
+</pre>
+<ul>
+	<li><i>installBundle</i> is the action name</li>
+	<li><i>bundle</i> is the parameter name</li>
+	<li><i>${artifact}</i> is the parameter value. The value
+	${artifact} signifies the use of a pre-defined variable named
+	"artifact".</li>
+</ul>
+<h2>Built-in Action Variables</h2>
+<p>What follows is a catalog of the variables made available by the
+phases and touchpoints. Many of these are mostly useful to the
+implementor of new actions and touchpoint types.</p>
+<h3>Variables Available in all phases</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">#nnnn</td>
+		<td>the unicode value of a character.
+		<p><i>Note: This is especially important for the six
+		characters that require escaping.</i></p>
+		<ol>
+			<li>$ = ${#36}</li>
+			<li>, = ${#44}</li>
+			<li>&nbsp;: = ${#58}</li>
+			<li>&nbsp;; = ${#59}</li>
+			<li>{ = ${#123}</li>
+			<li>} = ${#125}</li>
+		</ol>
+		</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">profile</td>
+		<td>the profile being modified.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">phaseId</td>
+		<td>the name of the phase e.g. collect, install, etc.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">operand</td>
+		<td>the actions operand (e.g. IU pair)</td>
+	</tr>
+</table>
+<h3>Variables Available in all installable unit phases</h3>
+<p><i>e.g. collect, unconfigure, uninstall, install, configure,
+...</i></p>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">installFolder
+		</td>
+		<td>the root folder for this profile.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">touchpoint
+		</td>
+		<td>the touchpoint associated with the IUs in the operand if
+		applicable</td>
+	</tr>
+</table>
+<h3>Collect Phase Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">artifactRequests
+		</td>
+		<td>A list that a touchpoints "collect" action will use to add
+		mirroring requests to.</td>
+	</tr>
+</table>
+<h3>Unconfigure Phase Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">iu</td>
+		<td>The IU being unconfigured. This is set from the first IU of
+		the operand pair.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">artifact</td>
+		<td>The artifact id of the first artifact listed in the IU.</td>
+	</tr>
+</table>
+<h3>Uninstall Phase Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">iu</td>
+		<td>The IU being uninstalled. This is set from the first IU of
+		the operand pair.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">artifact</td>
+		<td>The artifact id of the first artifact listed in the IU.</td>
+	</tr>
+</table>
+<h3>Install Phase Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">iu</td>
+		<td>The IU being installed. This is set from the second IU of the
+		operand pair.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">artifact</td>
+		<td>The artifact id of the first artifact listed in the IU.</td>
+	</tr>
+</table>
+<h3>Configure Phase Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">iu</td>
+		<td>The IU being configured. This is set from the second IU of
+		the operand pair.</td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">artifact</td>
+		<td>The artifact id of the first artifact listed in the IU.</td>
+	</tr>
+</table>
+<h3>Eclipse Touchpoint Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">manipulator
+		</td>
+		<td>an instance of the Manipulator class used to alter the
+		configuration of an Eclipse install.</td>
+	</tr>
+</table>
+<h3>Native Touchpoint Variables</h3>
+<table border="1px solid #CCC" cellpadding="5px"
+	style="border: 1px solid #CCC; border-collapse: collapse;">
+
+	<tr valign="top" style="background-color: #eeeeee; color: #444444;">
+		<td><b>variable</b></td>
+		<td><b>description</b></td>
+	</tr>
+	<tr valign="top">
+		<td style="font-weight: bold;">backup</td>
+		<td>the BackupStore used to save transaction state during native
+		file operations.</td>
+	</tr>
+</table>
+<h2>Additional Notes on Backup for File Operation Actions</h2>
+<p>The Native Touchpoint stores a temporary backup of files that are
+deleted or overwritten during the installation process. If an
+installation succeeds the backup is simply removed. If however the
+installation fails, the files in backup are restored to their original
+location. If the restore works as expected, the backup copy is also
+removed. Two "disaster" cases remain:</p>
+<ul>
+	<li>It was not possible to restore files (probably because of
+	faulty hardware, running out of disk, or manual tampering with files
+	during the installation).</li>
+	<li>The system crashed during the install</li>
+</ul>
+<p>The backup is placed in a directory under the directory
+referenced by the system property "java.io.tmpdir". The backup directory
+has a name with the prefix ".p2bu" which is followed by a unique key per
+running backup instance. Under the ".p2bu..." directory files are stored
+in a hierarchy that reflects their original location.</p>
+<p>In both of the disaster cases, the backup store under
+java.io.tempdir will contain copies of all files that were not
+automatically restored. If a restore is wanted, this can be performed
+manually by copying the content back to their original position (which
+is evident from the structure under ".p2bu"). This can be made with
+tools like zip (simply zip everything relative to .p2bu, and then unzip
+it from the real file system root).</p>
+<p>In case something goes wrong during restore of a backup, the
+event is logged with details of what needs to be manually restored. This
+is best effort support so in the case of a system crash file loss is possible.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_api_overview.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_api_overview.htm
new file mode 100644
index 0000000..31644b8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_api_overview.htm
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+  <meta name="copyright"
+ content="Copyright (c) Sonatype Inc and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=ISO-8859-1">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <link REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+  <title>Overview of the p2 API</title>
+</head>
+<body>
+<H1>API overview</H1>
+<p>
+This section provides an overview of the p2 API and introduces some of the key concepts that should be understood to work with
+the p2 API.  The API can be generally thought of as three layers of API.  The top most layer requires understanding of very
+few concepts, and each successive layer provides more flexibility, but is a bit more complex.
+</p> 
+<ul> 
+<li>The User Interface API </li>
+<li>The Operations API </li>
+<li>The Core API</li>
+</ul>
+<p>
+This section provides a description of each of these categories and introduces some of the key concepts.
+</p>
+<h3>The User Interface API</h3>
+<p>The UI provides wizards for installing, updating, and uninstalling software in a system.  It also
+provides dialog pages for describing the installation and manipulating the repositories that are used
+to access software.  Most of these building blocks are private ("black box") implementations, not intended
+to be extended by clients.  A small package, 
+<a href="../reference/api/org/eclipse/equinox/p2/ui/package-summary.html">org.eclipse.equinox.p2.ui</a>,
+defines the API, which provides hooks for customizing the behaviour of the UI components, and class definitions that
+can be used in a plug-in's UI contributions.  </p>
+<p>Applications that simply want to provide their users a way to update or install additional software into the system
+need only include the relevant UI bundles.  No deep knowledge of the p2 API is required.  
+<a href="org.eclipse.platform.doc.isv/guide/p2_ui.htm">Customizing the p2 UI</a> 
+describes this level of working with the p2 UI.  The The <a href="../reference/api/org/eclipse/equinox/p2/ui/Policy.html">Policy</a> class defines 
+aspects of the UI that can be customized.
+</p>
+<h3>Operations API</h3>
+<p>The <a href="../reference/api/org/eclipse/equinox/p2/operations/package-summary.html">operations API</a> provides high-level API for 
+installing, updating, and uninstalling software in a headless system.  The operations API is defined with "progressive disclosure" in mind.
+That is, the simplest and most common operations require little knowledge of underlying concepts.  
+</p>
+<p>Clients work with the operation in two passes.  The operation must first be <b>resolved</b>, which means that the requirements
+and dependencies are calculated to determine if the desired operation is compatible with what is already installed in the system.
+If the operation can be resolved, then the actual provisioning work (downloading of artifacts, updating the system) can be performed.
+The two-pass nature of an operation allows the resolution status to be reported to a client to determine whether the operation
+should proceed.  For example, the client can determine if the resolution is acceptable, or examine the detailed plan of what needs
+to be installed in order to continue with the operation.  The resolution and provisioning phases can be performed synchronously or 
+in the background as a job.</p>
+<p>A simple example can help demonstrate the simplicity of operations.
+A common operation in many applications is to simply update the application to get the latest version of everything.  This is
+possible with very little code.  The following snippet shows the sequence for updating everything in the running
+application.
+</p>
+<code>
+&nbsp;&nbsp;&nbsp;// create an operation.  We already have a provisioning agent (to be explained later)<br>
+&nbsp;&nbsp;&nbsp;UpdateOperation op = new UpdateOperation(new ProvisioningSession(agent)); <br>
+&nbsp;&nbsp;&nbsp;// resolve the operation to see if we can update<br>
+&nbsp;&nbsp;&nbsp;IStatus result = op.resolveModal(new NullProgressMonitor()); <br>
+&nbsp;&nbsp;&nbsp;if (result.isOK()) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// get a job that will perform the actual work and schedule it<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op.getProvisioningJob(monitor).schedule(); <br>
+&nbsp;&nbsp;&nbsp;}<br>
+</code>
+<p>If there is a problem resolving an operation, or the client code wants to do something slightly different, then a little more code might be needed.
+For example, an operation can be configured to update an application that is not the running application, or to consult a specific
+list of software repositories for the update.  
+</p>
+<p>Inside the operation, the 
+underlying p2 <a href="../reference/api/org/eclipse/equinox/p2/planner/IPlanner.html">IPlanner</a> is performing the resolution
+phase, and the underlying p2 <a href="../reference/api/org/eclipse/equinox/p2/engine/IEngine.html">IEngine</a> is performing the
+actual install.  However, these subsystems do not need to be understood by a client working with operations.
+</p>
+<p>For more information about operations, consult the javadoc for
+<a href="../reference/api/org/eclipse/equinox/p2/operations/ProfileChangeOperation.html">ProfileChangeOperation</a>. 
+Code snippets for working with operations can be found in the javadoc for
+<a href="../reference/api/org/eclipse/equinox/p2/operations/InstallOperation.html">InstallOperation</a>, 
+<a href="../reference/api/org/eclipse/equinox/p2/operations/UpdateOperation.html">UpdateOperation</a>, and
+<a href="../reference/api/org/eclipse/equinox/p2/operations/UninstallOperation.html">UninstallOperation</a>.
+</p>
+<h3>The Core API</h3>
+<p>The core API contains all the subsystems on which the Operation and UI APIs are built.  Some of these constructs
+feed into the other API layers.  For example, we saw above that an <b>agent</b> was needed in order to build an update
+operation.  Now we'll take a look at these core concepts.</p>
+<h4>The Provisioning Agent</h4>
+<p>
+All access to the p2 API happens through the agent, <a href="../reference/api/org/eclipse/equinox/p2/core/IProvisioningAgent.html">
+IProvisioningAgent</a>. The agent is the starting point of everything.  One way to think about 
+the <a href="../reference/api/org/eclipse/equinox/p2/core/IProvisioningAgent.html">IProvisioningAgent</a> 
+is that it is an "executable" representation of the p2 area (e.g. the p2 folder at the root of an eclipse installation).  
+Among other things, the agent can be used to 
+acquire p2 services for managing repositories, creating provisioning plans and perform installation requests. 
+</p>
+<p>
+The provisioning agent is acquired using the IProvisioningAgentProvider. 
+This is generally done in one place in the client code, with the rest of the code simply accessing
+the agent through some variable or helper code.  The following snippet shows how to acquire the provisioning agent.
+</p>
+<code>
+&nbsp;&nbsp;&nbsp;ServiceReference sr = Activator.sContext.getServiceReference(IProvisioningAgentProvider.SERVICE_NAME);<br>
+&nbsp;&nbsp;&nbsp;IProvisioningAgentProvider agentProvider = null;<br>
+&nbsp;&nbsp;&nbsp;if (sr == null)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br>
+&nbsp;&nbsp;&nbsp;agentProvider = (IProvisioningAgentProvider) Activator.sContext.getService(sr);<br>
+&nbsp;&nbsp;&nbsp;IProvisioningAgent agent = agentProvider.createAgent(new URI("file:/Applications/eclipse36/p2"));<br>
+</code>
+<p>Accessing all p2 services through an agent allows for multiple instances of p2
+to be running in isolation in the same VM.  Note that
+the client creating the agent is responsible for destroying it.
+</p>
+<h4>Metadata</h4>
+<p>
+The <b>Installable Unit</b> (IU) is a chunk of metadata describing something that is installable.  An IU is used
+throughout the API to describe something that is being installed, updated, or removed.  An IU describes something
+that can be installed, including the name, description, license, copyright information, installation 
+processing steps, and the requirements that must be satisfied.  The 
+<a href="../reference/api/org/eclipse/equinox/p2/metadata/IInstallableUnit.html">IInstallableUnit</a> javadoc describes all
+of the things one can do with an IU.  You will notice that you can't change the properties of an IU.  That is because
+an IU is immutable.  Once created, it should never change.
+</p>
+<p>An IU can be obtained either by querying a source of metadata (e.g. a repository) 
+or by creating one programmatically.  
+</p>
+<h4>Queries and Queriables</h4>
+<p>Every source of metadata is usually queryable
+(see <a href="../reference/api/org/eclipse/equinox/p2/query/IQueryable.html">org.eclipse.equinox.p2.query.IQueryable</a>). 
+To discover an IU, you can execute a query 
+(see <a href="../reference/api/org/eclipse/equinox/p2/query/IQuery.html">IQuery</a>) against a metadata source.  The result of
+a query is a collection of all of the IUs that meet the criteria of the query.  </p>
+<p>Queries can be created in multiple ways.
+The simplest way is to create a query using the QueryUtil.  The following snippet creates a query that
+searches for all IUs that have the ID <tt>"org.eclipse.jdt"</tt>:
+</p>
+<code>
+&nbsp;&nbsp;&nbsp;QueryUtil.createIUQuery("org.eclipse.jdt");
+</code>
+<p>
+Depending on the specificity of the query, there may be one or many IUs that satisfy the query.
+For example, you could query for a specific version of a specific IU, or you could use a wildcard to query
+for IUs that match a particular pattern.  <a href="../reference/api/org/eclipse/equinox/p2/query/QueryUtil.html">QueryUtil</a> has
+API for retrieving the most commonly used queries.  Additional queries that are OSGi specific can be found in the package
+<a href="../reference/api/org/eclipse/equinox/p2/touchpoint/eclipse/query/package-summary.html">org.eclipse.equinox.p2.eclipse.touchpoint</a>.
+Finally, should you need to write more complex queries, 
+p2 comes with a query language called <a href="http://wiki.eclipse.org/Query_Language_for_p2">p2 QL</a>
+</p>
+<h4>Repositories and Repository Managers</h4>
+<p>There are two main types of repositories, <b>Metadata Repositories</b> and <b>Artifact Repositories</b>.  Metadata repositories
+hold metadata (Installable Units), while artifact repositories hold "artifacts" (the actual downloadable bytes that make up an install).  
+Repositories can be remote or local.  They can be edited and queried.  The javadoc for
+<a href="../reference/api/org/eclipse/equinox/p2/repository/metadata/IMetadataRepository.html">IMetadataRepository</a> and
+<a href="../reference/api/org/eclipse/equinox/p2/repository/artifact/IArtifactRepository.html">IArtifactRepository</a> describe the
+repository API in more detail.
+</p>
+<p>Repositories are managed (created, loaded, removed, cached, etc...) using a 
+<a href="../reference/api/org/eclipse/equinox/p2/repository/IRepositoryManager.html">Repository Manager</a>.  The repository
+manager can be acquired using the provisioning agent.
+</p>
+<p>The following snippet shows how to acquire the metadata repository manager using the agent, and subsequently load the Helios repository.
+</p>
+<code>
+&nbsp;&nbsp;&nbsp;IMetadataRepositoryManager manager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);<br>
+&nbsp;&nbsp;&nbsp;IMetadataRepository repository = manager.loadRepository(new URI("http://download.eclipse.org/releases/helios"), new NullProgressMonitor());<br>
+</code>
+<h4>Profiles and Profile Registries</h4>
+<p>
+A p2 profile tracks the set of software that composes the executable application. For example,
+your Eclipse Install has a profile that contains all the IUs that that comprise Eclipse.
+When you attempt to install new IUs, p2 modifies your current profile.  If the new
+IUs conflict with your existing profile (or dependencies cannot be resolved), then p2 will report
+an error and the installation will not proceed.  See the <a href="../reference/api/org/eclipse/equinox/p2/engine/IProfile.html">IProfile</a> 
+javadoc for a complete list of the Profile APIs.
+</p>
+<p>The profile is managed by a profile registry.  <a href="../reference/api/org/eclipse/equinox/p2/engine/IProfileRegistry.html">IProfileRegistry</a>
+manages all the profiles for a given p2 agent. It can be acquired through the agent.
+</p>
+<h3>Putting it all together</h3>
+<p>
+The following snippet demonstrates everything that must be done to trigger the installation
+of an IU into the running application.  We use the operations API to perform the install, so we don't
+have to work with the profile, planner, or engine subsystems.  However, we do need to know enough 
+about the core API to obtain an agent, and get some
+IUs from a repository.  The operation manages the rest of the detail.
+</p>
+<br>
+<code>
+&nbsp;&nbsp;&nbsp;//get the agent<br>
+&nbsp;&nbsp;&nbsp;ServiceReference sr = Activator.sContext.getServiceReference(IProvisioningAgentProvider.SERVICE_NAME);<br>
+&nbsp;&nbsp;&nbsp;IProvisioningAgentProvider agentProvider = null;<br>
+&nbsp;&nbsp;&nbsp;if (sr == null)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br>
+&nbsp;&nbsp;&nbsp;agentProvider = (IProvisioningAgentProvider) Activator.sContext.getService(sr);<br>
+&nbsp;&nbsp;&nbsp;IProvisioningAgent agent = agentProvider.createAgent(new URI("file:/Applications/eclipse36/p2"));<br>
+<br>
+&nbsp;&nbsp;&nbsp;//get the repository managers and define our repositories<br>
+&nbsp;&nbsp;&nbsp;IMetadataRepositoryManager manager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);<br>
+&nbsp;&nbsp;&nbsp;IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);<br>
+&nbsp;&nbsp;&nbsp;manager.addRepository(new URI("file:/Users/Pascal/tmp/demo/"));<br>
+&nbsp;&nbsp;&nbsp;artifactManager.addRepository(new URI("file:/Users/Pascal/tmp/demo/"));<br>
+<br>
+&nbsp;&nbsp;&nbsp;//Load and query the metadata<br>
+&nbsp;&nbsp;&nbsp;IMetadataRepository metadataRepo = manager.loadRepository(new URI("file:/Users/Pascal/tmp/demo/"), new NullProgressMonitor());<br>
+&nbsp;&nbsp;&nbsp;Collection toInstall = metadataRepo.query(QueryUtil.createIUQuery("org.eclipse.equinox.p2.demo.feature.group"), new NullProgressMonitor()).toUnmodifiableSet();<br>
+<br>
+&nbsp;&nbsp;&nbsp;//Creating an operation<br>
+&nbsp;&nbsp;&nbsp;InstallOperation installOperation = new InstallOperation(new ProvisioningSession(agent), toInstall);<br>
+&nbsp;&nbsp;&nbsp;if (installOperation.resolveModal(new NullProgressMonitor()).isOK()) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Job job = installOperation.getProvisioningJob(new NullProgressMonitor());<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;job.addJobChangeListener(new JobChangeAdapter() {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void done(IJobChangeEvent event) {agent.close()}});<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;job.schedule();<br>
+&nbsp;&nbsp;&nbsp;}<br>
+</code>
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_customizing_metadata.html b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_customizing_metadata.html
index b64e2a1..f530bbe 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_customizing_metadata.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_customizing_metadata.html
@@ -12,14 +12,14 @@
 <body>
 <h1>Customizing p2 metadata</h1>
 <p>
-<i> Disclaimer: Authoring p2 metadata is new in 3.5 and something we expect to support with better tooling in a future release.
+<i> Disclaimer: Authoring p2 metadata is something we expect to support with better tooling in a future release.
 The support for customizing metadata with a p2.inf file is provisional although we expect to maintain a basic level
 of compatibility for common tasks.</i>
 </p>
 <p>
 On occasion the metadata that is automatically generated by p2 for bundles, features and products 
 does not provide everything required to successfully provision an installable unit.
-For those cases in the 3.5 release p2 supports the use of an advice file (a p2.inf file) that can be used to augment the metadata for an installable unit.
+For those cases p2 supports the use of an advice file (a p2.inf file) that can be used to augment the metadata for an installable unit.
 In this release the p2.inf file will allow an author to customize capabilities, properties, and instructions. 
 In addition support is provided for defining additional installable units that are related to the container IU.
 </p> 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_director.html b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_director.html
index 97cb0e5..cd68bb8 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_director.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_director.html
@@ -3,7 +3,7 @@
 <head>
 
 <meta name="copyright"
-	content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+	content="Copyright (c) IBM Corporation and others 2008, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
 
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <link REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -51,7 +51,7 @@ into the SDK.</p>
 <code>
   &lt;targetProductFolder&gt;/eclipsec.exe 
    -application org.eclipse.equinox.p2.director 
-   -repository http://download.eclipse.org/releases/galileo/
+   -repository http://download.eclipse.org/releases/helios/
    -installIU org.eclipse.cdt.feature.group/&lt;version&gt;
 </code>
 </pre>
@@ -80,7 +80,7 @@ the builder, you want to install CDT into an existing SDK located into
 <code>
    d:\builder\eclipsec.exe
    -application org.eclipse.equinox.p2.director
-   -repository http://download.eclipse.org/releases/galileo/
+   -repository http://download.eclipse.org/releases/helios/
    -installIU org.eclipse.cdt.feature.group
    -destination d:/eclipse/
    -profile SDKProfile</code>
@@ -104,7 +104,7 @@ a director application located in "d:\builder".</p>
 <code>
    d:\builder\eclipsec.exe
    -application org.eclipse.equinox.p2.director
-   -repository http://download.eclipse.org/eclipse/updates/3.5
+   -repository http://download.eclipse.org/eclipse/updates/3.6
    -installIU org.eclipse.sdk.ide
    -destination d:/eclipse/
    -profile SDKProfile
@@ -161,8 +161,7 @@ is created. This will be used to filter which architecture specific
 installable units need to be installed.</li>
 <li><b>-roaming</b>: indicates that the product resulting
 from the installation can be moved. This property only makes sense when
-the destination, bundle pool are in the same location and
-eclipse.p2.data.area is set to destination/p2. This value is only taken
+the destination and bundle pool are in the same location. This value is only taken
 into account when the profile is created.</li>
 <li><b>-shared</b>: use a shared location for the install. The path defaults to ${user.home}/.p2.</li>
 <li><b>-verifyOnly</b>: only verify that the actions can be performed. Don't actually install or remove anything.</li>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publisher.html b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publisher.html
index 03ea110..53b1dc1 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publisher.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publisher.html
@@ -54,7 +54,7 @@ The publisher can be used in two ways:
 
 <h2><a name="headless_applications">Command Line Applications</a></h2>
 <p>
-Since Eclipse 3.5, p2 ships with four command line publisher applications that plug-in developers can run. The applications are contained
+p2 ships with four command line publisher applications that plug-in developers can run. The applications are contained
 in <code>org.eclipse.equinox.p2.publisher</code> and <code>org.eclipse.equinox.p2.updatesite</code>.  These bundles are
 part of the Eclipse SDK. The four applications are:
 </p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publishingtasks.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publishingtasks.htm
index 65f7533..f18d5e4 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publishingtasks.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_publishingtasks.htm
@@ -10,7 +10,7 @@
 </head>
 <body>
 <h1>Ant tasks for publishing p2 metadata</h1>
-<p>Since Eclipse 3.5, p2 ships with two publisher ant tasks. The ant tasks are contained
+<p>p2 ships with two publisher ant tasks. The ant tasks are contained
 in <code>org.eclipse.equinox.p2.publisher</code>.  This bundles is
 part of the Eclipse SDK.</p>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm
index 7f72937..82de8e2 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm
@@ -15,7 +15,7 @@
 	<tr><td><p>Several p2 tasks accept "source" repositories.  Source repositories can be specified in several different ways:</p>
 	<ul>
 	<li>A <b><tt>source</tt></b> attribute directly on the ant task.  The value is a URL to a location that contains both a metadata and artifact repository.  For example:
-	<div align="center"><tt>&lt;p2.mirror source="http://download.eclipse.org/releases/galileo" .... /&gt;</tt></div>
+	<div align="center"><tt>&lt;p2.mirror source="http://download.eclipse.org/releases/helios" .... /&gt;</tt></div>
 	</li>
 	<li>A <b><tt>&lt;source&gt;</tt></b> element nested in the ant task.  This element is an ant fileset, with additional <i>location</i> and <i>kind</i> attributes.
 	<ul>
@@ -25,12 +25,12 @@
 	If no <i>location</i> attribute is set, all directories matched by the fileset are added as repositories and all *.zip files are treated as zipped repositories 
 	(accessed using a jar: URL). For example:
 <pre>&lt;source kind="metatata" dir="/build/input" includes="*.zip" /&gt;
-&lt;source location="http://download.eclipse.org/releases/galileo" /&gt;
+&lt;source location="http://download.eclipse.org/releases/helios" /&gt;
 </pre>
 	</li>
 	<li>A <b><tt>&lt;source&gt;</tt></b> element containing a list of repositories.  Each nested element is again a fileset with an additional <i>kind</i> attribute.  For example:
 <pre>&lt;source&gt;
-   &lt;repository location="http://download.eclipse.org/releases/galileo" /&gt;
+   &lt;repository location="http://download.eclipse.org/releases/helios" /&gt;
    &lt;repository kind="metadata" file="/build/repos/cdt-master-6.0.0-I200903161435.zip" /&gt;
    &lt;repository kind="artifact" dir="/build/repos" includes="*repo" /&gt;
 &lt;/source&gt;
@@ -69,7 +69,7 @@
 <h2>Ant Tasks</h2>
 <br>
 <table cellspacing="1" cellpadding="2" width="95%" align="center">
-	<tr><td><b><a name="p2_mirror"><tt>p2.mirror</tt></a></b></td></tr>
+	<tr><td><b><a name="p2_mirror"><h3>p2.mirror</h3></a></b></td></tr>
 	<tr><td><p>This task mirrors artifacts and metadata from the given source repositories to the destination.  
 	  This task will traverse the source repository and recursively include all IUs that match the requirements of IUs being mirrored (this is called <em>slicing</em> the repository).</p>
 	  </td>
@@ -77,7 +77,7 @@
 	<tr><td><p>This task supports the following attributes and elements:</p>
 		<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
 			<tr><td><tt>source</tt></td><td>Source repositories, as outlined <a href="#source_repositories">above</a></td></tr>
-			<tr><td><tt>desination</tt></td><td>Destination repositories, as outlined <a href="#destination_repositories">above</a></td></tr>
+			<tr><td><tt>destination</tt></td><td>Destination repositories, as outlined <a href="#destination_repositories">above</a></td></tr>
 			<tr><td><tt>&lt;iu&gt;</tt></td><td>Nested IU elements, as outlined <a href="#installable_units">above</a>.  
 			  The installable units to mirror.  If none are specified, all IUs contained in the source repositories are mirrored.</td></tr>
 			<tr><td><tt>log</tt></td><td>A file to use for logging the results.</td></tr>
@@ -93,6 +93,33 @@
 			<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
 				<tr><td><tt>&lt;baseline&gt;</tt></td><td>A nested element specifying the baseline repository.  
 				  See <a href="#destination_repositories"><i>destination repositories</i></a> above.</td></tr>
+				<tr><td><tt>&lt;exclude&gt;</tt></td><td>A nested element specifying artifacts to exclude from the comparison.
+				Contains nested &lt;artifact&gt; elements which support the following attributes:
+				<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
+					<tr><td><tt>id</tt></td><td>The artifact id.</td></tr>
+					<tr><td><tt>classifier</tt></td><td>The artifact classifier</td></tr>
+					<tr><td><tt>version</tt></td><td>The version to exclude.</td></tr>
+					<tr><td><tt>range;</tt></td><td>A range of versions to exclude</td></tr>
+					<tr><td><tt>&lt;property&gt;</tt></td><td>Nested &lt;property&gt; elements specifying properties that the artifact descriptor must have.</td></tr>
+				</table>
+				<br>
+Example: Exclude all pack.gz artifacts:
+<pre>
+	   &lt;exclude&gt;
+	      &lt;artifact&gt;
+	         &lt;property name="format" value="packed" /&gt;
+	      &lt;/artifact&gt;
+	   &lt;/exclude&gt;
+</pre>
+Exclude the specified documentation bundles:
+<pre>
+	   &lt;exclude&gt;
+	      &lt;artifact id="org.eclispe.jdt.doc.isv" classifier="osgi.bundle" /&gt;
+	      &lt;artifact id="org.eclispe.jdt.doc.usr" classifier="osgi.bundle" /&gt;
+	      &lt;artifact id="org.eclispe.pde.doc.isv" classifier="osgi.bundle" /&gt;
+	   &lt;/exclude&gt;
+</pre>
+				</td></tr>
 				<tr><td><tt>comparator</tt></td><td>Id of a comparator to use if the baseline artifacts should be compared 
 				  against the source artifacts.  These are extensions to the <i>org.eclipse.equinox.p2.artifact.repository.artifactComparators</i> extension point.  
 				  Comparators provided by p2 are:
@@ -141,7 +168,7 @@ Examples:
 </pre>
 <p>Mirror the org.eclipse.equinox.p2.user.ui feature and other required bundles locally (perhaps in preparation for a build).</p>
 <pre>
-	&lt;p2.mirror source="http://download.eclipse.org/releases/galileo" destination="${p2Repo}"&gt;
+	&lt;p2.mirror source="http://download.eclipse.org/releases/helios" destination="${p2Repo}"&gt;
 	   &lt;slicingOptions followStrict="true" /&gt;
 	   &lt;iu id="org.eclipse.equinox.p2.user.ui.feature.group" /&gt;
 	   &lt;iu id="org.eclipse.ecf"/&gt;
@@ -170,7 +197,7 @@ Examples:
 </pre>
 
 <table cellspacing="1" cellpadding="2" width="95%" align="center">
-	<tr><td><b><a name="p2_repo2runnable"><tt>p2.repo2runnable</tt></a></b></td></tr>
+	<tr><td><b><a name="p2_repo2runnable"><h3>p2.repo2runnable</h3></a></b></td></tr>
 	<tr><td><p>Transform IUs into their installed form and add them to the destination repository.  This allows compiling against folder 
 	  shaped bundles that contain nested jars.  This task is the main mechanism by which headless PDE/Builds can reuse metadata.</p>
 	</td></tr>
@@ -186,7 +213,7 @@ Examples:
 </table>
 <br>
 <table cellspacing="1" cellpadding="2" width="95%" align="center">
-	<tr><td><b><tt>p2.process.artifacts</tt></b></td></tr>
+	<tr><td><b><h3>p2.process.artifacts</h3></b></td></tr>
 	<tr><td><p>Process a local, file-based artifact repository.  This task will (optionally) sign and pack artifacts, 
 	  as well as update the MD5 sums in the repository to match the actual artifacts on disk (since signing/conditioning will change the MD5 sums).
 	This task will use the jarProcessor, which in turn uses ant's SignJar task which requires the <i>jarsigner</i> command line tool.</p></td></tr>
@@ -196,7 +223,6 @@ Examples:
 			<tr><td><tt>pack</tt></td><td>Whether or not to create pack.gz artifacts.  (Default is false)</td></tr>
 			<tr><td><tt>normalize</tt></td><td>Whether or not to do pack200(pack + unpack) conditioning on the artifacts.  
 			  (Default is false, however sign + pack will imply a normalize.)</td></tr>
-			<tr><td><tt>repositoryPath</tt></td><td>A URL to an artifact repository to process.  This must be a local, file-based repository.</td></tr>
 			<tr><td><tt>&lt;sign&gt;</tt></td><td>A nested element to enable signing.  This element supports the following attributes:
 			<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
 				<tr><td><tt>alias</tt></td><td>The alias to sign with</td></tr>
@@ -217,7 +243,7 @@ Examples:
 </table>		
 <br>
 <table cellspacing="1" cellpadding="2" width="95%" align="center">
-	<tr><td><b><tt>p2.remove.iu</tt></b></td></tr>
+	<tr><td><b><h3>p2.remove.iu</h3></b></td></tr>
 	<tr><td><p>Remove Installable Units from the given metadata and artifact repositories.  The provided repositories must be modifiable.</p></td></tr>
 	<tr><td><p>This task supports the following attributes and elements:</p>
 		<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
@@ -230,7 +256,7 @@ Examples:
 </table>		
 <br>
 <table cellspacing="1" cellpadding="2" width="95%" align="center">
-	<tr><td><b><tt>p2.composite.repository</tt></b></td></tr>
+	<tr><td><b><h3>p2.composite.repository</h3></b></td></tr>
 	<tr><td><p>Create a composite repository</p></td></tr>
 	<tr><td><p>This task supports the following attributes and elements:</p>
 		<table border="5" cellspacing="0" cellpadding="1" width="95%" align="center">
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_startup.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_startup.htm
new file mode 100644
index 0000000..e627d0c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_startup.htm
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>Forced update on startup</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>
+Forced update on startup</H2>
+<p>
+Sometimes the simplest UI is no UI.  In a highly-managed product installation, it may be desirable to 
+automatically update the application each time it is started, with no intervention from the user.  
+In this case, the update is not truly "headless," since a progress indicator is shown while searching for updates.  
+The user may cancel the update, but otherwise cannot intervene with the update.  If no updates are found, the user is notified.
+</p>
+<p><img border="0" src="images/p2forcedupdate.png" alt="Progress Indicator showing update search" >
+</p>
+<p>
+In this configuration, the p2 UI class libraries bundle (<b>org.eclipse.equinox.p2.ui</b>) is not needed at all.  
+Only the p2 core code is used to achieve the update. An example RCP application that uses this approach can be
+found <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.prestartupdate/?root=RT_Project">here</a>.  
+</p>
+<p>In this kind of scenario, you need to ensure that all of the p2 services are available at startup time, when the update check is
+to be performed.  The example bundle itself must be started.  Less obvious is that the <b>org.eclipse.equinox.ds</b> bundle must be 
+started so that all of the declared services will be found.  This can be accomplished in a number of ways, depending on how you are 
+running the example:
+<ul>
+<li>set the bundle start level in the Configuration tab of the product editor (the .product file for your build)</li>
+<li>force a start of the bundle in the config.ini of the already built app</li>
+<li>set the bundle start level in the launch configuration if you are simply launching the example in Eclipse</li>
+</ul>
+</p>
+<p>The update check is performed in the <b>postWindowOpen()</b> method of the example's <b>ApplicationWorkbenchWindowAdvisor</b> 
+class.  This method sets up the progress monitoring, invokes the update search, and handles any errors or notifications.  It uses a 
+preference to remember if it is restarting after an update, so that the update search is not repeated when the application
+is restarted after updating.
+</p>
+<p>The update check method itself is rather simple, because it does not attempt to involve the user in making any choices about the updates.
+It uses the <b><a href="../reference/api/org/eclipse/equinox/p2/operations/package-summary.html">p2 Operations API</a></b> (new in Eclipse 3.6) to 
+search for updates and perform the update.
+</p>
+<pre>
+public class P2Util {
+	// XXX Check for updates to this application and return a status.
+	static IStatus checkForUpdates(IProvisioningAgent agent, IProgressMonitor monitor) throws OperationCanceledException {
+		ProvisioningSession session = new ProvisioningSession(agent);
+		// the default update operation looks for updates to the currently
+		// running profile, using the default profile root marker. To change
+		// which installable units are being updated, use the more detailed
+		// constructors.
+		UpdateOperation operation = new UpdateOperation(session);
+		SubMonitor sub = SubMonitor.convert(monitor,
+				"Checking for application updates...", 200);
+		IStatus status = operation.resolveModal(sub.newChild(100));
+		if (status.getCode() == UpdateOperation.STATUS_NOTHING_TO_UPDATE) {
+			return status;
+		}
+		if (status.getSeverity() == IStatus.CANCEL)
+			throw new OperationCanceledException();
+		
+		if (status.getSeverity() != IStatus.ERROR) {
+			// More complex status handling might include showing the user what updates
+			// are available if there are multiples, differentiating patches vs. updates, etc.
+			// In this example, we simply update as suggested by the operation.
+			ProvisioningJob job = operation.getProvisioningJob(null);
+			status = job.runModal(sub.newChild(100));
+			if (status.getSeverity() == IStatus.CANCEL)
+				throw new OperationCanceledException();
+		}
+		return status;
+	}
+}
+</pre>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_ui.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_ui.htm
new file mode 100644
index 0000000..df84a9b
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_ui.htm
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>Customizing the p2 UI</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>
+Customizing the p2 UI</H2>
+<p>
+There are several different levels of integration with the p2 UI, depending on what kind of support you want to surface 
+to your users.
+<ul>
+<li>If your goal is to <a href="p2_uireuse.htm">reuse the Eclipse SDK UI</a> inside your own product, you can
+include the <b>org.eclipse.equinox.p2.user.ui</b> feature in your product.  If you want only a subset of the functionality, such as providing
+update support but not installation support, you can use a subset of the bundles in that feature and
+use the Eclipse SDK UI contributions as a model for your
+own contributions.</li>
+<li>If your goal is to <a href="p2_uipolicy.htm">customize the way information is presented</a>, you can configure a p2 UI <b>Policy</b> that
+changes aspects of the UI.</li>
+<li>If you want to <a href="p2_startup.htm">force update of your application</a>, you can use the p2 <b>Operations</b> API to perform a customized
+search for updates on startup.</li>
+</ul>
+</p>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uipolicy.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uipolicy.htm
new file mode 100644
index 0000000..695703c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uipolicy.htm
@@ -0,0 +1,260 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>Configuring the UI Policy</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>
+Configuring the UI Policy</H2>
+<p>
+Some aspects of what the p2 UI presents and how it behaves are configurable using
+the <b><a href="../reference/api/org/eclipse/equinox/p2/ui/Policy.html">Policy</a></b> class.
+You can configure an instance of this class (or subclass) in order to customize the UI
+for your application.  This policy is registered as an OSGi service, and retrieved by the UI
+in order to make decisions about presentation.  
+</p>
+<p>Depending on the application requirements, 
+the policy instance may be configured in code, configured using internal preferences,
+or even by exposing some of the decisions to a user in a preference page.  The policy 
+allows you to control things such as
+<ul>
+<li>whether repositories (sites) are visible to the user, and whether the user 
+is permitted to manipulate (add, enable, disable, remove) the sites that are used for install and update</li>
+<li>what software (installable units) is visible to the user when browsing software sites</li>
+<li>what software (installable units) is shown as the roots of the 'Installed Software' page</li>
+<li>whether restart is required after updating an application</li>
+</ul>
+</p>
+<h3>Example: Installing from the Cloud</h3>
+<p>
+This kind of customization is best described by example.  A common scenario in RCP applications is that the user should be able
+to update the application, or install additional software, from a controlled set of update sites.  This is common in managed installations, 
+where a systems administrator is maintaining an internal update site.  From the user point of view, updates come from one "cloud" rather 
+than individual software sites, and there is no visibility of software sites.
+</p>
+<p>In this example, we want the UI to behave in the following ways:</p>
+<ul>
+<li>we do not want to expose any site management function or site preferences</li>
+<li>we do not want to expose the standard SDK update preferences, but instead use our own values</li>
+<li>we want to contribute the standard installation pages (allowing access to uninstall, update, and revert) </li> 
+<li>we want to allow automatic updating using the standard preference page</li>
+<li>we group the application preferences and update menu items in a <b>Tools</b> menu</li>
+</ul>
+<p>A sample RCP Mail application which does this kind of customization can be found
+<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.cloud/?root=RT_Project">in CVS</a>.
+The most important aspect of this example is that we need to configure the p2 UI <b><a href="../reference/api/org/eclipse/equinox/p2/ui/Policy.html">Policy</a></b>
+according to our requirements and register it.  
+</p>
+<p>We will register our policy in the startup code of the existing RCP Mail bundle 
+class.
+</p>
+
+<pre>
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		// XXX register the p2 UI policy
+		registerP2Policy(context);
+		getPreferenceStore().addPropertyChangeListener(getPreferenceListener());
+	}
+</pre>
+<p>
+The registration method creates a default policy instance, updates it according to some preference values, and registers it.
+</p>
+<pre>
+	private void registerP2Policy(BundleContext context) {
+		policy = new CloudPolicy();
+		policy.updateForPreferences();
+		policyRegistration = context.registerService(Policy.class.getName(), policy, null);
+	}
+</pre>
+<p>
+In this example, we wish to initialize a policy instance that prevents the user from manipulating the repositories.  
+There are several ways to go about this.  The most direct way is that the policy initializes its desired values on construction.
+</p>
+<pre>
+public class CloudPolicy extends Policy {
+	public CloudPolicy() {
+		// XXX User has no visibility for repos
+		setRepositoriesVisible(false);
+	}
+}
+</pre>
+<p>
+A more general approach is for the policy to derive its values from preference settings.  These preferences are not exposed to the end 
+user, but are used to control how the policy initializes itself.  This is the approach taken in the cloud example.  
+The advantage of such an approach is that the policy can be configured by altering the preference values in the 
+<b>plugin_customization.ini</b> file for the application.
+</p>
+<p>
+The policy code simply reads preference settings and adjusts the policy accordingly.
+</p>
+<pre>
+	public void updateForPreferences() {
+		IPreferenceStore prefs = Activator.getDefault().getPreferenceStore();
+		setRepositoriesVisible(prefs
+				.getBoolean(PreferenceConstants.REPOSITORIES_VISIBLE));
+		setRestartPolicy(prefs.getInt(PreferenceConstants.RESTART_POLICY));
+		setShowLatestVersionsOnly(prefs
+				.getBoolean(PreferenceConstants.SHOW_LATEST_VERSION_ONLY));
+		setGroupByCategory(prefs
+				.getBoolean(PreferenceConstants.AVAILABLE_GROUP_BY_CATEGORY));
+		setShowDrilldownRequirements(prefs
+				.getBoolean(PreferenceConstants.SHOW_DRILLDOWN_REQUIREMENTS));
+		if (prefs.getBoolean(PreferenceConstants.AVAILABLE_SHOW_ALL_BUNDLES))
+			setVisibleAvailableIUQuery(QueryUtil.ALL_UNITS);
+		else
+			setVisibleAvailableIUQuery(QueryUtil.createIUGroupQuery());
+		if (prefs.getBoolean(PreferenceConstants.INSTALLED_SHOW_ALL_BUNDLES))
+			setVisibleAvailableIUQuery(QueryUtil.ALL_UNITS);
+		else
+			setVisibleAvailableIUQuery(new UserVisibleRootQuery());
+
+	}
+</pre>
+<p>
+Now, the <b>plugin_customization.ini</b> file can be edited according to the desired policy.  
+A sample file that explains all of the configurable aspects of the policy is included in the example.
+It looks something like this.
+</p>
+<pre>
+# we can configure the update UI by using application preferences to initialize the default UI policy
+
+# should user be able to see and manipulate repositories in the install wizard
+org.eclipse.equinox.p2.examples.rcp.cloud/repositoriesVisible=false
+
+# force restart after a provisioning operation (see possible values in org.eclipse.equinox.p2.ui.Policy.restartPolicy())
+org.eclipse.equinox.p2.examples.rcp.cloud/restartPolicy=1
+
+# show only latest versions when browsing for updates
+org.eclipse.equinox.p2.examples.rcp.cloud/showLatestVersionOnly=true
+
+# software should be grouped by category by default
+org.eclipse.equinox.p2.examples.rcp.cloud/groupByCategory=true
+
+# show only groups (features) in the available list, not every bundle
+org.eclipse.equinox.p2.examples.rcp.cloud/showAllBundlesAvailable=false
+
+# show only the install roots in the installed software list
+org.eclipse.equinox.p2.examples.rcp.cloud/showAllBundlesInstalled=false
+
+# do not drilldown into requirements in the wizards, just show the high level things
+org.eclipse.equinox.p2.examples.rcp.cloud/showDrilldownRequirements=false
+
+# automatic update options are defined in org.eclipse.equinox.p2.sdk.scheduler.PreferenceConstants
+
+# check for updates on startup
+org.eclipse.equinox.p2.ui.sdk.scheduler/enabled=true
+org.eclipse.equinox.p2.ui.sdk.scheduler/schedule=on-startup
+
+# remind the user every 4 hours
+org.eclipse.equinox.p2.ui.sdk.scheduler/remindOnSchedule=true
+# see AutomaticUpdatesPopup, values can be "30 minutes", "Hour", "4 Hours"
+org.eclipse.equinox.p2.ui.sdk.scheduler/remindElapsedTime=4 Hours
+
+# download updates before notifying the user
+org.eclipse.equinox.p2.ui.sdk.scheduler/download=true
+</pre>
+<p>The rest of the UI code in the cloud example is based on code from <b>org.eclipse.equinox.p2.ui.sdk</b>.
+We copy the command handlers for install and update, and choose not to use any of the preference pages.  
+The <b>plugin.xml</b> contributions for the standard installation pages are also included.
+The page implementations are contained in the p2 UI bundle, so we only need to define the names of the pages and 
+point to the existing implementations.
+</p>
+<p>The end result is an application whose install and update UI looks familiar.  The most significant change is that the 
+<b>Install New Software...</b> wizard no longer provides any control over which sites are shown.  
+Only the content from sites preconfigured in the product (using the <b>p2.inf</b> file in our example) are shown.
+</p>
+<p><img border="0" src="images/p2cloudinstall.png" alt="Example Install Wizard" >
+</p>
+<h3>Example: Customizing the UI Queries</h3>
+<p>The Eclipse SDK and the examples shown so far use the default p2 
+UI Policy queries that control the visibility of software items.
+In practice, this means that only Eclipse features are shown when 
+browsing the various update sites.  However, p2 does not have any 
+specific knowledge of Eclipse features, nor does it require that 
+installation and update operations be based on features.  
+Similarly, only items actually installed by the end user, (or defined as installed items at 
+product-build time), are shown in the <b>Installed Software</b> page.  
+This is done to simplify the view of the installation.
+</p>
+<p>
+Your application can change the visibility of items in the UI by defining customized
+queries for obtaining the available or installed software.  
+In this example, we'll replace the filtered queries normally used by the Eclipse SDK with queries that show everything available.  
+(We'll also show how this can be achieved by altering the preference settings in the Cloud example.  
+The approach taken in this example is shown in order to demonstrate how the queries can be replaced with application-defined queries.  
+For example, the query could be modified to show only IU's with a certain property, or only those whose ids are associated with the 
+application).
+</p>
+<p>A complete example is available in 
+<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.sdkbundlevisibility/?root=RT_Project">CVS</a>.
+When installing new software, every available bundle is shown in the install wizard.  (Note that you must uncheck the 
+<b>Group items by category</b> checkbox to see this list.)
+</p>
+<p><img border="0" src="images/p2allbundles.png" alt="Example Install Wizard showing all bundles in the repository" >
+</p>
+<p>Likewise, the <b>Installed Software</b> page shows every bundle in the installation, not just the "root" of the product 
+and the user-installed items.
+</p>
+<p><img border="0" src="images/p2allbundlesinstalled.png" alt="Example Installed Software page showing all bundles that are installed" >
+</p>
+<p>
+The steps for building the contributions are similar to those for the Cloud example above.  This time, the
+policy class is called <b>AllIUsAreVisiblePolicy</b>.
+</p>
+<pre>
+public class AllIUsAreVisiblePolicy extends Policy {
+	public AllIUsAreVisiblePolicy() {
+		// XXX Use the pref-based repository manipulator
+		setRepositoryPreferencePageId(PreferenceConstants.PREF_PAGE_SITES);
+		
+		// XXX All available IU's should be shown, not just groups/features
+		setVisibleAvailableIUQuery(InstallableUnitQuery.ANY);
+		// XXX All installed IU's should be shown, not just the user-installed.
+		setVisibleInstalledIUQuery(InstallableUnitQuery.ANY);
+	}
+}
+</pre>
+<p>
+The queries that retrieve the visible available software, and the visible installed
+software, are set so that all Installable Units are shown.
+</p>
+<p>
+In this example, we use OSGi declarative services to register the policy.  Rather than manually register the 
+service when our example Activator starts, we instead declare the service in a <b>policy_component.xml</b> file.  
+Using declarative services is not necessary in this particular example, but could become necessary if we were to
+separate our p2 UI contributions into another bundle.  In that case, it becomes possible for p2 UI components that 
+use the policy (the preference page or installation pages) to be invoked before the bundle that configures the 
+policy starts.  Declarative services ensures that the policy is found and the bundle starts when the service is needed. 
+</p>
+<p>
+As mentioned previously, the Cloud example preferences may also be used to make everything visible in the UI.  
+This can be done by editing the <b>plugin_customization.ini</b> file in the example.
+</p>
+
+<pre>
+# show only groups (features) in the available list, not every bundle
+org.eclipse.equinox.p2.examples.rcp.cloud/showAllBundlesAvailable=true
+
+# show only the install roots in the installed software list
+org.eclipse.equinox.p2.examples.rcp.cloud/showAllBundlesInstalled=true
+</pre>
+<h3>Modifying the p2 UI Policy while reusing the p2 UI feature</h3>
+<p>
+Because the p2 UI Policy is defined as an OSGi service, products that ship with the <b>org.eclipse.equinox.p2.user.ui</b> feature 
+unmodified can still provide an alternate implementation of the UI Policy.  The <b>org.eclipse.equinox.p2.ui.sdk</b> bundle declares the 
+service with a default ranking value (0).  This means that the product must supply a policy implementation with a higher service ranking.  
+When the policy service is found, the highest ranking policy will win.  A sample file that declares a policy with a ranking of 1000 can be 
+found <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.sdkbundlevisibility/OSGI-INF/policy_component.xml?root=RT_Project&view=markup">here</a>.
+</p>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uireuse.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uireuse.htm
new file mode 100644
index 0000000..83343df
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/p2_uireuse.htm
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>Reusing parts of the UI</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>
+Reusing parts of the UI</H2>
+<p>
+You may reuse the p2 UI in its entirety, or you may pick and choose which aspects of the UI you want to include in your application.
+</p>
+<h3>Reusing the Eclipse SDK UI in its entirety</h3>
+<p>If your goal is to simply use the same update UI used in the SDK inside your RCP app, very few modifications are required. You'll 
+need to include the org.eclipse.equinox.p2.user.ui feature in your application.  This will add the following UI bundles to your 
+application (in addition to all of the p2 core and other required bundles):
+<ul>
+<li>org.eclipse.equinox.p2.ui</li>
+<li>org.eclipse.equinox.p2.ui.sdk</li>
+<li>org.eclipse.equinox.p2.ui.sdk.scheduler</li>
+</ul>
+</p>
+<p>The contributions made in the <b>org.eclipse.equinox.p2.ui.sdk</b> assume that the application has defined a <b>Help</b> menu and
+an <b>additions</b> group for adding menu contributions.
+</p>
+<p>
+A sample RCP Mail application which shows this kind of reuse can be found 
+<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.sdkui/?root=RT_Project">
+in CVS</a>.</p>
+<p><img border="0" src="images/p2reuse.png" alt="Example RCP Application with p2 UI" >
+</p>
+<h3>Reusing the Eclipse SDK UI without automatic updating</h3>
+<p>
+If you want to use the SDK UI, but do not wish to add automatic update support, the application is modified as above.  
+However, the following bundles can be eliminated from the product:
+<ul>
+<li>org.eclipse.equinox.p2.ui.sdk.scheduler</li>
+<li>org.eclipse.equinox.p2.updatechecker</li>
+</ul>
+</p>
+<p>
+A sample RCP Mail application which shows how to do this can also be found 
+<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/p2/examples/org.eclipse.equinox.p2.examples.rcp.sdknoautoupdates/?root=RT_Project">in CVS</a>.  
+</p>
+<h3>Modifying the UI contributions</h3>
+<p>
+If you want to include p2 update functionality in the UI, but you don't want these items to appear in exactly the 
+same way as they do in the SDK, you can provide your own bundle that makes p2 UI contributions in lieu of the SDK bundle.  
+This allows you to simply rearrange the way users encounter the install/update functionality, or provide more precise 
+control of what can be done by the user.  For example, you may wish to expose a subset of functionality, such as 
+permitting updating, but not allowing the user to uninstall, install, or revert configurations.  
+</p>
+<p>The general approach for this kind of reuse is as follows:
+<ul>
+<li>Decide which p2 UI bundles to include in your product</li>
+<ul>
+<li>Always include <b>org.eclipse.equinox.p2.ui</b></li>
+<li>If you wish to use automatic update checking, include <b>org.eclipse.equinox.p2.updatechecker</b></li>
+<li>If you wish to reuse the SDK UI for automatic update checking (the same pref page, popup, etc.), then you can also include 
+<b>org.eclipse.equinox.p2.ui.sdk.scheduler</b></li>
+</ul>
+<li>Your application must replace the functionality provided by <b>org.eclipse.equinox.p2.ui.sdk</b> according to what functionality 
+is needed. </li>
+</ul>
+</p>
+<p>
+Use the <b>org.eclipse.equinox.p2.ui.sdk</b> bundle as a model when determining which contributions to make.  For example, if you are exposing 
+user preferences, and you are including the SDK's automatic update support (and pref page), then you probably want the automatic 
+update preferences to appear underneath your application's update preferences. If so, then you'll want to use the same preference page 
+ID as used by <b>org.eclipse.equinox.p2.ui.sdk</b> so that the automatic update preference page contribution falls underneath it.
+</p>
+<p>
+The <b>IHandler</b> classes in <b>org.eclipse.equinox.p2.ui.sdk</b> invoke the update and install function.  If you are simply 
+rearranging the menus in your application, you can copy these handler classes and command contributions to your bundle and 
+revise the menu contributions as you wish.  Or you can invoke the UI in a completely different way.
+</p>
+<p>The <b>org.eclipse.ui.about.installationPages</b> contributions made by the SDK UI provide access to update functionality.  
+Consider replacing or modifying the installation page contributions if some of the actions are not relevant.
+</p>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product.htm
index dafdd92..97d4372 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product.htm
@@ -15,7 +15,7 @@
 <H1>
 Packaging and delivering Eclipse based products</H1>
 <p>
-  The Eclipse platform is designed so you can add plug-ins that provide function
+  The Eclipse platform is designed so you can add plug-ins that provide functionality
   for the software development tools community.&nbsp; Commercial software
   vendors can build, brand, and package products using the platform as a base
   technology.&nbsp; These products can be sold and supported commercially.&nbsp;
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_feature.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_feature.htm
index 538d9fd..076aca4 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_feature.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_feature.htm
@@ -17,7 +17,7 @@
 that makes up a product. Grouping plug-ins into features allows the product to be
 installed and updated using the Eclipse update server and related support.</p>  
 <p>Features do not contain any code.&nbsp; They merely describe a set of
-plug-ins that provide the function for the feature and information about how to
+plug-ins that provide the functionality for the feature and information about how to
 update it. Features are packaged in a <a href="../reference/misc/feature_archive.html">feature
 archive</a> file and described using a <a href="../reference/misc/feature_manifest.html">feature
 manifest file</a>, feature.xml. The following is the first part of the manifest for
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_plugins.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_plugins.htm
index dc89d2f..3896cc2 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_plugins.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_def_plugins.htm
@@ -18,8 +18,8 @@ This means that plug-ins are the fundamental unit for packaging
 function.&nbsp;&nbsp;</p>
 <p>While features are organized for the purposes of distributing and updating
 products, plug-ins are organized to facilitate the development of the product
-function among the product team.&nbsp; The development team determines when to
-carve up program function into a separate plug-in.&nbsp;&nbsp;</p>
+functionality among the product team.&nbsp; The development team determines when to
+carve up program functionality into a separate plug-in.&nbsp;&nbsp;</p>
 <p>Plug-ins are packaged in a <a href="../reference/misc/plugin_archive.html">plug-in
 archive</a> file and described using a <a href="../reference/misc/plugin_manifest.html">plug-in
 manifest file</a>, <b>plugin.xml</b>.&nbsp;&nbsp;</p>
@@ -27,12 +27,12 @@ manifest file</a>, <b>plugin.xml</b>.&nbsp;&nbsp;</p>
 treated as if they were in the original plug-in archive file.&nbsp; They are
 useful for adding plug-in functionality, such as additional national language
 translations, to an existing plug-in after it has been installed.&nbsp;
-Fragments are ideal for shipping function that may trail the initial product
-release, since they can be used to add function without repackaging or
+Fragments are ideal for shipping functionality that may trail the initial product
+release, since they can be used to add functionality without repackaging or
 reinstalling the original plug-in.&nbsp; When a fragment is detected by the
-platform, its contents are merged with the function in the original
+platform, its contents are merged with the functionality in the original
 plug-in.&nbsp; In other words, if you query the platform plug-in registry, you
-would see the extensions and other function provided in the fragment as if it
+would see the extensions and other functionality provided in the fragment as if it
 was in the original plug-in.</p>
 <p>Fragments are described using a fragment manifest file, <b>fragment.xml.</b>&nbsp;
 It is similar to the plug-in manifest file.&nbsp; Since a fragment shares many
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_extension.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_extension.htm
index 921dc56..f038154 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_extension.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_extension.htm
@@ -22,7 +22,7 @@ need to install a JRE, the Eclipse platform, or a primary feature.&nbsp; The
 recommended directory structure for extensions allows a single installation to be
 used with multiple Eclipse based products.</p>
 <p>The following directory structure shows how an extension for a hypothetical
-product, <b>betterwebs</b>, could be used to extend the function of the <b>acmeweb</b>
+product, <b>betterwebs</b>, could be used to extend the functionality of the <b>acmeweb</b>
 product.</p>
 <pre>betterwebs/
 	eclipse/			<i>(directory for installed Eclipse files)</i>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_open_file.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_open_file.htm
new file mode 100755
index 0000000..4199ded
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_open_file.htm
@@ -0,0 +1,174 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>Open Files</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<h2>Associate and Open Files</h2>
+<p>
+An Eclipse based <b>product</b> is a stand-alone program built with the
+Eclipse platform.  In many cases such a program would like to be associated with
+particular file types or extensions.  For example, the Eclipse IDE  
+could be configured to open all Java files.  This would allow a user 
+to double click on a Java file and have it be opened in a running Eclipse
+IDE instance or start a new instance of the Eclipse IDE if it was not 
+previously running.  In order to support this coordination is needed 
+between the Eclipse native launcher, SWT, the workbench and the RCP
+application.
+</p>
+<p>
+New command line options have been added to support this scenario:
+</p>
+<ul>
+  <li><a href="../reference/misc/runtime-options.html#launcheropenfile">--launcher.openFile</a>
+      Specifies a file to be opened.
+  </li>
+  <li><a href="../reference/misc/runtime-options.html#launcherdefaultaction">--launcher.defaultAction</a>
+      Specifies an action to take when the launcher is started witout any &quot;-&quot; arguments on 
+      the command line.
+  </li>
+</ul>
+<p>
+The openFile argument opens the specified file in an instance of 
+Eclipse.  If an instance is not already running then a new instance will be started.
+</p>
+
+<pre>  eclipse --launcher.openFile myFile.txt</pre>
+
+<p>
+A second option is needed to configure the launcher to automatically perform the open file 
+request without requiring the user to always specify --launcher.openFile.  A new &quot;default action&quot; argument has been introduced to accomplish this.  This option
+can go in the launcher.ini (eclipse.ini) file, the value must be &quot;openFile&quot;:
+</p>
+
+<pre>  ...
+  -showsplash
+  org.eclipse.platform
+  --launcher.defaultAction
+  openFile
+  -vmargs
+  -Xms256m
+  -Xmx768m</pre>
+
+<p>
+This tells the launcher that if none of the command line arguments start with &quot;-&quot; then all command line arguments should be treated as if they
+followed the &quot;--launcher.openFile&quot; argument.
+</p>
+
+<pre>  eclipse myFile.txt</pre>
+
+<p>
+This option was added because without registry changes, this is the kind of command line the launcher will receive on windows when you double click a file that 
+is associated with eclipse, or you select files and choose &quot;Open With&quot; or &quot;Send To&quot; Eclipse.
+</p>
+
+<h3>Talking to SWT</h3>
+
+<p>
+The launcher talks to SWT through the use of a hidden window. The launcher and SWT both need to agree on 
+the name of this window. This allows the launcher to find an already running eclipse and tell it to open 
+the file. Any RCP application will need to ensure they get this right for things to work.
+</p>
+<p>
+The launcher bases this on its &quot;official name&quot;. The official name can be set with the -name argument.
+If -name is not set, then the official name is derived from the launcher executable, the extension is removed
+and the first letter is capitalized: rcp.exe becomes Rcp.
+</p>
+<p>
+SWT bases this on the value set with the Display.setAppName() function. Normally, this is set by the
+Workbench when it creates the display and the value is the "appName" taken from the product extension point.
+</p>
+
+<h3>Listening to SWT.OpenDocument events</h3>
+<p>
+The launcher communicates with SWT to inform SWT about a request to open one or more files.  SWT then
+can fire the SWT.OpenDocument event.  For an RCP application to take advantage of this it must register
+a listener for the SWT.OpenDocument event.  It should register this listener before calling
+PlatformUI.createAndRunWorkbench so that the listener is in place before the workbench starts running 
+the event loop.
+</p>
+<p>
+The event loop will start running while the splash screen is still up, so events may arrive before the 
+workbench is ready to actually open an editor for the file. This means that the listener should save 
+the file paths it gets from the OpenDocument events so they can be opened at some later time. 
+WorkbenchAdvisor.eventLoopIdle can be a good place to check for saved open file events.
+</p>
+
+<p>
+Here is an example RCP application that does this.  First is the IApplication implementation:
+</p>
+<pre>public class Application implements IApplication {	
+
+	public Object start(IApplicationContext context) {
+		OpenDocumentEventProcessor openDocProcessor = 
+			new OpenDocumentEventProcessor();
+
+		Display display = PlatformUI.createDisplay();
+		display.addListener(SWT.OpenDocument, openDocProcessor);
+
+		try {
+			int returnCode = PlatformUI.createAndRunWorkbench(display, new 
+				ApplicationWorkbenchAdvisor(openDocProcessor));
+			if (returnCode == PlatformUI.RETURN_RESTART) {
+				return IApplication.EXIT_RESTART;
+			}
+			return IApplication.EXIT_OK;
+		} finally {
+			display.dispose();
+		}
+	}
+	...
+}</pre>
+
+<p>
+Next is an example SWT Listener that listens to the SWT.OpenDocument event:
+</p>
+<pre>public class OpenDocumentEventProcessor implements Listener {
+	private ArrayList&lt;String&gt; filesToOpen = new ArrayList&lt;String&gt;(1);
+	
+	public void handleEvent(Event event) {
+		if (event.text != null)
+			filesToOpen.add(event.text);
+	}
+
+	public void openFiles() {
+		if (filesToOpen.isEmpty())
+			return;
+
+		String[] filePaths = filesToOpen.toArray(
+			new String[filesToOpen.size()]);
+		filesToOpen.clear();
+		
+		for (String path : filePaths) {
+			// open the file path
+		}
+	}
+}</pre>
+<p>
+Finally we need a WorkbenchAdvisor that will open the files durying eventLoopIdle:
+</p>
+<pre>public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
+	private OpenDocumentEventProcessor openDocProcessor;
+
+	public ApplicationWorkbenchAdvisor(
+			OpenDocumentEventProcessor openDocProcessor) {
+		this.openDocProcessor = openDocProcessor;
+	}
+
+	...
+
+	public void eventLoopIdle(Display display) {
+		openDocProcessor.openFiles();
+		super.eventLoopIdle(display);
+	}
+}</pre>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp.htm
index f5a34ef..770c7c8 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp.htm
@@ -24,7 +24,7 @@ known as the <b>Rich Client Platform</b>.
 Applications that don't require a common resource model can be built using a subset of the platform.  These rich applications
 are still based on a dynamic plug-in model, and the UI is built using the same toolkits and extension points.  The layout and
 function of the workbench is under fine-grained control of the plug-in developer in this case.  Up until now, we've been adding
-all of our visible function to the platform SDK workbench.  In a rich client application, we are responsible for defining the
+all of our visible functionality to the platform SDK workbench.  In a rich client application, we are responsible for defining the
 application and its workbench.
 </P>
 <p>
@@ -33,7 +33,7 @@ a UI, we mean that your application need only require two plug-ins, <b>org.eclip
 However, rich client applications are free to use any API deemed necessary 
 for their feature set, and can require any plug-ins above the bare minimum.  The 
 <a href="../reference/misc/overview-platform.html">Map of platform plug-ins</a> is a useful 
-reference when determing what plug-ins should be required when using various platform
+reference when determining what plug-ins should be required when using various platform
 API.</P>
 <p>The main thing that differentiates a rich client application from the platform workbench is that the application
 is responsible for defining which class should be run as the main application.  We'll look at how this is done in
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_browser.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_browser.htm
index 1095d7d..ea9c717 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_browser.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_browser.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -23,7 +23,7 @@ We will look at how to build a Rich Client Platform application by going through
 web browser example.  This example is not included in the R3.0 SDK, but can be downloaded from the project
 <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ui.examples.rcp.browser/">org.eclipse.ui.examples.rcp.browser</a>.
 If you are working in Eclipse, you may simply check out the project from the Eclipse CVS repository (see the
-<a href="http://dev.eclipse.org/cvshowto.html">Eclipse CVS How-To</a> if you are not familiar with the procedure for
+<a href="http://wiki.eclipse.org/index.php/CVS_Howto">Eclipse CVS How-To</a> if you are not familiar with the procedure for
 checking out projects from CVS).
 </p>
 <p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_define.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_define.htm
index 6052636..f245fde 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_define.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_define.htm
@@ -38,7 +38,7 @@ Eclipse-LazyStart: true
 </pre>
 
 <p>
-Up to now, we've contributed function to the platform workbench by declaring extensions that
+Up to now, we've contributed functionality to the platform workbench by declaring extensions that
 add elements to the workbench.  In all of the <tt>plugin.xml</tt> content that we've reviewed so far,
 we've only looked at individual contributions to a workbench that is assumed to be there.  On the rich
 client platform, there is no application already defined.  Your rich client plug-in is the one
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_extensions.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_extensions.htm
index e7fca58..9ed0eac 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_extensions.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/rcp_extensions.htm
@@ -24,7 +24,7 @@ workbench window that is configured appropriately.  What else is different about
 client application?  Not much, actually.
 </p>
 <p>Once the infrastructure for the application workbench is in place, the techniques for 
-adding function to the workbench are the same as those we used when we were extending the
+adding functionality to the workbench are the same as those we used when we were extending the
 platform SDK workbench.  The workbench UI extension points are used to add views, editors,
 menus, and all of the other contributions we know and love.  In the case of the browser example,
 we'll be adding extensions for a perspective and a couple of views. </p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv.htm
index b767f13..691b881 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv.htm
@@ -35,6 +35,7 @@ features, take a gander at some of these topics:
        <li><a href="wrkAdv_efs_resources.htm">User interface support for alternative file systems</a></li>
     </ul>
   </li>
+  <li><a href="resAdv_variables.htm">Dynamic path variables</a></li>
 </ul>
 </BODY>
 </HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv_variables.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv_variables.htm
new file mode 100644
index 0000000..8538fc1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resAdv_variables.htm
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>
+Dynamic Path Variables
+</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>
+Dynamic path variables</H2>
+<P >
+Each linked resource in the workspace can be specified relative to a path variable.
+</P>
+<P >
+Each IResource has a dedicated path variable manager, accessible from <b>IResource.getPathVariableManager()</b>.  
+The path variable manager allows reading, creating and changing path variables, along with resolving URIs that may be relative 
+to a path variable, as opposed to be defined as an absolute path. 
+</P>
+<P >
+Currently, each project has a separate list of path variables, so all resources under a given project have path variable managers
+that contain the same list of path variables, although that could change in the future.  Still variables <i>values</i> can be different
+between two path variable managers of two different resources.  For example, the variable "PARENT_LOC" contains the location of 
+the workspace parent of the current resource for which the path variable manager was created. 
+</P>
+<P >
+The default path variable list can be extended through the  <a href="../reference/extension-points/org_eclipse_core_resources_variableResolvers.html"><b>org.eclipse.core.resources.variablesResolvers</b></a> extension point.
+</p>
+<P >
+Because of limitations and backward compatibilities in the legacy <b>IPathVariableManager</b>, the path variable values cannot contain
+parent path lexical element ("..").  Instead, the methods <b>IPathVariableManager.convertToUserEditableFormat</b> and <b>IPathVariableManager.convertFromUserEditableFormat</b>
+can be used to convert a path that contains the ".." element into an internal format that can be stored in the URI of a variable. The UI
+automatically converts user provided strings into the internal format and vice versa.
+</p>
+</BODY>
+</HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt.htm
index 3ec9334..c259e96 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt.htm
@@ -27,6 +27,7 @@ Resources overview</H1>
   <li><a href="resInt_preferences.htm">Project-scoped preferences</a></li>
   <li><a href="resInt_content.htm">File encoding and content types</a></li>
   <li><a href="resInt_linked.htm">Linked resources</a></li>
+  <li><a href="resInt_filters.htm">Resources filters</a></li>
   <li><a href="resAdv_markers.htm">Resource markers</a></li>
   <li><a href="resAdv_modify.htm">Modifying the workspace </a> 
     <ul>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_filters.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_filters.htm
new file mode 100644
index 0000000..2fb3101
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_filters.htm
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<TITLE>
+Linked resources
+</TITLE>
+
+<link rel="stylesheet" type="text/css" HREF="../book.css">
+</HEAD>
+<BODY BGCOLOR="#ffffff">
+<H2>Resource Filters</H2>
+<P >Resource filters allow the user to configure which files and folders are included automatically in a project resource hierarchy when refresh is performed. 
+</p>
+<P >By adding resource filters to a project or folder, the user can systematically prevent some file system entries to be displayed in the resource tree. 
+</P>
+<P >Resource filters can be created using the <b>IContainer.createFilter</b> method.</P>
+<P>
+The <b>FileInfoMatcherDescription</b> object has to be initialized with the ID of a <b>filterMatchers</b> extension point.  The org.eclipse.core.resources plugin
+specifiy one default filter matcher, of ID <b>org.eclipse.core.resources.regexFilterMatcher</b>, which accepts regular expressions Strings as argument.  Other plugins distributed with the workbench (such as the <b>org.eclipse.ui.ide</b> plugin) define other reusable filter matchers. 
+</p>
+<P>
+Filter matchers are extensible through the <b>org.eclipse.core.resources.filterMatchers</b> extension point.
+</p>
+</BODY>
+</HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_linked.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_linked.htm
index 635a85c..1e8da1d 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_linked.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/resInt_linked.htm
@@ -193,5 +193,18 @@ methods related to linked resources:</p>
    child.getRawLocation() ==&gt; &quot;c:\temp\folder\abc.txt&quot;
    child.isLinked() ==&gt; &quot;false&quot;
 </pre>
+<H3>Virtual folders</H3>
+<p>
+Virtual folders are folders that do not exist in the file system.
+They are shown to the user with a unique folder icon (different than a linked resources)
+but are internally seen by the API as regular linked resource folders.</p>
+<p>
+The API <b>IResource.isLinked</b> returns true for virtual folders, and 
+<b>IResource.getLocation</b>/<b>IResource.getLocationURI</b> always returns null.</p>
+<p>
+Virtual folders can be created by passing the <b>IResource.VIRTUAL</b> flag to the <b>IResource.create</b> API.</p>
+<p>
+By design, virtual folders can only have linked resources as children (including other virtual folders).
+</p>
 </BODY>
 </HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm
index e0719a5..92026e2 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm
@@ -217,6 +217,15 @@ be used to locate instances of all running, waiting, and sleeping jobs at any
 given time.
 </p>
 
+<h3>Completing jobs before shutdown</h3>
+<p>
+Since jobs run concurrently, it is possible for your jobs to be still running when the platform
+begins to shutdown. This is a dangerous situation, since after your plug-in stops it
+may not behave correctly or be able to load classes. For this reason, it is important
+for you to ensure all your jobs are canceled and completed in your plug-in's <code>stop</code>
+method. As in the previous example, you can use a job family to ensure all jobs
+scheduled by your plug-in are canceled and joined before your plug-in stops running.
+</p>
 
 </BODY>
 </HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model.htm
index 8cd7d9a..d41e496 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model.htm
@@ -17,7 +17,7 @@ The runtime plug-in model</H2>
 <P >
 The platform runtime engine is started when a user starts an application developed with Eclipse.  
 The runtime implements the basic <b>plug-in</b> model and infrastructure used by the platform.  
-It keeps track of all of the installed plug-ins and the function that they provide. 
+It keeps track of all installed plug-ins and the functionality that they provide. 
 </p>
 <p>A plug-in is a structured component that contributes code (or documentation or both) to the system and describes
 it in a structured way. Plug-ins can define <b>extension points</b>, well-defined 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model_bundles.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model_bundles.htm
index 0c9cf95..4632acb 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model_bundles.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/runtime_model_bundles.htm
@@ -24,7 +24,7 @@ the terms <b>plug-in</b> and <b>bundle</b> interchangeably, unless discussing a
 <p>
 The <b><a href="../reference/api/org/eclipse/core/runtime/Plugin.html">Plugin</a></b> class represents a plug-in that
 is running in the platform.  It is a convenient place to centralize the life-cycle aspects and overall 
-semantics of a plug-in.  A plug-in can implement specialized function for the <b>start</b> and <b>stop</b>
+semantics of a plug-in.  A plug-in can implement specialized functionality for the <b>start</b> and <b>stop</b>
 aspects of its life-cycle.  Each life-cycle method includes a reference to a  
 <b><a href="http://www.osgi.org/javadoc/r4v42/org/osgi/framework/BundleContext.html">BundleContext</a></b> which can supply
 additional information.</p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/swt_widgets_events.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/swt_widgets_events.htm
index d71ca9c..7eeb468 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/swt_widgets_events.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/swt_widgets_events.htm
@@ -152,6 +152,16 @@ or by user.</td>
 </TR>
 
 <tr>
+<td><strong>OpenDocument</strong></td>
+<td>The operating system has requested that a document be opened.</td>
+</tr>
+
+<tr>
+<td><strong>OrientationChange</strong></td>
+<td>The orientation of a Text control is changing.</td>
+</tr>
+
+<tr>
 <td><strong>PaintItem</strong></td>
 <td>A TableItem or TreeItem is about to have its foreground drawn.</td>
 </tr>
@@ -177,6 +187,11 @@ on a row in a Table or by keyboard navigating through the items.</td>
 <td>A control's visibility has changed.</td>
 </tr>
 
+<tr>
+<td><strong>Skin</strong></td>
+<td>A control needs to be skinned.</td>
+</tr>
+
 <TR>
 <td><strong>Traverse</strong></td>
 <td>The user is trying to traverse out of the control using a keystroke.  For
@@ -233,7 +248,7 @@ control.</td>
 </TR>
 
 <TR>
-<td><strong>MouseWheel</strong></td>
+<td><strong>MouseHorizontalWheel, MouseVerticalWheel, MouseWheel</strong></td>
 <td>The mouse wheel has been rotated.</td>
 </TR>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_howto.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_howto.htm
index 0228a0d..a045f62 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_howto.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_howto.htm
@@ -27,7 +27,7 @@ introduced by the team plug-in.)&nbsp;It's a matter of understanding <a
  href="workbench.htm">workbench integration</a>.&nbsp;So let's start
 with the big picture.&nbsp;We'll be using the CVS client as a case
 study for integrating a team provider with the platform. Let's look at
-some of the function the CVS provider supplies and what workbench and
+some of the functionality the CVS provider supplies and what workbench and
 team facilities you can use to achieve similar levels of integration.</p>
 <p>
 <img
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_provider_repository.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_provider_repository.htm
index 2edf102..65c9d81 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_provider_repository.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/team_provider_repository.htm
@@ -236,7 +236,7 @@ Project...</span> wizard which allows filtering of repository providers
 based on the enabled/disabled state of workbench capabilities, and the
 other is the Team plug-in auto-enablement trigger.</p>
 <h3>Resource modification hooks<a name="hooks"></a></h3>
-<p>Most of the interesting function associated with a repository
+<p>Most of the interesting functionality associated with a repository
 provider occurs as the user works with resources in the project that is
 configured for the provider.&nbsp; In order to be aware of changes the
 user makes to a resource, the provider can implement <a
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_abstract_scope.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_abstract_scope.htm
index 7be2863..dc632da 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_abstract_scope.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_abstract_scope.htm
@@ -38,7 +38,7 @@ to perform these multi-scope operations.
 	<dd>scope=A^B^C</dd>
 	<dd>scope=(A^B^C)</dd>
 	<dd>scope=A&amp;scope=B&amp;scope=C</dd>
-	<dt>Filter help to include A or B, and C:</dd>
+	<dt>Filter help to include A or B, and C:</dt>
 	<dd>scope=(A|B)^C</dd>
 	<dd>scope=A|B&amp;scope=C</dd>
 	<dd><b>Note:</b> (A|B^C) will not be recognized by the parser, and will only use the last operation, so it will look like (A^B^C)</dd>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_child_links.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_child_links.htm
index bc3584d..055bb4c 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_child_links.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_child_links.htm
@@ -19,13 +19,13 @@ the parent of an anchor.
 <p>
 If the sequence <pre>&lt;!--INSERT_CHILD_LINKS--&gt;</pre> appears in the source code it will be replaced
 with html containing hyperlinks to all child topics.
-<p>
+</p>
 <p>
 If the sequence <pre>&lt;!--INSERT_CHILD_LINK_STYLE--&gt;</pre> appears in the source code it will be replaced
 by either <code>"has_child_topics"</code> or <code>"no_child_topics"</code> depending on whether or not
 the topic has children. This can be used to assign a style to a section of html so that it will only be
 shown if the topic has children.
-<p>
+</p>
 
 </body>
 </html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_criteria.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_criteria.htm
new file mode 100644
index 0000000..2a8ab65
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_criteria.htm
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
+<title>Adding criteria to help content</title> 	
+</head>
+<body>
+
+<h2>Adding criteria to help content</h2>
+
+<p>This page will explain how to activate criteria. To enable criteria you need define which criteria are associated 
+with each topic and also set preferences which tell the help system to show criteria. The association between criteria and topics can be
+either in a toc file or using a criteria provider class. </p>
+
+<h3>What are criteria?</h3>
+
+<p>Some topics of the plug-in might only be of interest to certain users, for example a topic may be specific to the linux platform.
+The document writer can define a criterion "platform" with values such as "linux", "windows" etc applied to different topics. The user can
+then filter the documentation to show only documents applicable to a specific platform.
+</p>
+
+<h3>How to define criteria in a table of contents file</h3>
+
+<p>When defining a table of contents file criteria information can be appended according to these steps:</p>
+<ul>
+<li>Add criteria tag as children to the topic.</li>
+<li>Use id to define 'name' and 'value' attribute of the criteria element</li>
+</ul>
+<p>For example:</p>
+<pre>
+ &lt;toc href="tochref"&gt;
+      &lt;criteria  name="platform"  value="AIX"&gt;
+      &lt;criteria  name="platform"  value="Windows"&gt;
+      &lt;topic label="label1" href="href1"&gt;
+          &lt;criteria  name="platform" value="Windows"&gt;
+      &lt;/topic&gt;
+      &lt;topic label="label2" href="href2"&gt;
+          &lt;criteria name="platform" value="AIX"&gt;      
+      &lt;/topic&gt;
+ &lt;/toc&gt;
+</pre>
+<p>Some rules to follow when adding criteria:</p>
+<ul>
+<li>The criteria name is case insensitive but the criteria value is case sensitive.</li>
+<li>It is important to ensure that parent topics contain all of the criteria of any of their children,
+ the parent and child will not show in the  
+table of contents if filtered using criteria which only the child satisfies.</li>
+<li>Any criterion with an empty value is invalid and will be ignored.</li>
+<li>Multiple comma separated values can be specified in a single &lt;criteria&gt; element, for example 
+&lt;criteria name="Platform" value="AIX,Linux"/&gt;. The name attribute takes a single value.</li>
+</ul>
+
+<h3>How to define criteria using a criteria provider</h3>
+<p>As an alternative to defining criteria in a table of contents file the extension point
+<a href="../reference/extension-points/org_eclipse_help_criteriaProvider.html">org.eclipse.criteriaProvider</a>
+can be used to define a class which will associate criteria with topics.
+Criteria defined using this extension point will be merged with those defined in the table of contents 
+and if multiple criteria providers are defined each will contribute to the criteria of an ITopic or IToc.
+</p>
+
+
+<h3>Criteria localization</h3>
+<p>The names and values of criteria can be localized.
+Follow these steps to add localization information for criteria:</p>
+<ul>
+<li>In plugin.xml, use the extension point 
+<a href="../reference/extension-points/org_eclipse_help_criteriaDefinition.html">org.eclipse.help.criteriaDefinition</a> 
+to provide the criteria definition file. (if no translation file is provided, then the id of criteria name and value will be displayed). 
+For example:
+<pre>
+ &lt;extension point="org.eclipse.help.criteriaDefinition"&gt;
+      &lt;criteriaDefinition file="criteria.xml"/&gt;
+ &lt;/extension&gt;
+</pre>
+</li>
+
+<li>In the definition file, define the translation of criteria information. 
+Node 'criterion' represents the criterion name.
+Node 'criterion-value' represents the criterion value.
+All 'id' attributes represent the id of criterion name or value.
+All 'name' attributes represent the display name of criteria name or value in one specific locale. 
+For example:
+<pre>
+ &lt;criteriaDefinition&gt;
+      &lt;criterion id="platform" name="Platform"&gt;
+          &lt;criterion-value id="AIX" name="AIX Server"/&gt;
+          &lt;criterion-value id="Windows" name="Windows Server"/&gt;
+      &lt;/criterion&gt;
+ &lt;/criteriaDefinition&gt;
+</pre>
+</li>
+
+</ul>
+<h3>How to set the preferences to enable criteria</h3>
+<p>Define the necessary preferences in your plugin customization file.</p>
+<ul>
+<li>enableCriteria. This preference must be true to enable filtering by criteria.
+<pre>example: org.eclipse.help/enableCriteria = true</pre></li>
+
+<li>supportedCriteria. A comma separated list of the criteria which will be supported in the help system. 
+<pre>example: org.eclipse.help/supportedCriteria = platform,version</pre>
+which means that 'platform' and 'version' are the supported criteria in help system.
+</li>
+</ul>
+<p> 	
+See Also:
+<br>
+<a href="../reference/extension-points/org_eclipse_help_criteriaDefinition.html">The criteria definition extension point.</a>
+<br>	
+<a href="../reference/extension-points/org_eclipse_help_criteriaProvider.html">The criteria provider extension point.</a>	
+</p>
+</body>	
+</html>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_nested.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_nested.htm
index c1f5064..5a632e1 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_nested.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_nested.htm
@@ -12,7 +12,7 @@
 
 <h2>Building nested documentation structures</h2>
 
-<p>As plug-ins contribute function to the platform, it's common to add
+<p>As plug-ins contribute functionality to the platform, it's common to add
 documentation that describes the new function.&nbsp; How can this documentation
 be structured so that the user sees a cohesive and complete set of documentation
 instead of many individual contributions?&nbsp; The table of contents definition
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_process.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_process.htm
index d38cf2f..4c57802 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_process.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_process.htm
@@ -14,8 +14,8 @@
 
 <p>
 The Eclipse help system performs preprocessing on html and xhtml pages to add breadcrumbs 
-and JavaScript. The processing is performed by output filter which operate on the output stream. Since Eclipse 3.5 
-Eclipse has had an extension point to allow user defined filters to be added. This can be used for example to inject javascript 
+and JavaScript. The processing is performed by output filter which operate on the output stream. 
+Eclipse has an extension point to allow user defined filters to be added. This can be used for example to inject javascript 
 into every help page. See the extension point <a href = 
 "../reference/extension-points/org_eclipse_help_webapp_contentFilter.html"> org.eclipse.help.webapp.contentFilter</a> 
 for more information.
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_xhtml.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_xhtml.htm
index 4f6bff6..b26ee40 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_xhtml.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_content_xhtml.htm
@@ -29,7 +29,6 @@ available when using HTML.
 XHTML help documents are contributed in exactly the same way as HTML documents by referencing them from a table of contents (TOC) file.
 Since Eclipse 3.4 it is no longer necessary to bind the "org.eclipse.help.base.xhtml&quot; search participant to your
          doc plugin.</p> 
-</ul>
 
 <p><a name="include_format"><b>XHTML include format</b></a></p>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_setup_standalone.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_setup_standalone.htm
index 77ba271..98a5559 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_setup_standalone.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_setup_standalone.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -129,12 +129,13 @@ org.eclipse.help. To do this perform the following steps.</p>
   <li>Download an eclipse SDK build and upzip it into two different locations, 
   &lt;location1&gt; and &lt;location1&gt;</li>
   <li>Remove the eclipse plugins directory from location1</li>
-  <li>Start Eclipse in location2 and import the org.eclipse.help feature into 
+  <li>Start Eclipse in location2 and import the org.eclipse.help and org.eclipse.rcp features into 
   your workspace using File/Import/Plug-in Development/Features</li>
-  <li>Export the help feature and it's plugins to location1/eclipse using 
-  File/Export/Plug-in Development/Deployable Features. The plugins directory 
-  which was just deleted will be replaced by a directory containing a smaller 
-  number of plugins.</li>
+  <li>Export the help and rcp features and their plugins to a newly created directory location3 using 
+  File/Export/Plug-in Development/Deployable Features. </li>
+  <li>Replace the plugins and features directories under the location1/eclipse directory 
+  with those from location3.</li>
+  <li>copy org.eclipse.equinox.launcher.* from location2/eclipse/plugins to location1/eclipse/plugins.</li>
   <li>From location1 start standalone help from the command line as described in 
   the previous section.</li>
 </ol>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_war.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_war.htm
index e5dac65..ca93497 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_war.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/ua_help_war.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -30,20 +30,19 @@ there will be two directories titled &quot;help&quot; and <br>
 Project.</li>
   <li>Export org.eclipse.help.infocenter-feature as a deployable feature and set 
 the destination to be
-web-archive/help/WEB-INF/eclipse in the area where org.eclipse.help.webapp.&lt;version&gt;.jar 
+web-archive/help/WEB-INF in the area where org.eclipse.help.webapp.&lt;version&gt;.jar 
 was unzipped.</li>
-  <li>Add some documentation plugins to the webapps/help/WEB-INF/eclipse/plugins 
+  <li>Add some documentation plugins to the webapps/help/WEB-INF/plugins 
 directory.</li>
   <li>Download org.eclipse.equinox.http.servletbridge_&lt;version&gt;.jar and 
   org.eclipse.equinox.servletbridge_&lt;version&gt;.jar from the
   <a href="http://download.eclipse.org/eclipse/equinox/">equinox download site</a>. 
   Select a version of Equinox that matches the version of Eclipse you are 
   running to take you to the downloads page.</li>
-  <li>Extract servletbridge.jar from org.eclipse.equinox.servletbridge_&lt;version&gt;.jar.</li>
-  <li>Add the file servletbridge.jar to the help/WEB-INF/lib directory. You may 
+  <li>Add the file org.eclipse.equinox.servletbridge_&lt;version&gt;.jar. to the help/WEB-INF/lib directory. You may 
 need to create this directory.</li>
   <li>Add the file org.eclipse.equinox.http.servletbridge_&lt;version&gt;.jar to the 
-help/WEB-INFeclipse/plugins directory</li>
+help/WEB-INF/plugins directory</li>
   <li>At this stage you can create a war file from the help directory or you can 
 copy the directory and its contents to the webapps 
 folder of your Tomcat installation.</li>
@@ -53,7 +52,7 @@ folder of your Tomcat installation.</li>
 search will fail if the search term contains non ASCII characters.
  </li>
   <li>Start Tomcat and see the help system start up.</li>
-</ol>Notes: If you look in the config.ini in the help.war file under directory help/WEB_INF/eclipse/configuration 
+</ol>Notes: If you look in the config.ini in the help.war file under directory help/WEB_INF/configuration 
 you will notice the <br>
 line eclipse.product=org.eclipse.productname. If your product has help system 
 customizations in a product plugin you can <br>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench.htm
index 6a2998e..1ace215 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench.htm
@@ -26,7 +26,7 @@ UI.</P>
 <h2>
 Quick tour of the workbench</h2>
 <P >
-The workbench is the cockpit for navigating all of the function provided by plug-ins.
+The workbench is the cockpit for navigating all of the functionality provided by plug-ins.
 By using the workbench, we can navigate resources and we can view and edit
 the content and properties of these resources. </P>
 <P >
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm
index 0949141..c17385b 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm
@@ -15,7 +15,7 @@
 </head>
 
 <body bgcolor="#ffffff">
-  <h3>Activities</h3>An <b>activity</b> is a logical grouping of function that
+  <h3>Activities</h3>An <b>activity</b> is a logical grouping of functionality that
   is centered around a certain kind of task. For example, developing Java
   software is an activity commonly performed by users of the platform, and the
   JDT defines many UI contributions (views, editors, perspectives, preferences,
@@ -50,7 +50,7 @@
   <p>Certain user
   operations serve as <b>trigger points</b> for enabling an activity. For
   example, creating a new Java project could trigger the enabling of the Java
-  development activity. In this way, users are exposed to new function as they
+  development activity. In this way, users are exposed to new functionality as they
   need it, and gradually learn about the activities that are available to them
   and how they affect the UI. When a user first starts the platform, it is
   desirable for as many activities as possible to be disabled, so that the
@@ -98,7 +98,7 @@
   as platform integration/configuration or product install. Individual plug-ins
   typically do not define new activities, unless the plug-in is a systems-level
   plug-in defined by a systems integrator. In a typical scenario, a systems
-  integrator determines how function is grouped into activities and which ones
+  integrator determines how functions are grouped into activities and which ones
   are enabled by default. Activities are associated with UI contributions using
   <b>activity pattern bindings</b>, patterns that are matched against the id of
   the UI contributions made by plug-ins. An example will help demonstrate these
@@ -267,7 +267,7 @@ Developer Guide" book.
   with all defined activities (to some extent also expression-based
   activities) and changing the enabled state (only for conventional
   activities). Most plug-ins need not be concerned with this API, but it is
-  useful when implementing function that allows the user to work with
+  useful when implementing functions that allow the user to work with
   activities, or for implementing the trigger points that enable a particular
   conventional activity. It is assumed that any plug-in that is
   manipulating activities through API is quite aware of the ways that
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_contexts.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_contexts.htm
index 2ead60d..c6106bd 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_contexts.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_contexts.htm
@@ -17,7 +17,7 @@
 Contexts</h3>
 <P >
 A <b>context</b> can be used to influence what commands are available to the user at any given moment.
-Contexts are much more dynamic than activities.  While an activity represents a broad set of function that
+Contexts are much more dynamic than activities.  While an activity represents a broad set of functionality that
 is available to the user most of the time, contexts describe a focus of the user at a specific point
 in time.  For example, the commands available to a user while editing text might be different than those
 available to a user while editing Java text or browsing packages in the package explorer.
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_decorators.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_decorators.htm
index 683ba66..50982b1 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_decorators.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_advext_decorators.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -26,7 +26,7 @@ Many of the standard workbench views participate in showing decorations.&nbsp;&n
 binary and source projects.</p>
 
 
-<p><img src="images/workbenchdecorators.png" alt="Package explorer view with PDE decorators" border="0"></p>
+<p><img src="images/workbenchdecorators.png" alt="Package Explorer view with PDE decorators" border="0"></p>
 
 
 <p>The <b>com.example.helloworld&nbsp; </b>project is the only source project
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm
index f4e6c11..ff83ba8 100755
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm
@@ -367,11 +367,13 @@ one or more controls (using the same mechanism as contributing controls into the
 <p>
 Controls contributed to the trim must be a subclass of 
 <b><a href="../reference/api/org/eclipse/ui/menus/WorkbenchWindowControlContribution.html">WorkbenchWindowControlContribution</a></b>.
-This class will manage the life-cycle of the contribution, disposing and re-creating the contribution as necessary (such as when the user moves the control to another trim area). Note that the <code>getCurSide()</code> and <code>getOrientation()</code> methods
-allow the implementation of <code>createControl(parent)</code> to adjust the created control to it's current locaton in the trim.
+This class will manage the life-cycle of the contribution, disposing and re-creating the contribution as necessary 
+(such as when the user moves the control to another trim area). Note that the <code>getCurSide()</code> and <code>getOrientation()</code> methods
+allow the implementation of <code>createControl(parent)</code> to adjust the created control to its current location in the trim.
 </p>
 <p>
-For this example we've contributed a fairly naive trim widget that simply displays a string and an indication of which side the trim iscurrently docked on.
+For this example we've contributed a simple trim widget that simply displays a string 
+and an indication of which side the trim is currently docked on.
 </p>
 <p>
 <img src="images/readmetrim.png" alt="" border="0">
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_scalability.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_scalability.htm
index 71d2218..03efc27 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_scalability.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_scalability.htm
@@ -28,11 +28,11 @@ The activity and context mechanisms address the problem of too much clutter in t
 <ul>
 <li><a href="../reference/extension-points/org_eclipse_ui_activities.html">
 <b>Activities</b></a>
-allow platform integrators to define large-grained groupings of function that are only
+allow platform integrators to define large-grained groupings of functionality that are only
 shown when a particular user activity is enabled. Users can explicitly (or implicitly through trigger points)
 enable or disable activities.</li>
 <li><a href="../reference/extension-points/org_eclipse_ui_contexts.html">
-<b>Contexts</b></a> are used to dynamically enable function while the user is performing a specific task.
+<b>Contexts</b></a> are used to dynamically enable functionality while the user is performing a specific task.
 They influence what commands are available to the user at any given moment.</li>
 </ul>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/notices.html b/eclipse/plugins/org.eclipse.platform.doc.isv/notices.html
index b2201a7..f2293eb 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/notices.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/notices.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <LINK REL="STYLESHEET" HREF="book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -13,7 +13,7 @@
 <h3>
 <a NAME="Notices"></a>Notices</h3>
 <p>
-The material in this guide is Copyright (c) IBM Corporation and others 2000, 2009.
+The material in this guide is Copyright (c) Eclipse contributors 2000, 2010.
 </p>
 <p>
 <a href="about.html">Terms and conditions regarding the use of this guide.</a>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/platformOptions.txt b/eclipse/plugins/org.eclipse.platform.doc.isv/platformOptions.txt
index 76e6c3a..96239de 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/platformOptions.txt
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/platformOptions.txt
@@ -119,12 +119,12 @@
 ;../com.jcraft.jsch_0.1.41.v200903070017.jar
 ;../javax.servlet_2.5.0.v200910301333.jar
 ;../org.apache.ant_1.7.1.v20090120-1145/lib/ant.jar
-;../org.apache.lucene.analysis_1.9.1.v20080530-1600.jar
-;../org.apache.lucene_1.9.1.v20080530-1600.jar
+;../org.apache.lucene.analysis_1.9.1.v20100518-1140.jar
+;../org.apache.lucene_1.9.1.v20100518-1140.jar
 ;../org.eclipse.core.runtime.compatibility.auth/@dot
-;../org.eclipse.ecf.provider.filetransfer_3.1.0.v20100301-1516.jar
-;../org.eclipse.ecf.filetransfer_4.0.0.v20100301-1516.jar
-;../org.eclipse.ecf_3.1.0.v20100301-1516.jar
+;../org.eclipse.ecf.provider.filetransfer_3.1.0.v20100529-0735.jar
+;../org.eclipse.ecf.filetransfer_4.0.0.v20100529-0735.jar
+;../org.eclipse.ecf_3.1.0.v20100529-0735.jar
 ;../org.eclipse.equinox.frameworkadmin/@dot
 ;../org.eclipse.equinox.p2.director/@dot
 ;../org.eclipse.equinox.p2.garbagecollector/@dot
@@ -136,10 +136,10 @@
 ;../org.eclipse.osgi.services/@dot
 ;../org.eclipse.osgi/@dot
 ;../org.eclipse.update.ui/@dot
-;../org.mortbay.jetty.server_6.1.15.v200905151201.jar
-;../org.mortbay.jetty.util_6.1.15.v200905182336.jar
-;../org.sat4j.core_2.2.0.v20100225.jar
-;../org.sat4j.pb_2.2.0.v20100225.jar
+;../org.mortbay.jetty.server_6.1.23.v201004211559.jar
+;../org.mortbay.jetty.util_6.1.23.v201004211559.jar
+;../org.sat4j.core_2.2.0.v20100429.jar
+;../org.sat4j.pb_2.2.0.v20100429.jar
 -breakiterator
 -use
 -splitIndex
@@ -154,7 +154,7 @@
 -doctitle "Eclipse Platform API Specification"
 -header "<b>Eclipse Platform</b><br>Release 3.6"
 -bottom '<font size="-1"><p><a href="{@docRoot}/../misc/api-usage-rules.html">Guidelines for using Eclipse APIs</a>.</p><p>Copyright (c) Eclipse contributors and others 2000, 2010. All rights reserved.</p></font>'
--link http://java.sun.com/j2se/1.4.2/docs/api
+-link http://java.sun.com/j2se/1.5.0/docs/api/
 -link http://www.osgi.org/javadoc/r4v42
 
 ../org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
@@ -193,9 +193,11 @@ org.eclipse.core.filesystem
 org.eclipse.core.filesystem.provider
 org.eclipse.core.net.proxy
 org.eclipse.core.resources
+org.eclipse.core.resources.filtermatchers
 org.eclipse.core.resources.mapping
 org.eclipse.core.resources.refresh
 org.eclipse.core.resources.team
+org.eclipse.core.resources.variableresolvers
 org.eclipse.core.runtime
 org.eclipse.core.runtime.content
 org.eclipse.core.runtime.dynamichelpers
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/faq.html b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/faq.html
index 6194a2a..bbdef3c 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/faq.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/faq.html
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1" type="text/css">
@@ -13,17 +13,29 @@
 <h1>Eclipse 3.6 Plug-in Migration FAQ</h1>
 
 <ol>
-	<li>None</li>
+	<li><a href="#ds">Why aren't provisioning related services available in my application? </a></li>
+	<li><a href="#p2api">How do I migrate from the provisional p2 API in 3.5 to the new p2 API in 3.6?</a></li>
 </ol>
 
 <hr>
 
 <!-- ############################################## -->
-<!-- <h2><a name="item1">Item 1</a></h2>
+<h2><a name="ds">Why aren't provisioning related services available in my application?</a></h2>
 <p>
+	OSGi services provided by p2 and Update Manager are now registered using the
+	OSGi declarative services mechanism. If you are writing your own application
+	that makes use of these services, you need to make sure the declarative
+	services bundle (<tt>org.eclipse.equinox.ds</tt>), is being started in your application.
+</p>
+<!-- ############################################## -->
+<h2><a name="p2api">How do I migrate from the provisional p2 API in 3.5 to the new p2 API in 3.6?</a></h2>
+<p>
+	In the 3.4 and 3.5 releases, p2 provided a provisional API for accessing its
+	functionality programmatically. This provisional API has largely been replaced in
+	the 3.6 release with a fully supported mature p2 API. While there is generally 
+	no migration support for clients who used provisional APIs, you can find some
+	help with migration on the <a href="http://wiki.eclipse.org/Equinox/p2/Helios_Migration_Guide">p2 Helios Migration Guide</a>.
 </p>
--->
-
 <!-- ############################################## -->
 
 </body>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/incompatibilities.html b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/incompatibilities.html
index c30e5c2..d195fd4 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/incompatibilities.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/3.6/incompatibilities.html
@@ -23,6 +23,9 @@
  <li><a href="#minTextCellWidth">The TextCellEditor no longer sets a default width of 50</a></li>
  <li><a href="#FileSystemFetchTree">The method FileSystem.fetchFileTree now throws CoreException</a></li>
  <li><a href="#exemplarySetup">The bundle org.eclipse.equinox.p2.exemplarysetup has been removed</a></li>
+ <li><a href="#objectContribution">Object Contributions will not execute from a keybinding</a></li>
+ <li><a href="#spinner">Spinner now allows setting equal minimum and maximum values</a></li>
+ <li><a href="#safari">Browser on OS X now returns "webkit" as its type</a></li>
 </ol>
 
 <hr>
@@ -64,12 +67,12 @@ but results in a source incompatibility for clients originally implemented again
 <!-- ############################################## -->
 
 <h2>4. <a name="exemplarySetup">The bundle org.eclipse.equinox.p2.exemplarysetup has been removed</a></h2>
-<p><strong>What is affected:</strong>Applications or features including p2 or manually
+<p><strong>What is affected:</strong> Applications or features including p2 or manually
 starting p2.</p>
-<p><strong>Description:</strong>The bundle <tt>org.eclipse.equinox.p2.exemplarysetup</tt> 
+<p><strong>Description:</strong> The bundle <tt>org.eclipse.equinox.p2.exemplarysetup</tt> 
 has been removed from the Eclipse platform in the 3.6 release. This bundle never contained any API, 
 either real or provisional, and just contained some classes used to initialize p2 that are no longer needed. 
-There are some client applications that may be affected: 
+There are some client applications that may be affected:</p> 
 <ol>
 	<li>If you have a custom product or feature that incorporates p2 bundles directly rather 
 	than through the <tt>org.eclipse.equinox.p2.user.ui</tt> feature provided by the platform, 
@@ -77,6 +80,49 @@ There are some client applications that may be affected:
 	<li>Some advanced client applications were manually starting this bundle in order to ensure p2 
 	was started. Manual initialization of p2 is no longer needed and any such code can be removed.</li>
 </ol>
+
+<!-- ############################################## -->
+
+<h2>5. <a name="objectContribution">Object Contributions will not execute from a key binding</a></h2>
+<p><strong>What is affected:</strong> Key bindings assigned to a command backed by an object contribution action.</p>
+<p><strong>Description:</strong> A fundamental flaw in the legacy action/command bridge was fixed 
+in the 3.6 release.  While command definitionIds have been allowed on objectContributions
+so they can display key bindings while the context
+menu is up, objectContributions do not support execution using key bindings and objectContributions
+cannot be handlers for commands.  In 3.4 a leak was
+introduced that allowed some IResource based objectContributions to execute from a key binding.
+With this leak now fixed, plug-ins that wish to provide default behaviour for a key binding for
+their command must provide a handler.  This does not affect ActionSets, which will continue to
+work with key bindings when active within a perspective. 
+</p>
+An example of writing a core expression that's similar to an objectContribution can be found at
+<a href="http://wiki.eclipse.org/Menu_Contributions/IFile_objectContribution">IFile objectContribution
+Example</a>.
+<p>
+
+</p>
+
+<!-- ############################################## -->
+
+<h2>6. <a name="spinner">Spinner now allows setting equal minimum and maximum values</a></h2>
+<p><strong>What is affected:</strong> Clients dependent on the setting of a Spinner control's valid range to a single value to fail.</p>
+<p><strong>Description:</strong> Prior to Eclipse 3.6 it was not possible to set a Spinner's range of valid
+integer values to a single value.  This was done in order to be consistent with other range-based controls
+in SWT.  However the case of specifying a single integer value as the valid range for a Spinner is valid,
+so this can now be done.  Clients that were dependent on this case failing now need to check for this
+condition before setting a Spinner's maximum to a value that would match its minimum value (or vice versa),
+and not set the value in such cases.
+</p>
+
+<!-- ############################################## -->
+
+<h2>7. <a name="safari">Browser on OS X now returns "webkit" as its type</a></h2>
+<p><strong>What is affected:</strong> Clients using the result of <code>Browser.getBrowserType()</code> on OS X.</p>
+<p><strong>Description:</strong> In Eclipse 3.5.x the Browser returned "safari" as its type on OS X.  However this
+return value was not accurate since it is the WebKit framework that is embedded by the Browser control on OS X, not
+the Safari application, so it has been changed accordingly.  Clients that were using this return value to detect the
+use of a WebKit-based native browser on OS X should now detect a return value of "webkit" from <code>Browser.getBrowserType()</code>
+<em>and</em> check <code>SWT.getPlatform()</code> for a return value of either "carbon" or "cocoa".
 </p>
 
 <!-- ############################################## -->
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/removals.html b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/removals.html
index f514e07..0c536e1 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/porting/removals.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/porting/removals.html
@@ -4,7 +4,7 @@
 <meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1" type="text/css">
+<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
 <title>Deprecated API removals</title>
 </head>
 <body>
@@ -32,6 +32,8 @@ There are no API removals planned for the Eclipse project Helios (3.6) release.
 <ol>
  <li><a href="#workspaceLock">WorkspaceLock</a></li>
  <li><a href="#updateManager">Update Manager</a></li>
+ <li><a href="#incrementalProjectBuilder_getRule">IncrementalProjectBuilder#getRule()</a></li>
+ <li><a href="#luceneSearchParticipants">luceneSearchParticipants</a></li>
 </ol>
 
 <hr>
@@ -47,10 +49,13 @@ and was never intended to be used by other clients. In the 3.0 release this API
 was deprecated in favor of a more general API provided by the <code>org.eclipse.core.jobs</code>
 bundle. Invoking this API has had no effect since the 3.0 release. The specific API
 to be removed includes:
+</p>
 <ul>
 <li>The <code>org.eclipse.core.resources.WorkspaceLock</code> class.</li>
 <li>The method <code>org.eclipse.core.resources.IWorkspace#setWorkspaceLock</code></li>
 </ul>
+<p>
+For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311240">bug 311240</a>.
 </p>
 
 <!-- ############################################## -->
@@ -63,14 +68,54 @@ comprise this component will be removed from the Eclipse platform and RCP featur
 after the June 2012 release. Equinox p2 will continue to provide full compatibility
 for features and update sites created for Update Manager. The bundles to be removed
 are:
+</p>
 <ul>
 <li>org.eclipse.update.configurator</li>
 <li>org.eclipse.update.core</li>
 <li>org.eclipse.update.scheduler</li>
 <li>org.eclipse.update.ui</li>
 </ul>
+<p>
+For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311590">bug 311240</a>.
 </p>
+<!-- ############################################## -->
 
+<h3>3. <a name="incrementalProjectBuilder_getRule">IncrementalProjectBuilder#getRule()</a></h3>
+<p>
+The <code>IncrementalProjectBuilder#getRule()</code> method returned a scheduling rule 
+that was required for building the project by the builder. This method was intended to be used by the builder framework only.
+In the 3.6 release this method was deprecated in favor of a more general method <code>IncrementalProjectBuilder#getRule(int, Map)</code>. 
+The specific API to be removed includes:
+</p>
+<ul>
+<li>The method <code>org.eclipse.core.resources.IncrementalProjectBuilder#getRule()</code></li>
+</ul>
+<p>
+For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310072">bug 310072</a>.
+</p>
+<!-- ############################################## -->
+
+<h3>4. <a name="luceneSearchParticipants">luceneSearchParticipants</a></h3>
+<p>
+The extension point <code>org.eclipse.help.base.luceneSearchParticipants</code> used API classes which exposed classes from 
+Apache Lucene in their method parameters. This means that clients would be impacted with at least binary incompatibility
+if the Eclipse 
+Help system switched from Lucene 1.x to 2.x or 3.x and has caused the help system to stay on an old version of Lucene.
+In the 3.6 release this extension point and the classes it requires were deprecated. The replacement extension point
+ <code>org.eclipse.help.base.searchParticipant</code> should be used instead. 
+The specific API to be removed includes:
+</p>
+<ul>
+
+<li>The extension point org.eclipse.help.base.luceneSearchParticipants</li>
+<li>The class org.eclipse.help.search.LuceneSearchParticipant</li>
+<li>The class org.eclipse.help.search.ISearchIndex</li>
+<li>The class org.eclipse.help.search.XMLSearchParticipant</li>
+
+</ul>
+<p>
+For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311931">bug 311931</a>.
+</p>
 <!-- ############################################## -->
 
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/questions/index.html b/eclipse/plugins/org.eclipse.platform.doc.isv/questions/index.html
index aaeaf45..4b88742 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/questions/index.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/questions/index.html
@@ -91,7 +91,7 @@ Platform questions index</h1>
     wizard if I'm not adding it as a workbench extension?</a></li>
   <li><a href="../guide/dialogs_wizards_multipage.htm">How do I build a wizard
     with multiple pages?</a></li>
-  <li><a href="../guide/swt_widgets_controls.htm">What widgets are available in
+  <li><a href="../guide/swt_widgets_controls.htm">Which widgets are available in
     SWT?</a></li>
   <li><a href="../guide/swt_layouts.htm">How do I implement an SWT layout?</a></li>
   <li><a href="http://www.eclipse.org/articles/Article-Writing%20Your%20Own%20Widget/Writing%20Your%20Own%20Widget.htm">How do I implement an
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/extension-points/index.html b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/extension-points/index.html
index 02c5e0e..0e91a52 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/extension-points/index.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/extension-points/index.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Platform Extension Points</title>
@@ -28,16 +28,19 @@ of the platform infrastructure:
 </ul>
 <h3><a name="workspace"></a>Workspace</h3>
 <ul>
+  <li><a href="org_eclipse_core_filesystem_filesystems.html">org.eclipse.core.filesystem.filesystems</a></li>
   <li><a href="org_eclipse_core_resources_builders.html">org.eclipse.core.resources.builders</a>
   </li>
    <li><a href="org_eclipse_core_resources_fileModificationValidator.html">org.eclipse.core.resources.fileModificationValidator</a>
   </li>
+  <li><a href="org_eclipse_core_resources_filterMatchers.html">org.eclipse.core.resources.filterMatchers</a></li>
   <li><a href="org_eclipse_core_resources_markers.html">org.eclipse.core.resources.markers</a></li>
   <li><a href="org_eclipse_core_resources_moveDeleteHook.html">org.eclipse.core.resources.moveDeleteHook</a></li>
   <li><a href="org_eclipse_core_resources_natures.html">org.eclipse.core.resources.natures</a></li>
   <li><a href="org_eclipse_core_resources_refreshProviders.html">org.eclipse.core.resources.refreshProviders</a></li>
   <li><a href="org_eclipse_core_resources_teamHook.html">org.eclipse.core.resources.teamHook</a></li>
-  <li><a href="org_eclipse_core_filesystem_filesystems.html">org.eclipse.core.filesystem.filesystems</a></li>
+  <li><a href="org_eclipse_core_resources_variableResolvers.html">org.eclipse.core.resources.variableResolvers</a></li>
+  <li><a href="org_eclipse_core_resources_filterMatchers.html">org.eclipse.core.resources.filterMatchers</a></li>
 </ul>
 
 <h3><a name="text"></a>Platform Text</h3>
@@ -107,6 +110,7 @@ of the platform infrastructure:
   <li><a href="org_eclipse_ui_presentationFactories.html">org.eclipse.ui.presentationFactories</a></li>
   <li><a href="org_eclipse_ui_propertiesView.html">org.eclipse.ui.propertiesView</a></li>    
   <li><a href="org_eclipse_ui_propertyPages.html">org.eclipse.ui.propertyPages</a></li>
+  <li><a href="org_eclipse_ui_services.html">org.eclipse.ui.services</a></li>
   <li><a href="org_eclipse_ui_splashHandlers.html">org.eclipse.ui.splashHandlers</a></li>
   <li><a href="org_eclipse_ui_startup.html">org.eclipse.ui.startup</a></li>
   <li><a href="org_eclipse_ui_statusHandlers.html">org.eclipse.ui.statusHandlers</a></li>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/eclipsestarter.html b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/eclipsestarter.html
index 46992f1..f1a7147 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/eclipsestarter.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/eclipsestarter.html
@@ -24,7 +24,7 @@ invoking functionality defined in plug-ins, and shutting down the platform when
 </p>
 <p>
 Clients that do not need to access any particular function, but just need to start the platform, can use
-<tt>org.eclipse.equinox.launcher.Main.run()</tt> in the bundle <tt>org.eclipse.equinox.launcher</tt>.  However, clients that need to invoke specific function should use
+<tt>org.eclipse.equinox.launcher.Main.run()</tt> in the bundle <tt>org.eclipse.equinox.launcher</tt>.  However, clients that need to invoke specific functionality should use
 <b>EclipseStarter</b>.  See the javadoc inside this class for details.
 </p>  
 </body>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/overview-platform.html b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/overview-platform.html
index b93ca9e..8021ff7 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/overview-platform.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/overview-platform.html
@@ -2,7 +2,7 @@
 
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
@@ -132,9 +132,11 @@ determining which plug-ins a given plug-in should include as prerequisites.</p>
   </tr>
   <tr>
     <td><tt>org.eclipse.core.resources<br>
+    org.eclipse.core.resources.filtermatchers<br>
     org.eclipse.core.resources.mapping<br>
     org.eclipse.core.resources.refresh<br>
-    org.eclipse.core.resources.team</tt></td>
+    org.eclipse.core.resources.team<br>
+    org.eclipse.core.resources.variableresolvers</tt></td>
     <td><tt>org.eclipse.core.resources</tt></td>
     <td>&nbsp;</td>
   </tr>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html
index 9819292..b6080fb 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html
@@ -80,6 +80,25 @@ line arguments. </p>
   <dt>-keyring &lt;location&gt; (Runtime)</dt>
   <dd>the location of the authorization database on disk. This argument has to
     be used together with the -password argument. </dd>
+  <dt><a name="launcherdefaultaction" id="launcherdefaultaction"></a>--launcher.defaultAction &lt;option&gt; (Executable)</dt>
+  <dd>specifies the default action to take when the launcher is started without
+  any &quot;-&quot; arguments on the command line.  Currently the only supported 
+  value is &quot;openFile&quot;.  The &quot;openFile&quot; option tells the 
+  launcher that if it is called with a command line that only contains arguments 
+  that do not start with &quot;-&quot;, then those arguments should be treated as if they 
+  followed &quot;--launcher.openFile&quot;.
+  <pre>  eclipse myFile.txt</pre>
+  This is the kind of command line the launcher will receive on windows when you double click a 
+  file that is associated with eclipse, or you select and choose &quot;Open With&quot; or
+  &quot;Send To&quot; Eclipse.
+  </dd>
+
+  <dt><a name="launcheropenfile" id="launcheropenfile"></a>--launcher.openFile &lt;space separated list of files&gt; (Executable)</dt>
+  <dd>a space separated list of files to pass to the application.  This option is
+  typically used to pass a list of files to be opened by an Eclipse application.
+  This option requires SWT in order to fire the necessary SWT_OPENDOC event for
+  the files that are specified.  Relative paths will be resolved first against the current
+  working directory, and second against the eclipse program directory.</dd>
   <dt>--launcher.library &lt;location&gt; (Executable)</dt>
   <dd>the location of the eclipse executable's companion shared
 library.&nbsp; If not specified the executable looks in the plugins
@@ -101,6 +120,11 @@ unattended situation.</dd>
 secondary thread.&nbsp; This should used if a swing application is
 being run. <span style="font-weight: bold;">SWT will NOT work</span>
 if this option is specified.</dd>
+  <dt><a name="launchertimeout" id="launchertimeout"></a>--launcher.timeout &lt;value&gt; (Executable)</dt>
+  <dd>a timeout value for how long the launcher should spend trying to 
+  communicate with an already running eclipse before the launcher gives up and 
+  launches a new eclipse instance. Default is 60 (seconds).
+  </dd>
   <dt>--launcher.XXMaxPermSize &lt;value&gt; (Executable)</dt>
   <dd>If specified, and the executable detects that the VM being used
 is a Sun VM, then the launcher will automatically add the
@@ -108,7 +132,8 @@ is a Sun VM, then the launcher will automatically add the
 capable of detecting Sun VMs on all platforms.<br>
   </dd>
   <dt>-name &lt;string&gt;</dt>
-  <dd>The name to be displayed in task bar item when the application starts up. When not set, the name is the name of the executable.</dd>
+  <dd>The name to be displayed in the task bar item for the splash screen when the application starts up (not applicable on Windows). 
+  Also used as the title of error dialogs opened by the launcher.  When not set, the name is the name of the executable.</dd>
   <dt>-nl &lt;locale&gt; (OSGi)</dt>
   <dd>equivalent to setting <a href="#osginl">osgi.nl</a> to &lt;locale&gt;</dd>
   <dt>-noExit (OSGi)</dt>
@@ -806,7 +831,7 @@ will force eclipse to reinitialize these caches.</dd>
   even if they are listed as possible. For example, it is unreasonable to expect
   a plug-in focused on user data (e.g., the Eclipse Resources plug-in) to do much
   if the instance area is not defined. It is up to plug-in developers to choose
-  the setups they support and design their function accordingly.</p>
+  the setups they support and design their functionality accordingly.</p>
 <dl>
     <dt>@none</dt>
     <dd>Indicates that the corresponding location should never be set either
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Guide.xml b/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Guide.xml
index 2de3903..26cd0b9 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Guide.xml
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Guide.xml
@@ -171,6 +171,7 @@
 		<topic label="Project-scoped preferences" href="guide/resInt_preferences.htm" />
 		<topic label="File encoding and content types" href="guide/resInt_content.htm" />
 		<topic label="Linked resources" href="guide/resInt_linked.htm" />
+		<topic label="Resources filters" href="guide/resInt_filters.htm" />
 		<topic label="Resource markers" href="guide/resAdv_markers.htm" />
 		<topic label="Modifying the workspace" href="guide/resAdv_modify.htm" >
 			<topic label="Batching resource changes" href="guide/resAdv_batching.htm" />
@@ -192,6 +193,7 @@
 			<topic label="User interface support in other file systems" href="guide/wrkAdv_efs_resources.htm" />
 			<topic label="File system providers" href="guide/resAdv_efs_providers.htm" />
 		</topic>
+		<topic label="Dynamic path variables" href="guide/resAdv_variables.htm" />
 	</topic>
 
 	<topic label="Advanced workbench concepts" href="guide/wrkAdv.htm">
@@ -384,6 +386,8 @@
 				<topic label="Table of contents (toc) files" href="guide/ua_help_content_toc.htm" />
 				<topic label="Help server and file locations" href="guide/ua_help_content_files.htm" />
 				<topic label="Completing the plug-in manifest" href="guide/ua_help_content_manifest.htm" />
+    <topic href="guide/ua_help_content_criteria.htm" label="Adding criteria to help content">
+    </topic>
 				<topic label="Building nested documentation structures" href="guide/ua_help_content_nested.htm" />
 				<topic label="Contributing XHTML help documents" href="guide/ua_help_content_xhtml.htm" />
 				<topic label="Remote Help" href="guide/ua_help_content_remote.htm" />				
@@ -430,6 +434,8 @@
 		</topic>
 	</topic>
  <topic href="guide/p2_overview.htm" label="Provisioning platform, p2">
+    <topic href="guide/p2_api_overview.htm" label="API Overview">
+    </topic>
     <topic href="guide/p2_metadata.html" label="Metadata management">
        <topic href="guide/p2_publisher.html" label="Publishing metadata">
        </topic>
@@ -437,6 +443,8 @@
        </topic>
        <topic href="guide/p2_customizing_metadata.html" label="Customizing metadata">
        </topic>
+       <topic href="guide/p2_actions_touchpoints.html" label="Provisioning Actions and Touchpoints">
+       </topic>
     </topic>
     <topic href="guide/p2_director.html" label="Installation management">
     </topic>
@@ -450,6 +458,12 @@
        <topic href="guide/p2_repositorytasks.htm" label="Ant tasks for managing repositories">
        </topic>
     </topic>
+    <topic label="Customizing the p2 UI" href="guide/p2_ui.htm">
+		<topic label="Reusing parts of the UI" href="guide/p2_uireuse.htm" />
+		<topic label="Configuring the UI Policy" href="guide/p2_uipolicy.htm" />
+		<topic label="Forced update on startup" href="guide/p2_startup.htm" />
+	</topic>
+    
  </topic>
 
 	<topic label="Packaging and delivering Eclipse based products" href="guide/product.htm">
@@ -464,6 +478,7 @@
 		<topic label="Product extensions" href="guide/product_extension.htm" />
 		<topic label="Updating a product or extension" href="guide/product_update.htm" />
 		<topic label="Deploying eclipse based application with Java Web Start" href="guide/java_web_start.htm"/>
+		<topic label="Associate and open files with an eclipse based application" href="guide/product_open_file.htm"/>
 	</topic>
 	
 	<topic label="Building a Rich Client Platform application" href="guide/rcp.htm">
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Reference.xml b/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Reference.xml
index 4895dc1..25a72fd 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Reference.xml
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/topics_Reference.xml
@@ -39,9 +39,12 @@
       <topic label="org.eclipse.core.filesystem.provider" href="reference/api/org/eclipse/core/filesystem/provider/package-summary.html"/>
       <topic label="org.eclipse.core.net.proxy" href="reference/api/org/eclipse/core/net/proxy/package-summary.html"/>
       <topic label="org.eclipse.core.resources" href="reference/api/org/eclipse/core/resources/package-summary.html"/>
+      <topic label="org.eclipse.core.resources.filtermatchers" href="reference/api/org/eclipse/core/resources/filtermatchers/package-summary.html"/>
       <topic label="org.eclipse.core.resources.refresh" href="reference/api/org/eclipse/core/resources/refresh/package-summary.html"/>
-      <topic label="org.eclipse.core.resources.team" href="reference/api/org/eclipse/core/resources/team/package-summary.html"/>
       <topic label="org.eclipse.core.resources.mapping" href="reference/api/org/eclipse/core/resources/mapping/package-summary.html"/>
+      <topic label="org.eclipse.core.resources.team" href="reference/api/org/eclipse/core/resources/team/package-summary.html"/>
+      <topic label="org.eclipse.core.resources.variableresolvers" href="reference/api/org/eclipse/core/resources/variableresolvers/package-summary.html"/>
+      <topic label="org.eclipse.core.resources.filterMatchers" href="reference/api/org/eclipse/core/resources/variableresolvers/package-summary.html"/>
       <topic label="org.eclipse.core.runtime" href="reference/api/org/eclipse/core/runtime/package-summary.html"/>
       <topic label="org.eclipse.core.runtime.adaptor" href="reference/api/org/eclipse/core/runtime/adaptor/package-summary.html"/>
       <topic label="org.eclipse.core.runtime.content" href="reference/api/org/eclipse/core/runtime/content/package-summary.html"/>
@@ -68,6 +71,7 @@
       <topic label="org.eclipse.equinox.http.servlet" href="reference/api/org/eclipse/equinox/http/servlet/package-summary.html"/>
       <topic label="org.eclipse.equinox.jsp.jasper" href="reference/api/org/eclipse/equinox/jsp/jasper/package-summary.html"/>
       <topic label="org.eclipse.equinox.jsp.jasper.registry" href="reference/api/org/eclipse/equinox/jsp/jasper/registry/package-summary.html"/>
+      <topic label="org.eclipse.equinox.p2.core" href="reference/api/org/eclipse/equinox/p2/core/package-summary.html"/>
       <topic label="org.eclipse.equinox.p2.core.spi" href="reference/api/org/eclipse/equinox/p2/core/spi/package-summary.html"/>
       <topic label="org.eclipse.equinox.p2.engine" href="reference/api/org/eclipse/equinox/p2/engine/package-summary.html"/>
       <topic label="org.eclipse.equinox.p2.engine.query" href="reference/api/org/eclipse/equinox/p2/engine/query/package-summary.html"/>
@@ -297,12 +301,15 @@
        <topic label="org.eclipse.core.filesystem.filesystems" href="reference/extension-points/org_eclipse_core_filesystem_filesystems.html"/>
        <topic label="org.eclipse.core.resources.builders" href="reference/extension-points/org_eclipse_core_resources_builders.html"/>
        <topic label="org.eclipse.core.resources.fileModificationValidator" href="reference/extension-points/org_eclipse_core_resources_fileModificationValidator.html"/>
+       <topic label="org.eclipse.core.resources.filterMatchers" href="reference/extension-points/org_eclipse_core_resources_filterMatchers.html"/>
        <topic label="org.eclipse.core.resources.markers" href="reference/extension-points/org_eclipse_core_resources_markers.html"/>
        <topic label="org.eclipse.core.resources.modelProviders" href="reference/extension-points/org_eclipse_core_resources_modelProviders.html"/>
        <topic label="org.eclipse.core.resources.moveDeleteHook" href="reference/extension-points/org_eclipse_core_resources_moveDeleteHook.html"/>
        <topic label="org.eclipse.core.resources.natures" href="reference/extension-points/org_eclipse_core_resources_natures.html"/>
        <topic label="org.eclipse.core.resources.refreshProviders" href="reference/extension-points/org_eclipse_core_resources_refreshProviders.html"/>
        <topic label="org.eclipse.core.resources.teamHook" href="reference/extension-points/org_eclipse_core_resources_teamHook.html"/>
+       <topic label="org.eclipse.core.resources.variableResolvers" href="reference/extension-points/org_eclipse_core_resources_variableResolvers.html"/>
+       <topic label="org.eclipse.core.resources.filterMatchers" href="reference/extension-points/org_eclipse_core_resources_filterMatchers.html"/>
        <topic label="org.eclipse.core.runtime.adapters" href="reference/extension-points/org_eclipse_core_runtime_adapters.html"/>
        <topic label="org.eclipse.core.runtime.applications" href="reference/extension-points/org_eclipse_core_runtime_applications.html"/>
        <topic label="org.eclipse.core.runtime.contentTypes" href="reference/extension-points/org_eclipse_core_runtime_contentTypes.html"/>
@@ -453,6 +460,7 @@
        <topic label="org.eclipse.ui.presentationFactories" href="reference/extension-points/org_eclipse_ui_presentationFactories.html"/>
        <topic label="org.eclipse.ui.propertiesView" href="reference/extension-points/org_eclipse_ui_propertiesView.html"/>
        <topic label="org.eclipse.ui.propertyPages" href="reference/extension-points/org_eclipse_ui_propertyPages.html"/>
+       <topic label="org.eclipse.ui.services" href="reference/extension-points/org_eclipse_ui_services.html"/>
        <topic label="org.eclipse.ui.splashHandlers" href="reference/extension-points/org_eclipse_ui_splashHandlers.html"/>
        <topic label="org.eclipse.ui.startup" href="reference/extension-points/org_eclipse_ui_startup.html"/>
        <topic label="org.eclipse.ui.statusHandlers" href="reference/extension-points/org_eclipse_ui_statusHandlers.html"/>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/blockselection.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/blockselection.png
deleted file mode 100644
index e0e9b68..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/blockselection.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/browserclose.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/browserclose.png
new file mode 100644
index 0000000..5de069c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/browserclose.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/button-order.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/button-order.png
deleted file mode 100644
index f55c0be..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/button-order.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cairoaix.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cairoaix.png
deleted file mode 100644
index 809e361..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cairoaix.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cocoartl.PNG b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cocoartl.PNG
new file mode 100644
index 0000000..fb0d40c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/cocoartl.PNG differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/datetime-dropdown.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/datetime-dropdown.png
deleted file mode 100644
index 83cf860..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/datetime-dropdown.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/dnd.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/dnd.png
deleted file mode 100644
index f7f7ae2..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/dnd.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/editor.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/editor.png
deleted file mode 100644
index 6600d0d..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/editor.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/filtered-tree.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/filtered-tree.png
deleted file mode 100644
index a3feda3..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/filtered-tree.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/footer.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/footer.png
new file mode 100644
index 0000000..6558b14
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/footer.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/injection_graph_func.js b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/injection_graph_func.js
deleted file mode 100644
index 7216ce4..0000000
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/injection_graph_func.js
+++ /dev/null
@@ -1,463 +0,0 @@
-var skype_injection_path = 'chrome://skype_ff_toolbar_win/content/';
-var skype_tool = null;
-
-/*window.addEventListener("click",skype_click_handler,true);
-function skype_click_handler(event)
-{
-	if (skype_tool)
-		skype_tool.closemenu();
-	//HideSkypeMenuFull();
-} */
-
-//CALL BUTTON
-var SkypeActiveCallButtonPart = 0;
-function SkypeSetCallButtonPart(obj)
-{
-	if (obj.getAttribute('id') == '__skype_highlight_id_left')
-	{
-		SkypeActiveCallButtonPart = 0;
-	}
-	else if (obj.getAttribute('id') == '__skype_highlight_id_right')
-	{
-		SkypeActiveCallButtonPart = 1;
-	}
-}
-
-function SkypeSetCallButton(obj, hl, isInternational, isFax)
-{
-	var cb_part_l = null;
-	var cb_part_ml = null;
-	var cb_part_mr = null;
-	var cb_part_r = null;
-	if (obj.getAttribute('rtl') == 'false')
-	{
-		cb_part_l = obj.firstChild.firstChild;
-		cb_part_ml = obj.firstChild.lastChild;
-		cb_part_mr = obj.lastChild.firstChild;
-		cb_part_r = obj.lastChild.lastChild;
-
-		cb_flag = obj.firstChild.lastChild.firstChild;
-		if (cb_flag && cb_flag.isSameNode(obj.firstChild.firstChild.firstChild) == true)
-			cb_flag = null;
-	}
-	else
-	{
-		cb_part_l = obj.lastChild.lastChild;
-		cb_part_ml = obj.lastChild.firstChild;
-		cb_part_mr = obj.firstChild.lastChild;
-		cb_part_r = obj.firstChild.firstChild;
-
-		cb_flag = obj.lastChild.firstChild.lastChild;
-		if (cb_flag && cb_flag.isSameNode(obj.lastChild.lastChild.lastChild) == true)
-			cb_flag = null;
-	}
-
-	if (hl == 1)
-	{
-		cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_l.gif')";
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_m.gif')";
-		cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_m.gif')";
-
-
-		if (isInternational == "0")
-		{
-			if (SkypeActiveCallButtonPart == 0)    //left
-			{
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseonflag_r"+(isFax?"_fax":"")+".gif')";
-				//shadow
-				if (cb_flag)
-				{
-					cb_flag.style.top = '1px';
-					cb_flag.style.left = '1px';
-					/*top right bottom left*/
-					cb_flag.style.padding = '1px 0px 0px 1px';//'2px 0px 0px 0px';
-				}
-			}
-			else                            //right
-			{
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_r"+(isFax?"_fax":"")+".gif')";
-				//flag
-				if (cb_flag)
-				{
-					cb_flag.style.top = '0px';
-					cb_flag.style.left = '0px';
-					cb_flag.style.padding = '0px 1px 1px 0px';//'0px 1px 1px 0px';
-					cb_flag.style.margin = '0px 0px 2px 0px;';
-				}
-			}
-		}
-		else
-		{
-			cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_r"+(isFax?"_fax":"")+".gif')";
-			//flag
-			if (cb_flag)
-			{
-				cb_flag.style.top = '0px';
-				cb_flag.style.left = '0px';
-				cb_flag.style.padding = '0px 1px 1px 0px';
-				cb_flag.style.margin = '0px 0px 2px 0px;';
-			}
-		}
-	}
-	else
-	{
-		cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_l.gif')";
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_m.gif')";
-		cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_m.gif')";
-		cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_r"+(isFax?"_fax":"")+".gif')";
-
-		//flag
-		if (cb_flag)
-		{
-			cb_flag.style.top = '0px';
-			cb_flag.left = '0px';
-			cb_flag.style.padding = '0px 1px 1px 0px';
-			cb_flag.style.margin = '0px 0px 2px 0px;';
-		}
-	}
-}
-var skype_cb_l = '';
-var skype_cb_m = '';
-var skype_cb_r = '';
-
-function SkypeSetCallButtonPressed(obj, pr, isInternational, isFax)
-{
-	var cb_part_l = null;
-	var cb_part_ml = null;
-	var cb_part_mr = null;
-	var cb_part_r = null;
-	if (obj.getAttribute('rtl') == 'false')
-	{
-		cb_part_l = obj.firstChild.firstChild;
-		cb_part_ml = obj.firstChild.lastChild;
-		cb_part_mr = obj.lastChild.firstChild;
-		cb_part_r = obj.lastChild.lastChild;
-
-		cb_flag = obj.firstChild.lastChild.firstChild;
-		if (cb_flag && cb_flag.isSameNode(obj.firstChild.firstChild.firstChild) == true)
-			cb_flag = null;
-	}
-	else
-	{
-		cb_part_l = obj.lastChild.lastChild;
-		cb_part_ml = obj.lastChild.firstChild;
-		cb_part_mr = obj.firstChild.lastChild;
-		cb_part_r = obj.firstChild.firstChild;
-
-		cb_flag = obj.lastChild.firstChild.lastChild;
-		if (cb_flag && cb_flag.isSameNode(obj.lastChild.lastChild.lastChild) == true)
-			cb_flag = null;
-	}
-	if (pr == 1)
-	{
-		skype_cb_l = cb_part_l.style.backgroundImage;//getAttribute('src');
-		skype_cb_m = cb_part_mr.style.backgroundImage;
-		skype_cb_r = cb_part_r.style.backgroundImage;//getAttribute('src');
-
-		if (isInternational == "0")
-		{
-			if (SkypeActiveCallButtonPart == 0)    //left
-			{
-				//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-				cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-				if (cb_part_l.isSameNode(cb_part_ml) != true)
-					cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-			}
-			else                            //right
-			{
-				//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-				cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-				if (cb_part_l.isSameNode(cb_part_ml) != true)
-					cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				//obj.lastChild.lastChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif');
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif')";
-			}
-		}
-		else
-		{
-			//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-			cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-			if (cb_part_l.isSameNode(cb_part_ml) != true)
-				cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-			cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				//obj.lastChild.lastChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif');
-			cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif')";
-		}
-	}
-	else
-	{
-		//obj.firstChild.firstChild.setAttribute('src', skype_cb_l);
-		cb_part_l.style.backgroundImage = skype_cb_l;
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = skype_cb_m;
-		cb_part_mr.style.backgroundImage = skype_cb_m;
-		//obj.lastChild.lastChild.setAttribute('src', skype_cb_r);
-		cb_part_r.style.backgroundImage = skype_cb_r;
-	}
-}
-
-//COMMANDS
-function SkypeToolBarInit(tb)
-{
-	skype_tool = tb;
-}
-
-function doRunCMDSkype(event, link, id, name)
-{
-	if (skype_tool)
-	{
-		if (link == 'chdial')
-		{
-			var obj=event.originalTarget;
-			if (!obj)
-				obj=event;
-
-			/*var brd=SkypeGetBounds(obj);
-		   var docelem = document.documentElement;
-		   if ((docelem.scrollTop == 0 && document.body.scrollTop != 0) || (docelem.scrollLeft == 0 && document.body.scrollLeft != 0))
-			   docelem=document.body;
-   
-		   scrollY=docelem.scrollTop;
-		   scrollX=docelem.scrollLeft;
-   
-		   var my=brd.top+16, mx=brd.left;/*brd.height*/
-
-			//var oDoc = obj.ownerDocument;
-
-			/*var obj2 = document.getBoxObjectFor(element);
-   
-		   var html_box = new XPCNativeWrapper(obj2).wrappedJSObject;
-		   if (!html_box)
-			 html_box = obj2;
-   
-		   var screenX = html_box.screenX;
-		   var screenY = html_box.screenY;
-			   */
-
-			SkypeFlagColor='rgb(184, 203, 255)';
-			skype_tool.chprefix(id, document, obj, screenY);
-		}
-		else if (link == 'copy')
-			skype_tool.copy_num(id, document);
-		else if (link == 'sms')
-			skype_tool.sms(id);
-		else if (link == 'add')
-			skype_tool.add(id, name);
-		else
-			skype_tool.call(id);
-	}
-}
-
-function runCMDSkype(link)
-{
-	HideSkypeFull();
-	doRunCMDSkype(null, link, skype_curid, skype_cur_name);
-}
-
-//FLAG TOOLTIP
-function HideSkypeFull()
-{
-	//   skype_active=false;
-	document.getElementById('skype_dc').style.visibility = "hidden";
-}
-
-function ShowSkype(event, title)
-{
-	//  skype_active=true;
-	DoShowSkype(event.pageX, event.pageY + 20, title);
-}
-
-function DoShowSkype(cX, cY, title)
-{
-	var menu = document.getElementById('skype_dc');
-	menu.firstChild.nodeValue = title;
-	menu.style.visibility = "visible";
-
-	menu.style.left = cX + 'px';
-	menu.style.top = cY + 'px';
-
-}
-var SkypeFlagColor = 'rgb(184, 203, 255)';
-function doSkypeFlag(obj, brd)
-{
-	SkypeFlagColor = brd;
-}
-
-//MENU
-var skype_curid = 0,skype_active = false,skype_showseed = 0,skype_ctm = 0,skype_cur_name = '';
-var skype_curbutton = null;
-function SkypeCheckCallButton(obj)
-{
-	var res = false;
-	if (skype_curbutton && skype_curbutton.isSameNode(obj) == true)
-		res = true;
-
-	skype_curbutton = obj;
-	return res;
-}
-
-function HideSkypeMenu()
-{                       //skype_tool.sd('HideSkypeMenu skype_active='+skype_active);
-	if (!skype_active)
-		HideSkypeMenuFull();
-	else
-		setTimeout("HideSkypeMenu()", 1000);
-}
-
-function HideSkypeMenu2(event)
-{
-	skype_showseed = 0;
-	if (!skype_active)
-		HideSkypeMenuFull();
-	else
-	{
-		skype_active = false;
-		setTimeout("HideSkypeMenu()", 1000);
-	}
-}
-
-function HideSkypeMenuFull()
-{                                 //skype_tool.sd('HideSkypeMenuFull skype_active='+skype_active);
-	/*   skype_active=false;
-	document.getElementById('skype_menu').style.visibility="hidden";*/
-}
-
-function CheckSkype()
-{
-	skype_active = true;
-}
-
-function ShowSkypeMenu(event, call_msg, id, callto, isMobile, name, x, y)
-{
-	try {
-		/*  	skype_active=true;       						//skype_tool.sd('ShowSkypeMenu skype_curid='+skype_curid+'   callto='+callto+'  id='+id);
-		if(document.getElementById('skype_menu').style.visibility!="hidden" && skype_curid==callto)//id
-		  return;
-		skype_showseed=Math.random();
-		clearTimeout(skype_ctm);
-	  var obj=event.originalTarget;
-	  if (!obj)
-		  obj=event;
-  //  	var brd=SkypeGetBounds(obj);
-		//var pcx=brd.left, pcy=brd.top+16;/*brd.height;* /   //alert(pcx+'--'+pcy);
-  
-	  scrolls=SkypeGetDivScroll(obj);
-  
-		var pcx = x+scrolls.left, pcy = y+scrolls.top;
-  
-		skype_ctm=setTimeout('DoShowSkypeMenu(\''+call_msg+'\','+skype_showseed+',"'+callto+'",'+pcx+','+pcy+','+isMobile+',"'+name+'")',0);*/
-	} catch(e) {
-	}
-}
-
-function DoShowSkypeMenu(call_msg, seed, callto, pcx, pcy, isMobile, name)
-{
-	try {                                                        //skype_tool.sd('DoShowSkypeMenu seed='+seed+'   skype_showseed='+skype_showseed);
-		/*  	if(seed!=skype_showseed)
-		  return;
-		skype_showseed=0;
-		skype_curid=callto;
-	  skype_cur_name=name;
-		var menu=document.getElementById('skype_menu');
-  
-		var my=pcy, mx=pcx;
-  
-	  var menubox=document.getBoxObjectFor(menu);
-	  //var docelem = document.documentElement;
-									//alert(menubox.height);
-									//alert('doc h='+document.height + ' y='+my+' menu h='+menubox.height);
-	  var docH=document.height;
-	  if (docH < document.documentElement.clientHeight) docH=document.documentElement.clientHeight;
-	  if (docH < document.documentElement.scrollHeight) docH=document.documentElement.scrollHeight;
-	  if (docH < document.body.clientHeight) docH=document.body.clientHeight;
-	  if (docH < document.body.scrollHeight) docH=document.body.scrollHeight;
-	  if ((my + menubox.height) > docH)
-		  my=my - 16 - menubox.height;
-	  if (my < 0) my=0;
-  //    if (document.height != 0 && (my + menubox.height) > document.height && (my + menubox.height) > document.documentElement.scrollHeight)//docelem.clientHeight)
-		  //my=document.height - menubox.height;
-  
-	  var docW=document.width;
-	  if (docW < document.documentElement.clientWidth) docW=document.documentElement.clientWidth;
-	  if (docW < document.documentElement.scrollWidth) docW=document.documentElement.scrollWidth;
-	  if (docW < document.body.clientWidth) docW=document.body.clientWidth;
-	  if (docW < document.body.scrollWidth) docW=document.body.scrollWidth;
-	  if ((mx + menubox.width) > docW)
-		  mx=document.width - menubox.width;
-	  if (mx < 0) mx=0;
-  //	if (document.width != 0 && (mx + menubox.width) > document.width && (mx + menubox.width) > document.documentElement.scrollWidth)//docelem.clientWidth)
-  
-		menu.style.left=mx+'px';
-		menu.style.top=my+'px';
-  
-	  skype_tool.doFixMenu(menu, isMobile, document);
-  
-	  menu.style.visibility="visible";  */
-	} catch(e) {
-	}
-}
-
-function SkypeSetBgColor(obj, color)
-{
-	try {
-		obj.lastChild.style.backgroundColor = color;
-	} catch(e) {
-	}
-}
-
-//UTIL
-function SkypeGetBounds(element)
-{
-	try {
-		var left = element.left;
-		var top = element.top;
-		while (!(element.tagName.toLowerCase() == 'span' && element.getAttribute('id') == '__skype_highlight_id'))
-		{
-			element = element.parentNode;
-		}
-		left = element.offsetLeft;
-		top = element.offsetTop;
-		for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
-		{
-			left += parent.offsetLeft;
-			top += parent.offsetTop;
-			if (parent.tagName.toLowerCase() == 'div')
-			{
-				left -= parent.scrollLeft;
-				top -= parent.scrollTop;
-			}
-		}
-
-
-		return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
-	} catch(e) {
-	}
-}
-
-function SkypeGetDivScroll(element)
-{
-	try {
-		var left = 0;
-		var top = 0;
-		while (!(element.tagName.toLowerCase() == 'span' && element.getAttribute('id') == '__skype_highlight_id'))
-		{
-			element = element.parentNode;
-		}
-
-		for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
-		{
-			if (parent.tagName.toLowerCase() == 'div')
-			{
-				left -= parent.scrollLeft;
-				top -= parent.scrollTop;
-			}
-		}
-
-
-		return {left: left, top: top};
-	} catch(e) {
-	}
-}
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/jnigen.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/jnigen.png
deleted file mode 100644
index 6dd493f..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/jnigen.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/link.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/link.png
deleted file mode 100644
index 952fce1..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/link.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/margins.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/margins.png
deleted file mode 100644
index e42745f..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/margins.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-mac.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-mac.png
new file mode 100644
index 0000000..f0c6717
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-mac.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-win32.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-win32.png
new file mode 100644
index 0000000..e18465a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/menu-win32.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/modified.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/modified.png
deleted file mode 100644
index f43bcbe..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/modified.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/multi-font-labels.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/multi-font-labels.png
deleted file mode 100644
index 430ecac..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/multi-font-labels.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/nautiluscopy.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/nautiluscopy.png
deleted file mode 100644
index bd491da..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/nautiluscopy.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newctab.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newctab.png
new file mode 100644
index 0000000..5fd4a5a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newctab.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newscope.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newscope.png
new file mode 100644
index 0000000..29f3e70
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/newscope.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlayimage.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlayimage.png
new file mode 100644
index 0000000..1ac7f99
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlayimage.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlaytext.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlaytext.png
new file mode 100644
index 0000000..b888539
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/overlaytext.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/printdialog.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/printdialog.png
deleted file mode 100644
index e72548f..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/printdialog.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/progress.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/progress.png
new file mode 100644
index 0000000..4abb309
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/progress.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/rss.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/rss.png
new file mode 100644
index 0000000..6ebc35c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/rss.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/search.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/search.png
deleted file mode 100644
index bbd6eee..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/search.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/see.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/see.png
new file mode 100644
index 0000000..2beb87a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/see.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/segments-chars.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/segments-chars.png
new file mode 100644
index 0000000..c29ea11
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/segments-chars.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet-prompt.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet-prompt.png
deleted file mode 100644
index ca022e8..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet-prompt.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet.png
deleted file mode 100644
index 26ca3d7..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sheet.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/showwelcome.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/showwelcome.png
deleted file mode 100644
index b5e3d16..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/showwelcome.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-intro.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-intro.png
deleted file mode 100644
index 2d6d150..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-intro.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-overview.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-overview.png
deleted file mode 100644
index b1d51e4..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/slate-overview.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/solarisx86-browser.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/solarisx86-browser.png
deleted file mode 100644
index 7495671..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/solarisx86-browser.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sttabs.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sttabs.png
new file mode 100644
index 0000000..367a814
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/sttabs.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/tablednd.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/tablednd.png
new file mode 100644
index 0000000..293dd5c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/tablednd.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/text_search.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/text_search.png
new file mode 100644
index 0000000..09a9e4e
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/text_search.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout1.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout1.png
deleted file mode 100644
index c74901a..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout1.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout2.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout2.png
deleted file mode 100644
index addd05e..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/uiabout2.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/variable-tab-stops.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/variable-tab-stops.png
new file mode 100644
index 0000000..e8248b2
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/variable-tab-stops.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webappextn.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webappextn.png
new file mode 100644
index 0000000..b252810
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webappextn.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webkitgtk.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webkitgtk.png
new file mode 100644
index 0000000..ef51c49
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/webkitgtk.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/wrap-indent.png b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/wrap-indent.png
new file mode 100644
index 0000000..8ae6df1
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/images/wrap-indent.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/platform_isv_whatsnew.html b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/platform_isv_whatsnew.html
index 59ecbe6..be8e6ed 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/platform_isv_whatsnew.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.isv/whatsNew/platform_isv_whatsnew.html
@@ -1,25 +1,25 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html lang="en">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2009. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page.">
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../book.css"  type="text/css">
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2010. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<link rel="STYLESHEET" href="../book.css"  type="text/css"/>
 <style type="text/css">
 td {border-top: solid thin black;}
 img[alt] {background-color:#ffdddd;}
 tr {vertical-align: top;}
 </style>
-<title>Eclipse Platform What's New in 3.5</title>
+<title>Eclipse Platform What's New in 3.6</title>
 </head>
 
 <body>
 
-<h1>What's New in 3.5</h1>
+<h1>What's New in 3.6</h1>
 
 <p>Here are descriptions of some of the changes of interest to plug-in developers
 made to the Eclipse <a href="#Platform">Platform</a>, <a href="#Equinox">Equinox</a> and
-<a href="#SWT">SWT</a> for the 3.5 release of Eclipse.</p>
+<a href="#SWT">SWT</a> for the 3.6 release of Eclipse.</p>
 
 <p>
 There are also many new features oriented towards end-users of the platform
@@ -31,8 +31,8 @@ section of the Workbench User Guide.
 <!-- ****************** START OF N&N TABLE ****************** -->
 <table cellpadding="10" cellspacing="0" width="600">
   <colgroup>
-  <col width="20%">
-  <col width="80%">
+  <col width="20%"/>
+  <col width="80%"/>
   </colgroup>
   <tbody>
 
@@ -44,530 +44,481 @@ section of the Workbench User Guide.
 </td>
 </tr>
 
-  <tr id="added-ds">
-    <td width="30%" valign="top" align="left"><b>Declarative services added to the platform</b></td>
-    <td width="70%" valign="top">The Eclipse rich client platform now includes an implementation 
-    of OSGi declarative services (DS). This allows a lazy-starting plug-in to make OSGi services available
-    to other plug-ins before it has been started. Finally the powerful OSGi dynamic service architecture
-    can be fully exploited in the Eclipse world of lazy activation. DS also includes support for
-    dependency injection, so services can be injected into plain old Java objects (POJOs),
-    without adding a dependency on the OSGi framework into your application code. This
-    new platform bundle is complemented by new tooling support in PDE for declarative services.
+  <tr id="test-framework-junit4"> 
+    <td width="30%" valign="top" align="left">
+      <b>Platform test framework support for JUnit 4</b>
+    </td>
+    <td width="70%" valign="top">
+      The platform's automated testing framework now supports running tests with JUnit 4.
+      The test framework previously only allowed running with JUnit version 3.
     </td>
   </tr>
 
-    <TR id="comparePlugin">
-      <TD vAlign=top align=left width="30%"><B>Compare Core Plug-in</B></TD>
-      <TD vAlign=top width="70%">Some of the patching functionality provided
-        by the compare plug-in has been refactored into a separate <code>org.eclipse.compare.core</code> plug-in
-        that can be used by headless Eclipse applications</TD>
-    </TR>
+  <tr id="headless-ext-tools">
+    <td width="30%" valign="top" align="left"><b>Headless external tool builders</b></td>
+    <td width="70%" valign="top">
+    	Launching support for Ant and external tools is provided by the new headless plug-ins
+    	<code>org.eclipse.ant.launching</code> and <code>org.eclipse.core.externaltools</code>.
+    	This allows applications without a user interface to leverage the launch support programmatically
+    	and it allows projects configured with external tool builders to be built in headless
+    	environments.
+    </td>
+   </tr>
+
+  <tr id="equinox.event.admin">
+    <td width="30%" valign="top" align="left"><b>Event admin added</b></td>
+    <td width="70%" valign="top">The OSGi event admin specification provides 
+        a general purpose event bus for posting and sending events to event 
+        handlers.  The Equinox event admin implementation has been 
+        added to the platform feature.</td>
+  </tr>
+
+  <tr id="webappextension">
+    <td width="30%" valign="top" align="left"><b>Help UI extensibility</b></td>
+    <td width="70%" valign="top">New extension points allow additional buttons and 
+    frames to be added to the help web application. In the image below the title search frame, 
+    the rightmost button and the frame below the content page are all contributed.
+      <p><img src="images/webappextn.png" alt="Help webapp showing extensions" /></p>
+    </td>
+  </tr>
 
-  <tr id="filteredtree">
-    <td width="30%" valign="top" align="left"><b>Improved look for filtered tree</b></td>
-    <td width="70%" valign="top">The button for clearing the filter field of filtered trees has
-     been moved into the text box, even for platforms that don't have a native search field with
-     this functionality. 
-     <p>For backwards compatibility reasons, existing subclasses of <code>FilteredTree</code>
-     will not get the new look automatically. Clients of the <code>FilteredTree</code> 
-     are encouraged to switch to the new look as recommended in the 
-     <a href="../porting/3.5/recommended.html#NewFilteredTreeLook">porting guide</a>.</p>  
-     <p><img src="images/filtered-tree.png" alt="New look of filter field"></p>
+  <tr id="helpfooter">
+    <td width="30%" valign="top" align="left"><b>Customizable help footer</b></td>
+    <td width="70%" valign="top"><p>The customization <tt>org.eclipse.help.base/footer</tt> allows
+    a footer to be added to the Eclipse help system. This can be used for infocenters or 
+    in Eclipse-based products.</p>
+      <p><img src="images/footer.png" alt="Eclipse Help showing footer" />.</p>
     </td>
   </tr>
 
-  <tr id="multifontlabels">
-    <td width="30%" valign="top" align="left"><b>Multiple fonts in one cell</b></td>
-    <td width="70%" valign="top">The existing owner draw support for JFace <code>TableViewer</code> and
-    <code>TreeViewer</code> has been extended to allow multiple fonts within cells. For example, this can be used to
-    highlight matching text in search results using a bold font.
-      <p><img src="images/multi-font-labels.png" alt="Table with normal and bold font within the same cells"></p>
+  <tr id="help-scoping-criteria">
+    <td width="30%" valign="top" align="left"><b>Scoping by criteria in help system</b></td>
+    <td width="70%" valign="top">The help web application now allows the table of contents, the 
+		index and the search results to be filtered by book/topic or by criteria. Criteria are defined in 
+		the table of contents or using the extension point <tt>org.eclipse.help.criteriaDefinition</tt>. The list of 
+		displayed criteria is defined at the product level. Products which do not define criteria (including 
+		the Eclipse SDK) will not show any UI for criteria.
+      <p><img src="images/newscope.png" alt="Scope dialog showing criteria." /></p>
     </td>
   </tr>
 
-  <tr id="sheets">
-    <td width="30%" valign="top" align="left"><b>Using sheets on Mac Cocoa</b></td>
-    <td width="70%" valign="top">For general prompts and dialogs regarding editors, or
-    the current Workbench window, sheets are now used on Mac Cocoa. In addition to the 
-    new style bit <code>SWT.SHEET</code>, new API has been added to <code>MessageDialog</code> 
-    and <code>MessageDialogWithToggle</code> so that clients can set the appropriate style for their dialogs.
-      <p><img src="images/sheet-prompt.png" alt="Prompting to save using a sheet" ></p>
-  </td>
+  <tr id="helpsort">
+    <td width="30%" valign="top" align="left"><b>Sorting help topics</b></td>
+    <td width="70%" valign="top">A new attribute "sort" has been added to the &lt;toc&gt; and
+    &lt;topic&gt; elements in a table of contents which causes subtopics to be sorted alphabetically when 
+    the value is set to "true".</td>
   </tr>
 
-  <tr id="jface-button-order">
-    <td width="30%" valign="top" align="left"><b>JFace dialog button order on GTK+</b></td>
-    <td width="70%" valign="top">JFace dialogs now respect the default button
-    order on the GTK+ platform.  Example: "Cancel" "OK".  It is possible to revert
-    the order used by SWT and JFace, see
-    <a href="../../org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html#buttonorder">Alternate button order</a>.
-    <p><img src="images/button-order.png" alt="Preference Dialog showing Cancel, OK"></p>
+  <tr id="rsswidget">
+    <td width="30%" valign="top" align="left"><b>Reusable intro news reader</b></td>
+    <td width="70%" valign="top">The <tt>EclipseRSSViewer</tt> class allows multiple RSS news readers to
+be easily added to an intro page.
+      <p><img src="images/rss.png" alt="RSS reader on Intro page" /></p>
     </td>
   </tr>
 
-  <tr id="checkstateprovider">
-    <td width="30%" valign="top" align="left"><b>New "check state" provider</b></td>
-    <td width="70%" valign="top">
-      JFace now has a new type of provider, called <code>ICheckStateProvider</code>, that can be used to
-      manage the checked and gray states of elements in <code>CheckboxTableViewer</code> or <code>CheckboxTreeViewer</code>
-      objects. This is useful in situations where the viewer should come up with pre-checked
-      elements, or when the check state changes are not always triggered by the user.
+
+  <tr id="see">
+    <td width="30%" valign="top" align="left"><b>See entries in keyword index</b></td>
+    <td width="70%" valign="top">See entries can now be added to the help system keyword index.
+      <p><img src="images/see.png" alt="Help webapp showing extensions" /></p>
     </td>
   </tr>
 
-  <tr id="showWelcomeCheckbox">
-    <td width="30%" valign="top" align="left"><b>Show welcome checkbox</b></td>
-    <td width="70%" valign="top">A checkbox can be added to a welcome page that will cause the 
-      welcome to show when Eclipse is restarted, even if it was closed previously. The 
-      unextended Eclipse platform does not show this checkbox, but it can be added using 
-      an intro extension that uses the class <code>AlwaysWelcomeCheckbox</code> as a content provider.
-      <p>The example below shows this checkbox added to the <b>What's New</b> page.</p>
-      <p> <img src="images/showwelcome.png" alt="Show Welcome checkbox"></p>
-     </td>
+  <tr id="helpsearchprovider">
+    <td width="30%" valign="top" align="left"><b>Extension point  for help search</b></td>
+    <td width="70%" valign="top">A new extension point <tt>org.eclipse.help.base.searchParticipant</tt>
+    has been added. This allows clients to add documents not in the html or xhtml format to the search
+    index used by the help system. This should be used in place of the deprecated extension point 
+    <tt>org.eclipse.help.base.luceneSearchParticipants</tt> which is not binary compatible across Lucene versions.	  
+	</td>
   </tr>
 
-  <tr id="helpContentFilter">
-    <td width="30%" valign="top" align="left"><b>Help content filter</b></td>
-    <td width="70%" valign="top">A new extension point <code>org.eclipse.help.webapp.contentFilter</code> 
-    allows for pre-processing of help content before it is delivered from the help server.</td>
-  </tr>
+<!-- ******************** Equinox ********************** -->
+<tr>
+<td colspan="2"><a name="Equinox"></a>
+<div style="font-size: 20px; font-weight: bold;">Equinox Changes</div>
+</td>
+</tr>
 
-   <tr id="jetty">
-    <td width="30%" valign="top" align="left"><b>Jetty version 6.1</b></td>
-    <td width="70%" valign="top">Version 6.1 of the <a href="http://www.mortbay.org/jetty/">Jetty</a> Web server is now included in the platform,
-    replacing the 5.1 version in the previous release. This brings along an implementation
-    of version 2.5 of the <code>javax.servlet</code> API, replacing the 2.4 version in the Ganymede release.
+  <tr id="multi-locale-registry"> 
+    <td width="30%" valign="top" align="left"><b>Multi-locale support in extension registry</b></td>
+    <td width="70%" valign="top">The Equinox extension registry now supports running
+    in a multi-locale mode. When running in this mode, translated extension attributes can be
+    obtained for any locale, whereas they were previously only available for the system's
+    current locale. Multi-locale mode is enabled via the <tt>-registryMultiLanguage</tt>
+    command line argument, or by setting the Java system property <tt>eclipse.registry.MultiLanguage=true</tt>.
+    <p>
+    The registry also uses a new <tt>LocaleProvider</tt> service for
+    obtaining the locale for a given execution context. This allows a system to provide
+    an alternative mechanism for computing the current locale, rather than using the
+    singleton locale defined by the Java runtime environment.
+    </p>
     </td>
   </tr>
 
-  <tr id="new-icu4j">
-    <td valign="top" align="left"><b>New release of ICU4J</b></td>
-    <td valign="top">The platform has adopted a major new release of the
-    <a href="http://icu-project.org/">ICU4J</a> localization library: version 4.0. This
-    release includes support for Unicode 5.1, and the Unicode standard 
-    <a href="http://www.unicode.org/press/pr-cldr1.6.html">Common Locale Data Repository (CLDR) 1.6</a>
-    See the ICU4J 4.0 <a href="http://icu-project.org/download/4.0.html">release notes</a> for more details.
+  <tr id="equinox.weaving">
+    <td width="30%" valign="top" align="left"><b>New Equinox weaving feature</b></td>
+    <td width="70%" valign="top">The byte code weaving work in the Equinox incubator has passed the 
+        graduation review and the major parts of the work are now part of the Equinox distribution.
+      <p>Equinox Weaving provides a general infrastructure for load-time byte code 
+        weaving for the Equinox OSGi runtime. Currently Equinox Weaving includes 
+        a weaver for AspectJ to load-time weave aspects into bundles (AspectJ Development Tools and 
+        the Scala IDE for Eclipse already use this to realize deeper integration 
+        with the Eclipse Java development tools, for example).</p>
+      <p>These four bundles are contained in the distribution:</p>
+      <ul>
+        <li><tt>org.eclipse.equinox.weaving.hook:</tt> The framework extension project 
+          containing the hooks to insert byte code weaving and caching at 
+          load-time.</li>
+        <li><tt>org.eclipse.equinox.weaving.aspectj:</tt> Contains the bridge to use 
+          AspectJ as load-time weaving implementation.</li>
+        <li><tt>org.eclipse.equinox.weaving.caching:</tt> Provides caching for woven 
+          byte code for standard Java virtual machines.</li>
+        <li><tt>org.eclipse.equinox.weaving.caching.j9:</tt> Contains an alternative 
+          cache implementation that uses IBM J9 VM shared classes for caching woven 
+          classes.</li>
+      </ul>
     </td>
   </tr>
 
-  <tr id="extensible-about">
-    <td width="30%" valign="top" align="left"><b>Extensible installation details</b></td>
-    <td width="70%" valign="top">The <b>About Dialog</b> now provides a mechanism for plug-ins to 
-       contribute <b>installation pages</b> to the platform about dialog.  The buttons for showing feature, 
-       plug-in, and configuration details have been replaced by a single <b>Installation Details</b> button.
-       <p> <img src="images/uiabout1.png" alt="About Dialog with Installation Details button" title="About Dialog"></p>
-       <p>Pushing this button will launch a dialog that shows all of the installation pages contributed by
-       plug-ins in a single <b>Installation Details</b> dialog.  Plug-ins may contribute installation pages and
-       define buttons that operate on the information in the installation page.</p>
-       <p> <img src="images/uiabout2.png" alt="Installation Details dialog showing contributions from multiple plug-ins" title="Installation Details Dialog"></p>
-       <p>The new extension point is <b>org.eclipse.platform.ui.installationPages</b>.  Example implementations
-       can be found by browsing the hierarchy of <b>org.eclipse.ui.about.InstallationPage</b>.</p>
+  <tr id="equinox.console">
+    <td width="30%" valign="top" align="left"><b>Multi-session Equinox console</b></td>
+    <td width="70%" valign="top">The Equinox console has been enhanced to 
+        allow multiple console sessions to be connected.  Previous versions of the 
+        Equinox console would only allow a single session to be connected at a time.   
+        The console only allowed for connections from two built connection types,
+        through standard in/out or though a telnet port.
+      <p>A new service interface has been introduced: 
+        <tt>org.eclipse.osgi.framework.console.ConsoleSession</tt>.  
+        Implementers of a console session register themselves as an OSGi service.
+        The console implementation will then automatically use the console session
+        for input and output of a console connection.</p>
     </td>
   </tr>
 
-  <tr id="intro_slate_theme">
-    <td width="30%" valign="top" align="left"><b>New intro theme</b></td>
-    <td width="70%" valign="top">A new intro theme called "Slate" has been added. 
-     Slate is not the default theme for Eclipse but can be specified using the 
-        preference <code>org.eclipse.ui.intro/INTRO_THEME=org.eclipse.ui.intro.universal.slate</code>. The main differences in the root page between the new
-      theme and the two existing themes are:
-      <ul>
-        <li>Each link has a label.</li>
-        <li>The images are transparent and will display well if a background is
-        added using an extension.</li>
-        <li>The page displays well at high screen resolutions.</li>
-      </ul>
-      <p> <img src="images/slate-intro.png" alt="Slate intro theme"></p>
-      <p>Non root pages also have a label for each link.</p>
-      <p> <img src="images/slate-overview.png" alt="Slate overview page."></p>
-     </td>
+  <tr id="equinox.p2.revert">
+    <td width="30%" valign="top" align="left"><b>Revert support in p2 director</b></td>
+    <td width="70%" valign="top">The p2 director application now supports reverting
+    to an earlier profile state from the command line. Use the new <tt>-revert</tt>
+    argument to specify a previous profile state to revert to.
+    </td>
   </tr>
 
-<!-- ******************** Equinox ********************** -->
+<!-- *********************** SWT *********************** -->
 <tr>
-
-<td colspan="2"><a name="Equinox"></a>
-<div style="font-size: 20px; font-weight: bold;">Equinox Changes</div>
+<td colspan="2"><a name="SWT"></a>
+<div style="font-size: 20px; font-weight: bold;">SWT Changes</div>
 </td>
 </tr>
 
-  <tr id="p2-publisher"> 
-    <td width="30%" valign="top" align="left"><b>New publisher bundle</b></td>
-    <td width="70%" valign="top"><a href="http://wiki.eclipse.org/p2">p2</a> has introduced a new bundle
-    called the publisher, which provides infrastructure for generating, packaging, and publishing metadata and artifacts
-    into p2 repositories. The publisher provides an extensible API that clients
-    can extend to perform customized publishing to repositories, and includes an <i>advice</i> mechanism for injecting
-    additional metadata into the generation and packaging process.</td>
+  <tr>
+    <td width="30%" valign="top" align="left"><b>Browser can use WebKitGTK+</b></td>
+    <td width="70%" valign="top">Linux users can now use WebKitGTK+ instead of Mozilla as the Browser control's native renderer.
+      See <a href="http://www.eclipse.org/swt/faq.php#browserwebkitgtk">Can the Browser use the WebKit renderer on GTK?</a>.
+      <p><img src="images/webkitgtk.png" alt="WebKitGTK+ Image"/></p>
+	</td>
   </tr>
 
-  <tr id="equinox-concurrency"> 
-    <td width="30%" valign="top" align="left"><b>New Equinox concurrency API</b></td>
-    <td width="70%" valign="top">This release includes a new provisional API for futures. Futures 
-      facilitate handling of concurrency and synchronization in multi-threaded and/or 
-      distributed systems. They serve as a proxy for a result that is not known, 
-      because the computation of the result is not yet complete. See the 
-      <a href="http://wiki.eclipse.org/Equinox/Futures">wiki documentation</a>
-      for more details on this new experimental concurrency API.
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Icon support for GTK Text widgets</b></td>
+    <td width="70%" valign="top">The text widget can now display the search and cancel icons inside the widget. This runs on Linux platforms with a GTK version of 2.16 or greater.
+     <p><img src="images/text_search.png" alt="Icon support"/></p>
     </td>
   </tr>
 
-  <tr id="dynamicDebugOptions"> 
-    <td width="30%" valign="top" align="left"><b>Enhanced DebugOptions</b></td>
-    <td width="70%" valign="top">The Equinox <code>DebugOptions</code> API has been enhanced
-    to support dynamic changes to option settings. Now debug option settings can be modified while
-    an application is running to facilitate problem determination and support. A new interface,
-    <code>DebugOptionsListener</code>, can be registered as a service to enable your plug-in to
-    respond to dynamic debug option changes.
-    </td>
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Mozilla browser support on Solaris SPARC</b></td>
+    <td width="70%" valign="top">Mozilla browser support has been added for the Solaris SPARC platform (Solaris 10, GTK+).</td>
   </tr>
 
-  <tr id="debugTrace"> 
-    <td width="30%" valign="top" align="left"><b>New tracing API</b></td>
-    <td width="70%" valign="top">A new debug tracing API, <code>org.eclipse.osgi.service.debug.DebugTrace</code>,
-    has been added to enhance and simply writing of debug trace messages in your code. 
-    The <code>DebugTrace</code> object will take care of writing additional trace information along
-    with your message, such as your bundle symbolic name, and the class, method, and line
-    in which the tracing message was written. This reduces clutter in the code being traced, while ensuring
-    that consistent and complete contextual information is recorded. The tracing data can
-    either be directed to a file, or written on stdout, depending on the setting of <code>DebugOptions#setFile</code>.
-    By default the Eclipse platform will write trace data to the file <code>trace.log</code> in the workspace
-    metadata location (next to the platform log file).
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Browser closing API</b></td>
+    <td width="70%" valign="top">The new API method <tt>Browser.close()</tt> is used to 
+    close a browser, but allows the close to be cancelled by an <i>onbeforeunload</i> handler.  
+	See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet326.java">Snippet 326</a>.
+     <p><img src="images/browserclose.png" alt="Browser close"/></p>
     </td>
   </tr>
 
-  <tr id="permission-admin"> 
-    <td width="30%" valign="top" align="left"><b>Security Manager enhancements</b></td>
-    <td width="70%" valign="top">This release includes an implementation of the updated Conditional Permission Admin
-    Specification included in the OSGi Service Platform Core Specification Release 4, Version 4.2.
-    This version of the specification includes enhancements to the Conditional Permission Admin service which is used to manage 
-    the permissions assigned to bundles.  The enhancements include adding the ability to grant or deny permissions based on conditions,
-    and to manage conditions as an ordered list of rules.  For more information see the <a href="http://www.osgi.org/Release4/Download">OSGi Release 4 Version 4.2 specification</a>.</td>
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Key events for F16-F20 </b></td>
+    <td width="70%" valign="top">New key event constants have been added for the keyboard function keys F16 to F20.</td> 
   </tr>
 
-  <tr id="service-hooks">
-    <td width="30%" valign="top" align="left"><b>OSGi service registry enhancements</b></td>
-    <td width="70%" valign="top">
-       This release includes an implementation of the new Service Hooks Specification
-       included in the OSGi Service Platform Core Specification Release 4, Version 4.2.  
-       Certain specialized bundles need to be able to alter 
-       output results of service layer's find and event delivery operations to 
-       affect their purpose.  The Service Hooks Specification enhances the service registry to allow 
-       service registry hooks to affect the service registry's find and event 
-       delivery operations.  
-    <p>The Service Hooks Specification is targeted at bundles which need to observe and react to
-       selected service layer operations. In general these will be highly 
-       specialized bundles written by systems programmers.  The service hooks are not 
-       intended to be used by so-called "normal" application bundles.
-       For more information see the <a href="http://www.osgi.org/Release4/Download">OSGi Release 4 Version 4.2 specification</a>.</p></td>
-  </tr>
-
-  <tr id="framework-launching">
-    <td width="30%" valign="top" align="left"><b>OSGi framework launching</b></td>
-    <td width="70%" valign="top">
-       The OSGi Service Platform Core Specification Release 4, Version 4.2 defines a standard 
-       way to launch an OSGi framework implementation.
-       This release of Equinox includes an implementation the OSGi standard launching APIs.
-       A framework implementation must provide a factory class. A factory class is 
-       an indirection to create a framework implementation object. The implementation factory 
-       class must implement the FrameworkFactory interface.  A launcher can use the following ways 
-       to get this class name:
-       <ul>
-        <li>The Java-SE Service Provider Configuration model.</li>
-        <li>Get it from some configuration and use Class.forName.</li>
-        <li>Hardcode the factory name.</li>
-       </ul>
-       To create a framework instance a launcher uses the FrameworkFactory to constructs the 
-       implementation's Framework object.  The Framework can then be
-       used to control the lifecycle of the framework (e.g. start, stop, update
-       etc.)  The <code>org.eclipse.osgi.launch.EquinoxFactory</code> class is the public
-       class in Equinox which implements the new 
-       <code>org.osgi.framework.launch.FrameworkFactory</code> interface.  
-    <p>This Release 4, Version 4.2 specification also defines standard configuration properties which all 
-       framework implementations must recognize.  This allows for a generic
-       framework launcher to be implemented that can launch any framework 
-       implementation. 
-       For more information see the <a href="http://www.osgi.org/Release4/Download">OSGi Release 4 Version 4.2 specification</a>.</p></td>
-  </tr>
-
-  <tr id="declarative-services">
-    <td width="30%" valign="top" align="left"><b>OSGi Declarative Services Changes</b></td>
-    <td width="70%" valign="top">
-      This release includes an implementation of the updated Declarative Services
-      Specification included in the OSGi Service Platform Core Specification Release 4, Version 4.2.
-      The following list highlights the changes to Declarative Services for Version 4.2 of the 
-      OSGi Specification:
-      <ul>
-        <li>The definition of the <code>Service-Component</code> header now uses the definition of a 
-	  header from the module layer. It also allows wild-cards to be used in the 
-	  last component of  the path of a header entry.</li>
-        <li>The DS runtime now follows the recommendations of Property Propagation and
-	   does not propagate properties whose names start with '.' to service properties. </li>
-        <li>The component description now allows for a configuration policy to 
-	  control whether component configurations are activated when configuration 
-	  objects are present or not.</li>
-        <li>The component description now allows the names of the activate and 
-	  deactivate methods to be specified. The signatures of the activate and 
-	  deactivate methods are also modified.</li>
-        <li>Additional signatures of the bind and unbind methods have been added.</li>
-        <li>The definition of accessible methods for activate, deactivate, bind and 
-	  unbind methods is expanded to include any method accessible from the 
-	  component implementation class. This allows private and package 
-	  private method declared in the component implementation class to be 
-	  used.</li>
-        <li>The XML schema and name space have been updated to v1.1.0. It now 
-	  allows for wild-carded attributes and elements for extensibility. The 
-	  name attribute of the component element is now optional and the 
-	  default value of this attribute is the value of the class attribute of the 
-	  nested implementation element. The name attribute of the reference 
-	  element is now optional and the default value of this attribute is the 
-	  value of the interface attribute of the reference element. The Char type 
-	  for the property element has been renamed Character to match the Java 
-	  type name. The attributes configuration-policy, activate and deactivate 
-	  have been added to the component element.</li>
-        <li>When logging error messages, SCR now uses a <code>LogService</code> obtained 
-	  using the component's bundle context so that the resulting log entry is 
-	  associated with the component's bundle. </li>
-        <li>Target properties are now component properties that can be set 
-	  wherever component properties can be set, including configurations.</li>
-      </ul>
-    <p>
-       For more information see the <a href="http://www.osgi.org/Release4/Download">OSGi Release 4 Version 4.2 specification</a>.
-    </p></td>
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>DND insertion feedback for tables</b></td>
+    <td width="70%" valign="top">The default drop target effect for Table now supports <tt>DND.FEEDBACK_INSERT_BEFORE</tt>
+      and <tt>DND.FEEDBACK_INSERT_AFTER</tt>.
+     <p><img src="images/tablednd.png" alt="desc"/></p>
+    </td> 
   </tr>
 
-  <tr id="OSGiR42">
-    <td width="30%" valign="top" align="left"><b>New core framework API</b></td>
-    <td width="70%" valign="top">
-        The OSGi Service Platform Core Specification Release 4, Version 4.2 is adding a number of small API additions
-        to the core Framework.  The following is a list of API additions included in this release.
-        <br>
-        <dl>
-          <dt><b>org.osgi.framework.Bundle#getVersion()</b></dt> 
-            <dd>Returns the Version of a bundle.</dd>
-          <dt><b>org.osgi.framework.Bundle#getSignerCertificates()</b></dt>
-            <dd>Returns the signers of a bundle.</dd>
-          <dt><b>org.osgi.framework.BundleException#getType()</b></dt>
-            <dd>Returns the error type for a BundleException.  For example, a resolver error.</dd>
-          <dt><b>org.osgi.framework.BundleReference</b></dt>
-            <dd>Interface which must be implemented by bundle classloaders.  This gives clients the ability to determine what bundle a ClassLoader is for.</dd>
-          <dt><b>org.osgi.framework.Constants</b></dt>
-            <dd>A number of new constants have been added to define standard launching configuration properties.</dd>
-          <dt><b>org.osgi.framework.FrameworkEvent</b></dt>
-            <dd>A number of new FrameworkEvent types have been added give launchers standard notification when a framework is stopped or restarted.</dd>
-          <dt><b>org.osgi.framework.FrameworkUtil#getBundle(Class)</b></dt>
-            <dd>Utility to get a Bundle object for a given class.  A static method equivalent to the PackageAdmin#getBundle(Class) method.</dd>
-          <dt><b>org.osgi.framework.FrameworkUtil#matchDistinguishedNameChain(String, List)</b></dt>
-            <dd>Utility to match a certificate chain against a pattern.  This is used for permission and condition checks against signed bundles.</dd>
-          <dt><b>org.osgi.framework.ServiceEvent</b></dt>
-            <dd>A new ServiceEvent type has been added to indicate the properties of a registered service have been modified and the new
-            properties no longer match a listener's filter.</dd>
-          <dt><b>org.osgi.framework.ServiceException</b></dt>
-            <dd>A new ServiceException type has been added to indicate that a service problem occurred.</dd>
-          <dt><b>org.osgi.util.tracker.BundleTracker</b></dt>
-            <dd>The BundleTracker class simplifies tracking bundles much like the ServiceTracker simplifies tracking services.</dd>     
-        </dl>
-    </td>
-  </tr>
-
-  <tr id="rfc132">
-    <td width="30%" valign="top" align="left"><b>Composite bundles</b></td>
-    <td width="70%" valign="top">
-        This release includes an implementation of the Composite Bundles specification.  
-        The Composite Bundles specification is a proposed specification for the OSGi 
-        Release 4, Version 4.2 specification.  In a large system built upon a large number of modules, 
-        sometimes it is necessary to provide a mechanism for isolating the various 
-        modules from each other at runtime. Composite Bundles introduces a concept  
-        to provide isolation for a group of bundles.
-        <p>  
-        Conceptually a composite bundle is composed of 
-        a set of bundles which are contained in another (nested) framework instance.
-        New API is introduced in the <code>org.osgi.service.framework</code> package to 
-        manage composite bundles.  The <code>CompositeBundleFactory</code> service interface is 
-        used to install composite bundles.  The <code>CompositeBundle</code> interface is used to 
-        manage the bundles which compose a composite bundle.
-        </p>
-        <p>
-        For more information see the <a href="http://www.osgi.org/Release4/Download">OSGi Release 4 Version 4.2 specification</a>.
-        </p>
-        <p>
-        <b>Note:</b> The API introduced in the <code>org.osgi.service.framework</code> package 
-        is a proposed OSGi API.  This API is considered provisional in Equinox and 
-        may change drastically or be dropped altogether in a future release of 
-        Equinox.  We encourage use of the API and any feedback on the 
-        specification, but consumers must be aware that breaking changes may occur
-        in a future release. 
-        </p>  
-    </td>
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Horizontal mouse wheel</b></td>
+    <td width="70%" valign="top">New event constants have been added for horizontal
+    mouse wheels. See <tt>SWT.MouseHorizontalWheel</tt> and <tt>SWT.MouseVerticalWheel</tt>.</td> 
   </tr>
 
-<!-- *********************** SWT *********************** -->
-<tr>
-<td colspan="2"><a name="SWT"></a>
-<div style="font-size: 20px; font-weight: bold;">SWT Changes</div>
-</td>
-</tr>
+  <tr> 
+    <td width="30%" valign="top" align="left"><b>Variable tab stops in StyledText</b></td>
+    <td width="70%" valign="top">New API in StyledText allows the application to specify a non-uniform sequence of tab stops.
+	See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet325.java">Snippet 325</a>.
+     <p><img src="images/sttabs.png" alt="desc"/></p>
+    </td> 
+   </tr>
+
+  <tr id="styledtext-variable-tab-stops">
+    <td width="30%" valign="top" align="left">
+      <b>StyledText: per line variable tab stops</b>
+    </td>
+    <td width="70%" valign="top">
+      Tab stop support in <tt>StyledText</tt> has been improved to allow each line to have its own sequence of tab stops.
+	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet328.java">Snippet 328</a> 
+	  has been modified from Snippet325 to show this.
+     <p><img src="images/variable-tab-stops.png" alt="Multi-line variable tab stops in a StyledText"/></p>
+    </td> 
+  </tr>
 
-    <TR id="cairoAIX">
-      <TD vAlign=top align=left width="30%"><B>Cairo on AIX</B></TD>
-      <TD vAlign=top width="70%">Cairo support has been added to Eclipse on AIX.
-        This enables advanced graphics support on AIX.
-        <P><IMG alt="Cairo on AIX" src="images/cairoaix.png" ></p></TD>
-    </tr>
-	<tr id="jni-generator"> 
-    <td width="30%" valign="top" align="left"><b>JNI Generator</b></td>
-    <td width="70%" valign="top">A new plug-in based tool has been added to simplify the process of generating the SWT JNI code. 
-    	For more info click <a href="http://www.eclipse.org/swt/jnigen.php">here</a>.
-     <p><img src="images/jnigen.png" alt="Cairo on AIX"></p>
-	 </td>
+  <tr id="swt-clabel-margins">
+    <td width="30%" valign="top" align="left"><b>CLabel set/get margins</b></td>
+    <td width="70%" valign="top">New API has been added to <tt>CLabel</tt> to set and get the left, top, right and bottom margin spacing.
+    </td> 
   </tr>
 
-  <tr id="blockselection">
-    <td width="30%" valign="top" align="left"><b>Block selection in StyledText</b></td>
-    <td width="70%" valign="top"><code>StyledText</code> can be switched into block selection mode with new API <code>StyledText.setBlockSelection(true)</code>.
-	<p>
-	  <img src="images/blockselection.png" alt="Block Selection in StyledText">
-	</p>
+  <tr id="swt-key-location">
+    <td width="30%" valign="top" align="left">
+      <b>Key location</b>
     </td>
+    <td width="70%" valign="top">
+		A new field has been added to <code>KeyEvent</code> to allow the application 
+		to identify which keyboard key originated the event, for example, right or left shift key.
+		See <code>KeyEvent.keyLocation</code> for details.
+    </td> 
   </tr>
 
-   <tr id="jstojava">
-    <td width="30%" valign="top" align="left"><b>JavaScript-to-Java</b></td>
-    <td width="70%" valign="top">JavaScript can now call out to Java in the <code>Browser</code> widget.
-    Supported types are numbers, booleans, strings, null, and arrays (example 
-    <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet307.java?view=co">
-    snippet</a>).
+  <tr id="swt-scrollbar-api">
+    <td width="30%" valign="top" align="left">
+      <b>New API in Scrollbar</b>
     </td>
+    <td width="70%" valign="top">
+      New methods have been added to <tt>Scrollbar</tt> to return the bounds for the thumb and its track.
+      See <code>ScrollBar.getThumbBounds()</code> and <code>ScrollBar.getThumbTrackBounds()</code>.
+    </td> 
   </tr>
 
-   <tr id="javatojs">
-    <td width="30%" valign="top" align="left"><b>Improved Java-to-JavaScript</b></td>
-    <td width="70%" valign="top">Java can now call into JavaScript.  An expression is evaluated in the context of a Browser document and 
-     a value is returned.  Supported types are numbers, booleans, strings, null's, and arrays (example 
-    <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet308.java?view=co">
-    snippet</a>).
+  <tr id="state-mask-selection-event">
+    <td width="30%" valign="top" align="left">
+      <b>State mask for selection events</b>
     </td>
-  </tr>  
+    <td width="70%" valign="top">
+	<tt>SelectionEvent.stateMask</tt> is now set on selection and default selection events for all native controls.
+    </td> 
+  </tr>
 
-   <tr id="caretListener">
-    <td width="30%" valign="top" align="left"><b>New caret listener</b></td>
-    <td width="70%" valign="top">New API has been added to <code>StyledText</code> to allow you to listen for changes in the caret offset.
-    See <code>StyledText.addCaretListener()</code> and <code>StyledText.removeCaretListener()</code> for more information.
+  <tr id="styledtext-orientation-event">
+    <td width="30%" valign="top" align="left">
+      <b>Orientation event</b>
     </td>
+    <td width="70%" valign="top">
+	A new event has been added to <tt>Text</tt>, <tt>Combo</tt>, and <tt>StyledText</tt>. It is sent when the writing direction is changed via keyboard shortcut.
+        See <code>SWT.OrientationChanged</code>
+    </td> 
+  </tr>
+
+  <tr id="browser-post-data">
+    <td width="30%" valign="top" align="left"><b>Browser.setUrl() can specify post data and headers</b></td>
+    <td width="70%" valign="top">The new API <code>Browser.setUrl(String url, String postData, String[] headers)</code> allows clients
+      to include post data and add/override header values when initiating HTTP requests.  See
+      <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet330.java">Snippet 330</a> for an example.
+    </td> 
   </tr>
 
-   <tr id="texteditor">
-    <td width="30%" valign="top" align="left"><b>New text editor demo</b></td>
-    <td width="70%" valign="top">This new example makes extensive use of <code>StyledText</code> to demonstrate how it can be
-	used to create a multi-font rich text editor with bullets, links and embedded objects.
-    	<p>
-	  		<img src="images/editor.png" alt="Text Editor">
-		</p>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Wrap indent in StyledText</b>
     </td>
-  </tr>    
+    <td width="70%" valign="top">
+      <tt>StyledText</tt> and <tt>TextLayout</tt> now offer API to allow the application 
+      to control the amount of indent space for wrapped lines.
+      See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet331.java">Snippet 331</a>.
+      <p><img src="images/wrap-indent.png" alt="Wrap Indent"/></p>
+    </td> 
+  </tr>
 
-  <tr id="swtsearch">
-    <td width="30%" valign="top" align="left"><b>Improved search field</b></td>
-    <td width="70%" valign="top">The <code>SWT.SEARCH</code> style is now supported on 
-	all platforms, allowing the application to display a text message when 
-	the control is awaiting input. The <code>SWT.ICON_SEARCH</code> and 
-	<code>SWT.ICON_CANCEL</code> hints control the appearance of the search field (example 
-	<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet309.java?view=co">
-	snippet</a>).
-	<p><img src="images/search.png" alt="Text with SWT.SEARCH"></p></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Improved bidi segments support</b>
+    </td>
+    <td width="70%" valign="top">
+      The bidi segments support in <tt>StyledText</tt> and <tt>TextLayout</tt> was changed 
+      to allow the application to specify which Unicode Control Characters to use in the segments boundaries.
+      See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet332.java">Snippet 332</a>.
+      <p><img src="images/segments-chars.png" alt="Improved Bidi Segments support"/></p>
+    </td> 
   </tr>
 
-  <tr id="nautilus-copypaste"> 
-    <td width="30%" valign="top" align="left"><b>Improved copy and paste 
-	support</b></td>
-    <td width="70%" valign="top">Support has been added to the <code>FileTransfer</code> 
-	class to allow for copy/paste operations between the Explorer and 
-	the Nautilus file manager.
-     <p><img src="images/nautiluscopy.png" alt="Nautilus copy"></p></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Right-to-Left text support on Cocoa</b>
+    </td>
+    <td width="70%" valign="top">
+      On Cocoa, setting the <code>SWT.RIGHT_TO_LEFT</code> flag changes the default text reading direction to right to left. 
+      <p><img src="images/cocoartl.PNG" alt="Right-to-Left text support on Cocoa"/></p>
+    </td> 
   </tr>
 
-  <tr id="stlinks"> 
-    <td width="30%" valign="top" align="left"><b>Links in StyledText</b></td>
-    <td width="70%" valign="top"><code>StyledText</code> now allows users to add
-	hyperlinks to the text in the widget. 
-     <p><img src="images/link.png" alt="Link in StyledText"></p></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Skin engine support</b>
+    </td>
+    <td width="70%" valign="top">
+      New API added to allow CSS engines to skin widgets at the appropriate time 
+      (See <code>SWT.Skin</code> and <code>Widget.reskin(int)</code>). For more info see 
+      <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet333.java">Snippet 333</a>. 
+
+    </td> 
   </tr>
 
-  <tr id="setMargins">
-    <td width="30%" valign="top" align="left"><b>StyledText margin spacing and color</b></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>New layout API</b>
+    </td>
     <td width="70%" valign="top">
-		New API has been added to <code>StyledText</code> to set margin spacing and color. 
-		See <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet316.java?revision=1.1&amp;view=markup">Snippet316</a>.
-		<p><img src="images/margins.png" alt="StyledText with margins"></p>
-	</td>
+	New API added to <code>Composite</code> to support automatic deferred layout.
+        See <code>Composite.layout(Control[], int)</code>.
+    </td> 
   </tr>
   
-  <tr id="disablescript">
-    <td width="30%" valign="top" align="left"><b>Disabling Javascript</b></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Browser.setText() can restrict content permissions</b>
+    </td>
     <td width="70%" valign="top">
-		Javascript can be disabled from running in a Browser with the new API <code>Browser.setJavascriptEnabled(boolean)</code>.
-	</td>
+        New Browser API <code>setText(String html, boolean trusted)</code> allows clients to 
+        restrict the permissions that are given to Browser content that is set from a String.  
+        Restricting permissions is suggested when the source of the content is not trusted.
+    </td> 
   </tr>
 
-  <tr id="cookies">
-    <td width="30%" valign="top" align="left"><b>Browser wants a cookie</b></td>
+  <tr id="swt-accessibility"> 
+    <td width="30%" valign="top" align="left">
+      <b>Accessibility upgrade</b>
+    </td>
     <td width="70%" valign="top">
-		Cookies can be created and accessed in the Browser with new API <code>Browser.setCookie()</code> and <code>Browser.getCookie()</code>.
-	</td>
+    SWT Accessibility has new API for making applications more accessible to Assistive 
+    Technology products such as screen readers.
+    The new API can be found in the <code>org.eclipse.swt.accessibility</code> package.
+    For examples, see the <code>org.eclipse.swt.examples.accessibility</code> package, and the 
+    <a href="http://www.eclipse.org/swt/snippets/#accessibility">Accessibility snippets</a>.
+	</td> 
   </tr>
 
-  <tr id="authlistener">
-    <td width="30%" valign="top" align="left"><b>Authentication listener</b></td>
+  <tr id="swt.opendoc.event"> 
+    <td width="30%" valign="top" align="left">
+      <b>SWT.OpenDoc Event</b>
+    </td>
     <td width="70%" valign="top">
-		Browser clients can now provide a listener that responds to basic authentication challenges.  This is 
-		useful for enabling users to access sites without presenting them with a manual authentication prompter.
-		See <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet317.java?revision=1.1&amp;view=markup">Snippet317</a>.
-	</td>
+    A new event type has been added to SWT to notify applications that a document 
+    should be opened. Listeners for <tt>OpenDoc</tt> events can be added to a <tt>Display</tt>.
+    <p>Support has also been added to the Equinox launcher, and the Eclipse workbench. 
+    Users are now able to associate file types with Eclipse and have Eclipse launched when 
+    they open a file of an associated type.</p>
+    </td> 
   </tr>
 
-  <tr id="modifiedshell">
-    <td width="30%" valign="top" align="left"><b>Shell modified state hint</b></td>
+ <tr id="swt-program-working-directory"> 
+    <td width="30%" valign="top" align="left">
+      <b>Program working directory</b>
+    </td>
     <td width="70%" valign="top">
-		New API has been added to <code>Shell</code> to provide a user hint that the window is in a modified state.
-		See <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet314.java?revision=1.1&amp;view=markup">Snippet314</a>.
-		<p><img src="images/modified.png" alt="Shell.setModified"></p>
-	</td>
+    New API has been added to <tt>Program</tt> to allow the working directory to be 
+    specified when launching an executable. See <code>Program.launch(String fileName, String workingDir)</code> for more details.
+    </td> 
+  </tr>
+ 
+ <tr id="swt-xul-runner"> 
+    <td width="30%" valign="top" align="left">
+      <b>XULRunner 1.9.2 support</b>
+    </td>
+    <td width="70%" valign="top">
+    The <tt>Browser</tt> widget now has full support for the recent release of XULRunner 1.9.2.
+    </td> 
+  </tr>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>TaskItem overlay image</b>
+    </td>
+    <td width="70%" valign="top">
+      The new API <code>TaskItem#setOverlayImage(Image)</code> allows clients to set an image to be displayed on top of the application button in the taskbar.
+      See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet336.java">Snippet 336</a> for an example.
+      <p><img src="images/overlayimage.png" alt="Overlay Image"/></p>
+    </td> 
   </tr>
 
-  <tr id="datetimedropdown"> 
-    <td width="30%" valign="top" align="left"><b>DateTime DROP_DOWN</b></td>
-    <td width="70%" valign="top"><code>DateTime</code> widgets created with <code>SWT.DATE</code> style can now also have <code>SWT.DROP_DOWN</code> style.
-     <p><img src="images/datetime-dropdown.png" alt="DateTime with DROP_DOWN style"></p></td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>TaskItem overlay text</b>
+    </td>
+    <td width="70%" valign="top">
+      The new API <code>TaskItem#setOverlayText(String)</code> allows clients to set a short text to be displayed on top of the application button in the taskbar.
+      See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet336.java">Snippet 336</a> for an example. 
+      <p><img src="images/overlaytext.png" alt="Overlay Text"/></p>
+    </td> 
   </tr>
 
-  <tr id="sheet">
-    <td width="30%" valign="top" align="left"><b>SWT.SHEET style for Shell and Dialog</b></td>
-	<td width="70%" valign="top">Sheet windows are now supported on Mac OS X Cocoa.
-      <p><img src='images/sheet.png' alt="Shell with SWT.SHEET style"></p>
-	</td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>TaskItem progress</b>
+    </td>
+    <td width="70%" valign="top">
+      The new APIs <code>TaskItem#setProgress(int)</code> and <code>TaskItem#setProgressState(int)</code> allows clients to show progress indication in the application button in the taskbar.
+      See <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet336.java">Snippet 336</a> for an example.
+      <p><img src="images/progress.png" alt="Progress"/></p>
+    </td> 
   </tr>
 
   <tr> 
-    <td width="30%" valign="top" align="left"><b>Mozilla browser support on Solaris x86</b></td>
-    <td width="70%" valign="top">Mozilla browser support has been added to the Solaris x86 platform.
-		<p><img src="images/solarisx86-browser.png" alt="Solaris x86 Browser"></p>
-	</td>
+    <td width="30%" valign="top" align="left">
+      <b>TaskItem menu</b>
+    </td>
+    <td width="70%" valign="top">
+      The new API <code>TaskItem#setMenu(Menu)</code> allows clients to specify a menu for the application button in the taskbar.
+      Running on Windows 7:<br/> 
+     <p><img src="images/menu-win32.png" alt="Menu on Windows"/></p>
+      Running on Mac OS X:<br/> 
+     <p><img src="images/menu-mac.png" alt="Menu on Mac"/></p>
+    </td> 
   </tr>
 
-  <tr id="cocoadnd">
-    <td width="30%" valign="top" align="left"><b>Improved DND feedback on Cocoa</b></td>
-    <td width="70%" valign="top">Cocoa drag and drop in trees and tables is now fully supported. Aside
-	from the visual feedback, other native features are supported, such as automatic collapse of tree items
-	when the drag is finished.
-	<p><img src='images/dnd.png' alt='Cocoa drag and drop feedback'></p>
-	</td>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>CTabFolder renderer</b>
+    </td>
+    <td width="70%" valign="top">
+      <tt>CTabFolder</tt> has been improved and now allows clients to change its look by implementing their own renderers.
+	<p><img src="images/newctab.png" alt="New CTabFolder"/></p>
+    </td> 
   </tr>
 
-  <tr id="paperorientation"> 
-    <td width="30%" valign="top" align="left"><b>Paper orientation</b></td>
-    <td width="70%" valign="top">Applications can now programmatically select portrait or landscape mode when printing,
-    or when opening a PrintDialog.
-     See <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet318.java?view=co">Snippet318</a>.
-     <p><img src="images/printdialog.png" alt="PrintDialog seeded with Landscape orientation"></p></td>
+  <tr> 	
+    <td width="30%" valign="top" align="left">
+      <b>Custom traversals</b>
+    </td>
+    <td width="70%" valign="top">
+      New API <code>Control.traverse(int, event)</code> enables clients to request that a customized traversal be performed.  For an example of this see
+        <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet338.java">Snippet 338</a>.
+    </td> 
+  </tr>
+
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>Draw background at an offset</b>
+    </td>
+    <td width="70%" valign="top">
+      New API was added in <code>Composite.drawBackground</code> that allows for drawing of a parent background at an offset specified by the child. This
+	is useful for aligning patterns between the parent and child when dealing with non-rectangular shapes. 
+    </td> 
   </tr>
 
 <!-- ****************** END OF N&N TABLE ****************** -->
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/accessibility/text_editor.htm b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/accessibility/text_editor.htm
index 34fef25..982ca58 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/accessibility/text_editor.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/accessibility/text_editor.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2009, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
   <LINK REL="STYLESHEET" HREF="../../book.css" CHARSET="ISO-8859-1" TYPE="text/css"> 
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
@@ -13,24 +13,26 @@
 <body>
 
 <h1>Configuring accessibility options for textual editors</h1>
-Besides the options to change colors and fonts as shown by the related tasks listed below, textual editors in Eclipse can be configured to better fit the needs of people with a physical disability. This document describes the relevant options.
+Textual editors in Eclipse can be configured to better fit the needs of people using Accessible Technology such as screen readers and magnifiers. This document describes the relevant options.
 
 <h2>Accessing Annotations</h2>
-<p>You can navigate to the next annotation by pressing <b>Ctrl+.</b> and to the previous ony by pressing <b>Ctrl+,</b>. Out of the box not all available annotation types are included in that navigation,
-e.g. breakpoints are not part of it. Breakpoints and other annotation types can either be enabled via the <b>Next Annotation</b> toolbar button drop-down menu or by checking <b>Include in next/previous navigation</b> on the
+<p>You can navigate to the next annotation by pressing <b>Ctrl+.</b> and to the previous one by pressing <b>Ctrl+,</b>. Out of the box not all available annotation types are included in that navigation,
+for example, breakpoints are not part of it. Breakpoints and other annotation types can either be enabled via the <b>Next Annotation</b> toolbar button drop-down menu or by checking <b>Include in next/previous navigation</b> on the
 <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.editors.preferencePages.Annotations)")'>
    <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
    <strong>General &gt; Editors &gt; Text Editors &gt; Annotations</strong></a> preference page.</p>
-<p>Navigating to an annotation lets its text appear in the status line. The next section explains how to read the status line under Windows.</p>
-<p>Some annotation types like e.g. warnings and errors, can
+<p>Navigating to an annotation moves the text caret to the annotated line, and displays the annotation text in the status line. The next section explains how to read the status line under Windows.</p>
+<p>Some annotation types, for example warnings and errors, can
 be accessed by pressing <b>F2</b> after having navigated to one of them or setting the caret inside the annotation.</p> 
 
 <h2><img src="../../images/win_only.png" alt="Windows only" border="0" >Reading the status line with JAWS</h2>
 JAWS desktop users press <b>Insert+PageDown</b> to read the Eclipse status line and JAWS laptop users press <b>Caps Lock+PageDown</b>.
 
-
+<h2>Accessing the Current Line Number</h2>
+<p>You can get the current line number by pressing <b>Ctrl+L</b> or via <b>Navigate &gt; Go To Line...</b>.</p>
+ 
 <h2>Quick Diff Hover</h2>
-Like normal hovers can be shown by pressing <b>F2</b>, the quick diff diff and revision hovers that appear when hovering over the quick diff ruler on the left can also be shown by pressing a key sequence.
+Like normal hovers can be shown by pressing <b>F2</b>, the quick diff and revision hovers that appear when hovering over the quick diff ruler on the left can also be shown by pressing a key sequence.
 However, out of the box no key sequence is defined for that. Go to the <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Keys)")'>
    <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
    <strong>General &gt; Keys</strong></a> preference page to assign a key sequence to the <b>Show Quick Diff Ruler Tooltip</b> command.
@@ -41,7 +43,32 @@ However, out of the box no key sequence is defined for that. Go to the <a class=
    <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
    <strong>General &gt; Keys</strong></a> preference page to assign a key sequence to the <b>Show Ruler Annotation Tooltip</b> command.
 
-
+<h2>Reading Words in the Java Editor</h2>
+<p>In order to get correct results when letting the screen reader read words in the Java editor it is recommended to
+disable <b>Smart caret positioning in Java names</b> on the <b>Java &gt; Editor</b> preference page.</p>
+
+<h2>Reading Java Code in the Java Editor</h2>
+<p>Some screen readers do not read punctuation by default, however it is useful to hear punctuation when reading code.
+When using a Java Editor with a screen reader, you can do the following:
+<ul>
+	<li>Window-Eyes:<ul>
+		<li><b>Global &gt; Menu level</b>: <b>Advanced</b></li>
+		<li><b>Screen &gt; Punctuation</b>: enable <b>Textual</b>, <b>Math</b>, and <b>Miscellaneous</b></li>
+		<li><b>File &gt; Save</b></li>
+	</ul></li>
+	<li>NVDA:<ul>
+		<li>NVDA menu (<b>Insert+n</b>) <b>&gt; Preferences &gt; Voice settings...</b>: enable <b>Speak all punctuation</b></li>
+		<li>NVDA menu (<b>Insert+n</b>) <b>&gt; Save configuration</b></li>
+	</ul></li>
+	<li>Orca:<ul>
+		<li><b>Preferences &gt; Speech &gt; Punctuation level: All</b></li>
+		<li><b>OK</b></li>
+	</ul></li>
+	<li>JAWS and VoiceOver:<ul>
+		<li>These screen readers read punctuation out of the box.</li>
+	</ul></li>
+</ul>
+</p>
 
 <p><img src="../../images/ngrelt.png" alt="Related tasks" border="0" ><br>
 <a href="accessmain.htm">Accessibility features in Eclipse</a><br>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/resourcefilters.htm b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/resourcefilters.htm
new file mode 100644
index 0000000..667fb48
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/resourcefilters.htm
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) Freescale Semiconductor and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<title>Resource filters</title>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff">
+<H1 CLASS="Head">Resource filters</H1>
+<p>
+Resource filters allow you to configure which files and folders are included automatically
+in a project resource hierarchy when refresh is performed.
+</p>
+<p>
+By adding resource filters to a project or folder, you can systematically prevent some file 
+system entries to be displayed in the resource tree. 
+</p>
+<p>
+A resource filter is either of <b>Include Only</b> or <b>Exclude All</b> type, and can apply to either files,
+folders, or both.
+</p>
+<p>
+Resource filters only apply to files and/or folders that are implicitly included in the workspace
+by the refresh operation.  Link files and folders are not affected by resource filters, since they 
+need to be created explicitly by the user.
+</p>
+<p>
+An "Include" resource filter allows only files and/or folders that match the filter condition
+to be included in the workspace during the refresh operation. If multiple "Include" filters exist, 
+the elements included will be those who match any of the existing "Include" filters. 
+</p>
+<p>
+An "Exclude" resource filter prevent all files and/or folders that match the filter condition
+to be included in the workspace during the refresh operation. If multiple "Exclude" filters exist, 
+the elements excluded will be those who match any of the existing "Exclude" filters. 
+</p>
+<p>
+If both "Exclude" and "Include" resource filters exist in a given folder or project, only files 
+and/or folders that match any of the "Include" filters <b>and </b> do not match any of the "Exclude"
+filters will be included in the workspace. 
+</p>
+<p>
+A resource filter can apply recursively to all children of the project or folder it is created on.  In 
+such case, the resource filter will apply to a sub-folder as if it was created in that sub-folder 
+itself, following the rules mentioned above.
+</p>
+<p>
+Resource filters can be created, edited and removed in 
+the <b>File &gt; Properties &gt; Resource &gt; Resources Filters</b> property page for a project or
+folder resource.
+</p>
+<p>
+Resource filters can also be created on a folder before that folder is created in the workspace by 
+selecting the "Resource Filters..." button in the "Advanced" section of the <b>New Folder wizard</b>.
+</p>
+<p><img border="0" src="../images/ngrelc.png" alt="Related concepts" ><br>
+<a href="concepts-13.htm">Linked resources</a><br>
+</p>
+
+<p><img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
+<a href="../tasks/tasks-97.htm">Creating resource filters</a><br>
+<a href="../tasks/tasks-49.htm">Viewing resource properties</a><br>
+</p>
+
+<p><img border="0" src="../images/ngrelr.png" alt="Related references" >
+<br>
+  <a href="../reference/ref-14b.htm">Linked resources</a> </p>
+
+</BODY>
+</HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/virtualfolders.htm b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/virtualfolders.htm
index 156fc93..857b994 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/virtualfolders.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/virtualfolders.htm
@@ -2,18 +2,18 @@
 <html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
 
 <LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
-<title>Virtual Folders</title>
+<title>Virtual folders</title>
 <script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
 </HEAD>
 
 <BODY BGCOLOR="#ffffff">
-<H1 CLASS="Head">Virtual Folders</H1>
+<H1 CLASS="Head">Virtual folders</H1>
 <p>
 Virtual folders are folders that exist only in the Eclipse workspace tree, and 
 have no file system location.
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/welcome.htm b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/welcome.htm
index 18eec86..8c65c82 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/concepts/welcome.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/concepts/welcome.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -14,13 +14,14 @@
 
 <p>
 The welcome page is the first page you see when you first launch eclipse. Its purpose
-is to introduce you to the product. Welcome content typically includes an overview
+is to introduce you to the product. Welcome content will vary from one Eclipse based product to 
+another, it typically includes an overview of
 the product and its features, tutorials to guide you through some basic tasks,
 samples to get you started, etc.
 </p>
 
 <p align="center">
-<img src="../images/welcome.png" alt="Welcome screenshot" width="508" height="384">
+<img src="../images/welcome.png" alt="Welcome screenshot">
 </p>
 
 <p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/contexts_Workbench.xml b/eclipse/plugins/org.eclipse.platform.doc.user/contexts_Workbench.xml
index 7f3e052..9d92823 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/contexts_Workbench.xml
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/contexts_Workbench.xml
@@ -230,7 +230,7 @@
     </context>
     <context id="open_preferences_action_context">
         <description>This opens the preferences dialog.</description>
-        <topic label="Workbench - Preferences" href="reference/ref-10.htm"/>
+        <topic label="General - Preferences" href="reference/ref-10.htm"/>
     </context>
     <context id="open_new_window_action_context">
         <description>This opens a new window.</description>
@@ -608,6 +608,20 @@
         <topic label="Virtual Folders" href="concepts/virtualfolders.htm"/>
         <topic label="Linked Resources" href="concepts/concepts-13.htm"/>
     </context>
+    <context id="resource_filter_property_page_context">
+        <description>Allows you to view and configure resources filters on a project or folder</description>
+        <topic label="Resource Filters" href="concepts/resourcefilters.htm"/>
+    </context>
+    <context id="edit_resource_filter_property_page_context">
+        <description>Allows you to create and edit resources filters</description>
+        <topic label="Create Resource Filters" href="tasks/tasks-97.htm"/>
+        <topic label="Resource Filters" href="concepts/resourcefilters.htm"/>
+    </context>
+    <context id="edit_resource_filter_dialog_context">
+        <description>Allows you to create and edit resources filters</description>
+        <topic label="Create Resource Filters" href="tasks/tasks-97.htm"/>
+        <topic label="Resource Filters" href="concepts/resourcefilters.htm"/>
+    </context>
     <!-- Views -->
     <context id="bookmark_view_context">
         <description>View to show all bookmarks.</description>
@@ -704,25 +718,35 @@
         <topic label="Importing resources with the Import Wizard" href="tasks/tasks-55.htm"/>
     </context>
     <context id="file_system_export_wizard_page">
-        <description>This page helps you provide all the information required to export resources to the file system.</description>
+        <description>This page helps you to provide all the information required to export resources to the file system.</description>
         <topic label="Using the Export Wizard" href="tasks/tasks-59.htm"/>
         <topic label="Export Wizard" href="reference/ref-71.htm"/>
     </context>
     <context id="file_system_import_wizard_page">
-        <description>This page helps you provide all the information required to import files from the file system.</description>
+        <description>This page helps you to provide all the information required to import files from the file system.</description>
         <topic label="Importing from File System" href="tasks/tasks-55.htm"/>
         <topic label="Import Wizard" href="reference/ref-70.htm"/>
     </context>
     <context id="zip_file_export_wizard_page">
-        <description>This page helps you provide all the information required to export resources from the workspace to an archive file.</description>
+        <description>This page helps you to provide all the information required to export resources from the workspace to an archive file.</description>
         <topic label="Exporting to a Zip File" href="tasks/tasks-59ag.htm"/>
         <topic label="Export Wizard" href="reference/ref-71.htm"/>
     </context>
     <context id="zip_file_import_wizard_page">
-        <description>This page helps you provide all the information required to import files from an archive file into the workspace.</description>
+        <description>This page helps you to provide all the information required to import files from an archive file into the workspace.</description>
         <topic label="Importing from a Zip File" href="tasks/tasks-55bg.htm"/>
         <topic label="Import Wizard" href="reference/ref-70.htm"/>
     </context>
+    <context id="preferences_export_wizard_page">
+        <description>This page helps you to provide all the information required to export preferences from the workspace to a file system.</description>
+        <topic label="Importing and Exporting Preferences" href="tasks/timpandexp.htm"/>
+        <topic label="Export Wizard" href="reference/ref-71.htm"/>
+    </context>
+    <context id="preferences_import_wizard_page">
+        <description>This page helps you to provide all the information required to import preferences from a file system into the workspace.</description>
+        <topic label="Importing and Exporting Preferences" href="tasks/timpandexp.htm"/>
+        <topic label="Import Wizard" href="reference/ref-70.htm"/>
+    </context>
     <!-- Wizards -->
     <context id="new_wizard_context">
         <description>These wizards allow you to create new resources and/or elements</description>
@@ -1231,5 +1255,7 @@
     </context>
     <context id="project_explorer_context" title="Project Explorer">
        <description>The Project Explorer allows you to navigate the contents of your workspace.</description>
+       <topic label="Project Explorer" href="reference/ref-73.htm"/>
+       <topic label="Views" href="concepts/concepts-5.htm"/>
     </context>
 </contexts>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-24a.xhtml b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-24a.xhtml
index e3f4c20..c55f888 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-24a.xhtml
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-24a.xhtml
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 	<head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." />
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." />
 
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <meta http-equiv="Content-Style-Type" content="text/css" />
@@ -17,9 +17,8 @@
 Exporting files </h1>
 <p class="Para">Files can be exported from the Workbench either by:</p>
 <ul>
-  <li> Dragging and dropping to the file system (Windows and Linux GTK only), or</li>
-  <li filter="ws=win32"> <img align="texttop" border="0" src="../images/win_only.png" alt="Windows only" />
-    Copying and pasting to the file system, or</li>
+  <li> Dragging and dropping to the file system (on most platforms), or</li>
+  <li> Copying and pasting to the file system, or</li>
   <li> Using the
   <a class="command-link" href="javascript:executeCommand(&quot;org.eclipse.ui.file.export&quot;)">
   <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png"/>
@@ -27,7 +26,7 @@ Exporting files </h1>
 </ul>
 <h2>
 Drag and drop or copy and paste</h2>
-<p class="Para" filter="ws=win32"> <img align="texttop" border="0" src="../images/win_only.png" alt="Windows only" /> 
+<p class="Para">
   The operating system's file system explorer can be used to export a copy of 
   a folder or file from the Workbench to the file system.</p>
 <ol>
@@ -44,7 +43,7 @@ Drag and drop or copy and paste</h2>
       Look for a small plus sign on the drag cursor to know whether the file is 
       being copied or moved. </p>
   </li>
-  <li filter="ws=win32"> 
+  <li> 
     <p class="Para"> The export can also be achieved by selecting the file in 
       the Project Explorer and choosing <b>Edit &gt; Copy</b>, then</p> 
     <p class="Para">pasting it in the file system explorer.</p> </li>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-31b.htm b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-31b.htm
index beaca2a..c6f5727 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-31b.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-31b.htm
@@ -29,6 +29,13 @@ Drag and drop or copy and paste</h3>
     <P CLASS="Para"> Locate the file JanesFile.txt that was recently exported 
       and drag it to a specific location in one of the navigation views in the 
       Workbench.&nbsp;&nbsp;</P>
+    <P CLASS="Para"> A dialog appears that allows to determine how the file will be
+    added to the project, either as a simple copy of the original file or as a link file.</P>
+	<blockquote> 
+	  <blockquote> 
+	    <P CLASS="Para"> <img src="../images/Image_file_operation.png"  alt="File and Folder Operation dialog" border="0"></P>
+	  </blockquote>
+	</blockquote>
     <P CLASS="Para">When dragging resources into one of the navigation views, 
       the project/folder that the resource is being dropped into will be selected.</P>
     <blockquote> 
@@ -46,8 +53,13 @@ Drag and drop or copy and paste</h3>
     then selecting the destination in the navigation view and choosing <b>Edit 
     &gt; Paste</b>. </li>
 </ol>
-
-
-
+<P CLASS="Para">Generally, files and folders can be imported in a project by making a 
+copies under the project folder, or by linking to the original file by creating link files and folders.
+When folders are drag and dropped (not only files), the dialog allows also to create a project hierarchy with virtual folders.</P>
+<blockquote> 
+  <blockquote> 
+    <P CLASS="Para"> <img src="../images/Image_file_folder_operation.png"  alt="File and Folder Operation dialog" border="0"></P>
+  </blockquote>
+</blockquote>
 </BODY>
 </HTML>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-responsiveUI.htm b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-responsiveUI.htm
index e7ad021..5e93e08 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-responsiveUI.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/gettingStarted/qs-responsiveUI.htm
@@ -27,14 +27,16 @@
   you to carry on with other tasks in Eclipse.</p>
 <p><img src="../images/res_build.png" alt="Image of the Building Workspace window" border="0" ></p>
 <p>For information on the status of the action and additional operations that 
-  are currently running, click <strong>Details</strong>.</p>
-<p><img src="../images/res_details.png" alt="Image of the Building Workspace window with the Details displayed" border="0" ></p>
-<p>The <strong>Details </strong>panel displays the status information of the operation 
+  are currently running, click <strong>Details</strong>.
+  The <strong>Details </strong>panel displays the status information of the operation 
   at hand as well as any additional operations that may be running simultaneously.</P>
 <p><img src="../images/res_otherjobs.png" alt="Image of the Building Workspace window with the Details showing simultaneous operations" border="0" ></P>
 <p>The Progress Information dialog also indicates when one operation is being 
   blocked by another. </P>
 <p><img src="../images/res_blocked.png" alt="Image of Progress Information view with an operation that is waiting for another to complete." border="0" ></P>
+<p>Information about operations that are currently running in the background may also be
+accessed at any time using the <strong>Progress View</strong>.</p>
+<p><img src="../images/res_details.png" alt="Image of the Progress View showing the Building Workspace operation running" border="0" ></p>
 <p>To have operations running in the background set as the default, select <strong>Window 
   &gt; Preferences &gt; General </strong> and check <strong>Always run in background.</strong> 
 </P>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image262_import_file.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image262_import_file.png
index 33414d9..fca4c94 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image262_import_file.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image262_import_file.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image36_linkedresources.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image36_linkedresources.png
index 81d5d18..b2be431 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image36_linkedresources.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image36_linkedresources.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image39_import_tree.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image39_import_tree.png
index 2b9502d..bbcd27e 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image39_import_tree.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image39_import_tree.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_folder_operation.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_folder_operation.png
new file mode 100644
index 0000000..ebe85ab
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_folder_operation.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_operation.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_operation.png
new file mode 100644
index 0000000..1719beb
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_file_operation.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_team_pref.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_team_pref.png
index 3ff5544..bbf299c 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_team_pref.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/Image_team_pref.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference.png
index 8d6fab0..8c4d95b 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_content.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_content.png
index 5856d55..5d40742 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_content.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_content.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_infocenter.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_infocenter.png
index 59e1acf..1e87a58 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_infocenter.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_infocenter.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_server.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_server.png
deleted file mode 100644
index 55a04d4..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_preference_server.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_criteria.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_criteria.png
new file mode 100644
index 0000000..76761d3
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_criteria.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_link.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_link.png
new file mode 100644
index 0000000..36ad528
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_link.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_new.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_new.png
new file mode 100644
index 0000000..5a6db2f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_new.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_select.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_select.png
new file mode 100644
index 0000000..b0c3de4
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_scope_select.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_view_context.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_view_context.png
index 3883710..54b4f47 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_view_context.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_view_context.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_window.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_window.png
index 8bc27e9..d130dc1 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/help_window.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/help_window.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_blocked.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_blocked.png
index 196b25b..aab3ebc 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_blocked.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_blocked.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png
index 0aac923..30eb447 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_details.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_details.png
index 2371d52..9f0785a 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_details.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_details.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_otherjobs.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_otherjobs.png
index d236a35..58389de 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_otherjobs.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_otherjobs.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_pref.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_pref.png
index 7b41927..f3f7c1b 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_pref.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/res_pref.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/welcome.png b/eclipse/plugins/org.eclipse.platform.doc.user/images/welcome.png
index 4bc9491..f3d2290 100644
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/images/welcome.png and b/eclipse/plugins/org.eclipse.platform.doc.user/images/welcome.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/notices.html b/eclipse/plugins/org.eclipse.platform.doc.user/notices.html
index b2201a7..f2293eb 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/notices.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/notices.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <LINK REL="STYLESHEET" HREF="book.css" CHARSET="ISO-8859-1" TYPE="text/css">
@@ -13,7 +13,7 @@
 <h3>
 <a NAME="Notices"></a>Notices</h3>
 <p>
-The material in this guide is Copyright (c) IBM Corporation and others 2000, 2009.
+The material in this guide is Copyright (c) Eclipse contributors 2000, 2010.
 </p>
 <p>
 <a href="about.html">Terms and conditions regarding the use of this guide.</a>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences.htm
index aef9c2e..a525934 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -28,11 +28,21 @@ preferences page, you can indicate how to display help information.</P>
       <TH ROWSPAN="1" COLSPAN="1"> <P CLASS="Para"> Default</P></TH>
     </TR>
     <TR> 
-      <TH align="left"> <span style="font-weight: 400">Use external browsers</span></TH>
-      <TH align="left"> <span style="font-weight: 400">If embedded web browser 
-        is supported on your system, help window uses an embedded help browser
-        to display help contents, whenever possible, and this option is available.
-        Select it, to force help to use external browsers.  Use &quot;Web
+      <TH align="left"> <span style="font-weight: 400">Open Help Search</span></TH>
+      <TH align="left"> <span style="font-weight: 400">Configures whether Help/Search (and Help/Index if configured) opens the help view or help contents.</span></TH>
+      <TH align="left"> <span style="font-weight: 400">In the dynamic help view</span></TH>
+    </TR>
+    <TR> 
+      <TH align="left"> <span style="font-weight: 400">Open help view documents</span></TH>
+      <TH align="left"><span style="font-weight: 400">This option allows you to 
+        determine whether the documents selected in the help view will be opened
+        in-place, in the editor area or in a browser.</span></TH>
+      <TH align="left"> <span style="font-weight: 400">in-place </span></TH>
+    </TR>
+    <TR> 
+      <TH align="left"> <span style="font-weight: 400">Open Help Contents</span></TH>
+      <TH align="left"> <span style="font-weight: 400">Allows you to open help contents
+      in an external web browser or in the Eclipse help browser.  Use &quot;Web
         Browser&quot; preference page to select browser to use.</span> </TH>
       <TH align="left"> <span style="font-weight: 400">Off</span></TH>
     </TR>
@@ -52,13 +62,6 @@ preferences page, you can indicate how to display help information.</P>
         help section of help view or in an infopop.</span></TH>
       <TH align="left"> <span style="font-weight: 400">in dialog tray</span></TH>
     </TR>
-    <TR> 
-      <TH align="left"> <span style="font-weight: 400">Open help view documents</span></TH>
-      <TH align="left"><span style="font-weight: 400">This option allows you to 
-        determine whether the documents selected in the help view will be opened
-        in-place or in the editor area.</span></TH>
-      <TH align="left"> <span style="font-weight: 400">in-place </span></TH>
-    </TR>
   </THEAD>
   <TBODY>
   </TBODY>
@@ -73,10 +76,6 @@ preferences page, you can indicate how to display help information.</P>
 <img src="../images/help_preference.png" alt="Help Preference Page" border="0">
 </P>
 
-<p>
-<b>Note:</b>  Selection performed on this page can affect how the help view is presented.  If the selected browser is not fully compatible with Internet Explorer or Mozilla, or has JavaScript disabled, the help view shown in the browser might be a simplified version.
-</p>
-
 <p><img border="0" src="../images/ngrelc.png" alt="Related concepts"><br>
 <a href="../concepts/help.htm">Help</a><br>
 <a href="../concepts/help_view.htm">Help view</a><br>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences_content.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences_content.htm
index 2133603..9c6e463 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences_content.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/help_preferences_content.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
@@ -20,7 +20,7 @@ Use the
 <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
 <strong>Help &gt; Content</strong></a>
 
-preference page to configure one or more remote server to include content from.
+preference page to configure one or more remote servers from which to include content.
 </P>
 <TABLE BORDER="1" cellspacing="0">
 <THEAD>
@@ -36,16 +36,32 @@ Description</P>
 </TR>
 <TR>
 <TH align="left">
-<span style="font-weight: 400">Include help content from a remote information center</span></TH>
+<span style="font-weight: 400">Include local help only</span></TH>
 <TH align="left">
-<span style="font-weight: 400">If checked, this option enables the use of remote
-help content. The rest of the fields on the page are only enabled if this option
-is checked.</span>
+<span style="font-weight: 400">Remote help content is not enabled.</span>
 </TH>
 </TR>
 <TR>
 <TH align="left">
-<span style="font-weight: 400">Add/Edit/Delete</span></TH>
+<span style="font-weight: 400">Include remote help and give local help priority</span></TH>
+<TH align="left">
+<span style="font-weight: 400">The help system will show locally installed help contents as well as help
+contents from the information centers specified in the table. If the same page exists both locally and 
+on the remote information center the remote page will be shown.</span>
+</TH>
+</TR>
+<TR>
+<TH align="left">
+<span style="font-weight: 400">Include remote help and give it priority</span></TH>
+<TH align="left">
+<span style="font-weight: 400">The help system will show locally installed help contents as well as help
+contents from the information centers specified in the table. If the same page exists both locally and 
+on the remote information center the local page will be shown.</span>
+</TH>
+</TR>
+<TR>
+<TH align="left">
+<span style="font-weight: 400">New/Edit/Delete</span></TH>
 <TH align="left">
 <span style="font-weight: 400">Add, edit or delete a remote data source</span></TH>
 </TR>
@@ -80,11 +96,11 @@ system will not try to read topics from that source.</span></TH>
 
 
 <P>
-<img src="../images/help_preference_content.png" alt="Help Content Preference Page" border="0" width="737" height="543"></P>
+<img src="../images/help_preference_content.png" alt="Help Content Preference Page" border="0" ></P>
 
 
 <P>
-Pressing the &quot;Add&quot; button opens a dialog to add a new information center, these are the 
+Pressing the &quot;New&quot; button opens a dialog to add a new information center, these are the 
 fields that can be entered in the Add new information center dialog.&nbsp;
 </P>
 
@@ -135,20 +151,20 @@ be selected and the correct port must be specified in the text field.</span>
 
 
 <P>
-&nbsp;<img border="0" src="../images/help_preference_infocenter.png" width="407" height="345"></P>
+&nbsp;<img border="0" src="../images/help_preference_infocenter.png" ></P>
 
 <p>
-<img border="0" src="../images/ngrelc.png" alt="Related concepts" width="159" height="27"><br>
+<img border="0" src="../images/ngrelc.png" alt="Related concepts" ><br>
 <a href="../concepts/help.htm">Help</a><br>
 </p>
 
 <p>
-<img border="0" src="../images/ngrelt.png" alt="Related tasks" width="159" height="27"><br>
+<img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
 <a href="../tasks/help.xhtml">Accessing help</a><br>
 </p>
 
 <p>
-<img border="0" src="../images/ngrelr.png" alt="Related reference" width="159" height="27"><br>
+<img border="0" src="../images/ngrelr.png" alt="Related reference" ><br>
 <a href="help_preferences.htm">Help preferences</a><br>
 <a href="ref-42.htm">Web Browser preferences</a><br>
 </p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-19.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-19.htm
index ac1f1ae..40b3980 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-19.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-19.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -65,6 +65,11 @@ preferences page contains options which
       <TD COLSPAN="1" valign="top" align="left">Use this option to run Project Set import in the background.</TD>
       <TD COLSPAN="1" valign="top" align="left">Disabled</TD>
     </TR>         
+  	<TR> 
+      <TD COLSPAN="1" valign="top" align="left">Apply Patch in Synchronize view</TD>
+      <TD COLSPAN="1" valign="top" align="left">Use this option to preview patch changes in the Synchronize view.</TD>
+      <TD COLSPAN="1" valign="top" align="left">Disabled</TD>
+    </TR>
     <TR> 
       <TD COLSPAN="1" valign="top" align="left">Choose the presentation to be used when displaying 
         Workspace projects</TD>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-37.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-37.htm
index 8f1444b..f09327c 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-37.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-37.htm
@@ -109,7 +109,7 @@ New Project perspective options</h2>
 
   <div CLASS="Para">On the preferences page (<strong>Window &gt; Preferences &gt; General 
     &gt; Perspectives</strong>), you can change the way that new projects are initially 
-    displayed. For details on how to change this option see <a href="ref-10.htm">Workbench</a>.</div>
+    displayed. For details on how to change this option see <a href="ref-10.htm">General</a>.</div>
 </div>
 
 <p><img border="0" src="../images/ngrelr.png" alt="Related reference" >
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-70.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-70.htm
index 58f6bd9..034201d 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-70.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-70.htm
@@ -467,6 +467,47 @@ resources being imported. </P>
 <P CLASS="Para">On</P>
 </TD>
 </TR>
+<TR>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+Create links in workspace</P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+Create links to the original files and folders instead of copying them under the project folder. </P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">Off</P>
+</TD>
+</TR>
+<TR>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+Create virtual folders</P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+Create hierarchy (folder) structure in the Workbench to accommodate the
+resources being imported. </P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">Off, unless the selection is a partial hierarchy, or the 'into folder' field is a virtual folder</P>
+</TD>
+</TR>
+<TR>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+Create link location relative to: PROJECT_LOC</P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">
+When the 'Create links in workspace' option is set, the link file and folder locations are automatically set to be relative 
+to a variable instead of being an absolute path</P>
+</TD>
+<TD ROWSPAN="1" COLSPAN="1" valign="top" align="left">
+<P CLASS="Para">On</P>
+</TD>
+</TR>
 </TBODY>
 </TABLE>
 </DIV>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-anteditor.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-anteditor.htm
index 4e9efa4..63b3a32 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-anteditor.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-anteditor.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 
@@ -28,7 +28,7 @@ The editor includes the following features:
 </ul> 
 <p>
 	The most common way to invoke the Ant editor is to open an Ant buildfile from 
-  	one of the navigation views or <b><a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/views/ref-view-package-explorer.htm">Package explorer</a></b> using pop-up menus or by clicking 
+  	one of the navigation views or <b><a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/views/ref-view-package-explorer.htm">Package Explorer</a></b> using pop-up menus or by clicking 
   	the file (single or double-click depending on your preference settings).
 </p>  
 <p>
@@ -46,8 +46,8 @@ The editor includes the following features:
 	<img border="0" src="../images/ngrelr.png" alt="Related reference"><br>
     <a href="ref-anteditorprefs.htm">Ant editor preferences</a><br>
     <a href="ref-anticons.htm">External Tools and Ant icons</a><br>
-    <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/ref-view-outline.htm">Outline view</a><br>
-    <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/views/ref-view-package-explorer.htm">Package explorer</a>
+    <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/views/ref-view-outline.htm">Outline view</a><br>
+    <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/views/ref-view-package-explorer.htm">Package Explorer</a>
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-dialog-open-resource.htm b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-dialog-open-resource.htm
index c159a0c..9191552 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-dialog-open-resource.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/reference/ref-dialog-open-resource.htm
@@ -53,16 +53,27 @@
         </ul>
         <strong>Folder prefixes</strong>:<br>
         <p>
-        Both pattern kinds also support <strong>folder prefixes</strong>, e.g.
-        &quot;org.eclipse.ui/plugin.xml&quot;.
+        Both pattern kinds also support <strong>folder prefixes</strong>.
+        If the pattern contains a /, the part before the last / is used to match a path in the workspace, e.g.
+        &quot;org.eclipse.ui/plugin.xml&quot;.<br>
         Or a bit more complex: &quot;*/ui&lt;/pack*.html&quot; matches e.g. files called &quot;package.html&quot;
         in a folder named &quot;ui&quot; (but not in folders like &quot;uitools&quot; or &quot;*/ui/internal&quot;).
         </p>
         <br>
+        <strong>Relative paths</strong>:<br>
+        <p>
+        For example, "./Mak" matches all files starting with "Mak" in the folder of the active editor or selection, while
+        "../Mak" matches such files in the parent folder.
+        </p>
+        <br>
       </li>
       <li>
         <strong>Matching items</strong>: This list displays matches for the pattern you type in the <strong>Select an item to open</strong> field.
-        Recently opened files show up in a history section at the top of the list.
+        <ul>
+          <li>Recently opened files show up in a history section at the top of the list.</li>
+          <li>If the pattern matches many files with the same name, the files that are closer to
+              the currently edited or selected resource are shown on top of the matching items list.</li>
+        </ul>
       </li>
     </ul>
     
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_navigate.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_navigate.htm
index b3102df..999f811 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_navigate.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_navigate.htm
@@ -86,16 +86,6 @@ The
 <a href="../concepts/help_view.htm">Help view</a> provides the same features as the Help window, but in the same window as the workbench instead of a separate one.
 </p>
 
-<h4>Capabilities</h4>
-
-<p>
-To show documentation about capabilities that are disabled in the application,
-select the <img src="../images/help_icon_capabilities.png" alt="Show All Topics button"
-border="0"> <b>Show All Topics</b> button. When you choose to show all topics in
-the table of contents, the headings for documentation about any disabled
-activities are shown in the table of contents and also appear in search results.
-</p>
-
 <h4>Show in table of contents</h4>
 
 <p>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_scope.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_scope.htm
new file mode 100644
index 0000000..f013db9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/help_scope.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." />
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css" />
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
+<title>Using help scopes</title>
+</head>
+<body>
+
+<h2>Using help scopes</h2>
+
+<p>Help scopes allow you to restrict the scope of a search and limit the topics which show in 
+help contents. In the help view help the active scope only affects search results, in the help 
+browser it also affects the table of contents and keyword index. A scope can be defined to include 
+only specific books or topics from the table of contents. If the documentation set has been configured
+to allow scoping by criteria it is possible also to define scopes which satisfy specific criteria such 
+as "platform" = "linux".
+</p>
+
+<h3>Defining a topic based scope in help contents</h3>
+<p>From help contents the scope is changed by clicking on the link labelled "Scope" next to the search type in area.</p>
+<p> <img src="../images/help_scope_link.png" alt="Scope selection link." border="0" /> </p>
+<p>This opens a scope selection dialog, click "New ..." to create a new scope.</p>
+<p> <img src="../images/help_scope_select.png" alt="Scope selection dialog." border="0" /> </p>
+<p>This opens a new scope dialog which allow you to select which topics to show. If the documentation
+set does not support scoping by criteria the dialog will be similar to the one below, in this case
+only the topics in the Workbench Users Guide will be shown.</p>
+<p> <img src="../images/help_scope_new.png" alt="New scope dialog." border="0" /> </p>
+
+<h3>Defining a scope using criteria</h3>
+If the documentation has been set up to allow for scoping using criteria an additional 
+set of checkboxes is displayed 
+to the right of the topic selection area. In the screen shot below the documentation set has two criteria
+which can be used to define a scope, platform and version. In this example the scope would include
+all topics which were in the one of the two books on Java Development and which were identified by
+the documentation writer as being applicable to Windows or Linux.
+<p> <img src="../images/help_scope_criteria.png" alt="New scope dialog with criteria." border="0" /> </p>
+
+<p><img border="0" src="../images/ngrelc.png" alt="Related concepts"/><br/>
+<a href="../concepts/help.htm">Help</a><br/>
+</p>
+
+<p><img border="0" src="../images/ngrelt.png" alt="Related tasks"/><br/>
+<a href="help_navigate.htm">Navigating help topics</a><br/>
+</p>
+
+</body>
+</html>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/running_eclipse.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/running_eclipse.htm
index 2599657..cfbd8e3 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/running_eclipse.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/running_eclipse.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -18,13 +18,13 @@
 by running the Eclipse executable included with the release (you also need a 1.4.2
 JRE, not included with the Eclipse SDK). On Windows, the executable file is called <samp>eclipse.exe</samp>,
 and is located in the <code>eclipse</code> sub-directory of the install. If
-installed at <code>c:\eclipse-SDK-3.5-win32</code>, the executable is <code>c:\eclipse-SDK-3.5-win32\eclipse\eclipse.exe</code>.
+installed at <code>c:\eclipse-SDK-3.6-win32</code>, the executable is <code>c:\eclipse-SDK-3.6-win32\eclipse\eclipse.exe</code>.
 
 <b>Note:</b> Set-up on most other operating environments is analogous. Special
 instructions for Mac OS X are listed <a href="#macosx">below</a>.</p>
 
 <h3>Allocating enough memory and solving OutOfMemoryErrors</h3>
-<p>By default, Eclipse will allocate up to 256 megabytes of Java heap memory. This should
+<p>By default, Eclipse will allocate up to 384 megabytes of Java heap memory. This should
 be ample for all typical development tasks. However, depending on the JRE
 that you are running, the number of additional plug-ins you are using, and
 the number of files you will be working with, you could conceivably have to increase this amount. 
@@ -35,10 +35,10 @@ Thus, to increase the available heap memory, you would typically use:</p>
   <p><code>eclipse -vmargs -Xmx&lt;memory size&gt;</code></p>
 </blockquote>
 <p>with the <code>&lt;memory size&gt;</code> value set to greater than
-&quot;256M&quot; (256 megabytes -- the default). 
+&quot;384M&quot; (384 megabytes -- the default). 
 </p>
 <p>
-When using a Sun VM, you may also need to increase the size of the permanent
+When using an Oracle (Sun) VM, you may also need to increase the size of the permanent
 generation memory.  The default maximum is 64 megabytes, but more may
 be needed depending on your plug-in configuration and use.  When the VM runs
 out of permanent generation memory, it may crash or hang during class loading.
@@ -312,7 +312,7 @@ option from an account that has a write access to the install directory.</p>
       <TD vAlign=top> <PRE><b>-vm</b><strong>args</strong> <em>args</em></PRE></TD>
       <TD>When passed to the Eclipse, this option is used to customize the operation 
         of the Java VM used to run Eclipse. If specified, this option must come 
-        at the end of the command line. The given arguments are dependant on VM 
+        at the end of the command line. The given arguments are dependent on VM 
         that is being run.</TD>
       <TD>1.0</TD>
     </tr>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-1e.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-1e.htm
index c01bcb2..84fc2eb 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-1e.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-1e.htm
@@ -28,7 +28,8 @@ outside of the project's location.  These special folders and files are called
 <a href="../concepts/concepts-2.htm">Workbench</a><br>
 <a href="../concepts/concepts-12.htm">Resources</a><br>
 <a href="../concepts/concepts-17.htm">Resource hierarchies</a><br>
-<a href="../concepts/concepts-13.htm">Linked resources</a>
+<a href="../concepts/concepts-13.htm">Linked resources</a><br>
+<a href="../concepts/resourcefilters.htm">Resource filters</a>
 </p>
 
 <p><img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
@@ -42,7 +43,8 @@ outside of the project's location.  These special folders and files are called
 <a href="tasks-63cg.htm">Copying resources</a><br>
 <a href="tasks-66.htm">Renaming resources</a><br>
 <a href="tasks-67.htm">Deleting resources</a><br>
-<a href="tasks-49.htm">Viewing resources properties</a>
+<a href="tasks-49.htm">Viewing resources properties</a><br>
+<a href="tasks-97.htm">Creating resource filters</a>
 </p>
 
 </BODY>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-3.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-3.htm
index 04b3668..bf168bc 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-3.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-3.htm
@@ -39,7 +39,7 @@
 <a href="tasks-3e.htm">Moving and docking views</a><br>
 <a href="tasks-9b.htm">Creating fast views</a><br>
 <a href="tasks-9l.htm">Detaching views</a><br>
-<a href="../gettingStarted\qs-39g.htm">Maximizing a view or editor</a><br>
+<a href="../gettingStarted/qs-39g.htm">Maximizing a view or editor</a><br>
 <a href="tasks-9j.htm">Resetting perspectives</a>
 </p>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-45.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-45.htm
index 07172bd..06e85ad 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-45.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-45.htm
@@ -32,7 +32,7 @@ outside of the project's location.  These special folders and files are called
   <li>Specify the name of the folder as it will appear in the workbench.  This 
   name can be different from the name of the folder in the file system.</li>
   <li>Click <b>Advanced</b>.</li>
-  <li>Check <b>Link to folder in the file system</b>.</li>
+  <li>Check <b>Link to alternate location (Linked Folder)</b>.</li>
   <li>Enter a file system path, or click <b>Browse</b> to select a folder in the file system.</li>
   <li>Click <b>Finish</b>.</li>
 </ol>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-68c.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-68c.htm
index 0d004ce..7c11525 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-68c.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-68c.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -69,8 +69,11 @@
 <ol>
   <li>Select the resource that the patch was generated on. This resource should 
     contain the same file revisions as the line-up on which the patch was generated.</li>
-  <li>From the pop-up menu, select <b>Team &gt; Apply Patch...</b>. The Resource 
-    Patcher wizard will open.</li>
+  <li>From the pop-up menu, select <b>Team &gt; Apply Patch...</b>. The Apply 
+    Patch wizard will open.<br><br>
+    This can also be achieved by copying the patch contents to the clipboard 
+    and pasting it directly into the Package Explorer view by choosing <b>Edit &gt; Paste</b>. 
+    In this case, you can skip the next step.</li>
   <li>Indicate where the patch is to be found:
     <ol type="a">
       <li><i>File</i> - the patch is in a file on the local file system. Either 
@@ -80,10 +83,15 @@
         is safer to use a file based patch. Line endings may not be handled properly 
         if the clipboard is used and the patch was generated on a different platform 
         (i.e. Linux vs. Windows).</li>
+       <li><i>URL</i> - the patch is located under the given URL. <b>Warning:</b>
+       Make sure the URL you entered is valid and contains a proper patch. 
+       Otherwise you won't be able to apply it. Also, please keep in mind that 
+       applying a patch directly from a URL may take some time.
+       </li> 
        <li><i>Workspace</i> - the patch has been saved somewhere in the workspace.</li>
     </ol> Click <b>Next</b> to see the effect of applying the patch.</li>
   <li>
-  <b>Optional Step</b>: <i>this step only applies if you have a patch rooted at the project or selection level - workspace
+  <b>Optional Step</b>: <i>this step applies, only if you have a patch rooted at the project or selection level - workspace
   rooted patches will automatically proceed to the Patch Preview Page.</i> In the Patch Target Specification page, you should
   select the resource that is to act as the root of the patch.
   </li>
@@ -111,6 +119,50 @@
     now contain outgoing changes for each file modified by the patch.</li>
 </ol>
 
+<p>Patches can be applied by synchronizing them with a local content</p>   
+
+<H3>To synchronize with a patch:</H3>
+<ol>
+	<li>
+  		From the Team Synchronizing perspective select the <strong>Synchronize...</strong> 
+		action from the Synchronize <img src="../images/synch_participants.png" alt="" border="0" > 
+		button drop down.
+	</li>
+	<li>
+		Select <strong>Synchronize with Patch</strong> from the list of possible synchronization types 
+		and click <strong>Next</strong>.
+	</li>
+	<li>Indicate where the patch is to be found:
+    <ol type="a">
+      <li><i>File</i> - the patch is in a file on the local file system. Either 
+        type in the full path to the file or use the <b>Browse...</b> button to 
+        find the file.</li>
+      <li><i>Clipboard</i> - the patch is on the clipboard. <b>Warning:</b> It 
+        is safer to use a file based patch. Line endings may not be handled properly 
+        if the clipboard is used and the patch was generated on a different platform 
+        (i.e. Linux vs. Windows).</li>
+       <li><i>URL</i> - the patch is located under the given URL. <b>Warning:</b>
+       Make sure the URL you entered is valid and contains a proper patch. 
+       Otherwise you won't be able to apply the patch. Also, please keep in mind that 
+       applying a patch directly from a URL may take some time.
+       </li>
+       <li><i>Workspace</i> - the patch has been saved somewhere in the workspace.</li>
+    </ol> Click <b>Next</b> to see the effect of applying the patch.
+    </li>
+	<li>
+		<b>Optional Step</b>: <i>this step applies, only if you have a patch rooted at the project or selection level - workspace
+		rooted patches will automatically proceed to the Patch Preview Page.</i> In the Patch Target Specification page, you should
+		select the resource that is to act as the root of the patch.
+	</li>
+	<li>
+		<b>Optional Step</b>: <i>this step applies, only if your patch refers to projects that are inaccessible - if all projects from the patch are present in the workspace
+		and are open, this page will be skipped.</i> In the Inaccessible Projects page you can open any closed projects. Moreover, details about non-existing projects will be displayed.
+		Projects that are closed or do not exist in the workspace cannot be patched.
+	</li>
+	<li>
+		On the final page, click <b>Finish</b> to preview patch changes in the Synchronize view.
+	</li>
+</ol>
 
 <H3>Options for applying a patch</H3>
 
@@ -144,15 +196,21 @@
    	  		Use the <i>Reverse patch</i> option for patch files that already have been applied to your
    	  		workspace. This option is also useful to undo or redo a patch.
   		</li>
-  		
+
   		<li>
   			For Workspace patches, you can select another project in your workspace
   			to apply the patch changes to. To do this, select a project in the top pane and select <b>Move</b> from the context menu. This will launch a dialog with a list of all available projects in your
   			workspace. Select a project and click <b>OK</b>; the patch changes will be applied to your selected project.
   		</li>
+
   		<li>
-  		Use the <i>Show Excluded</i> 
-  		option to show the hunks which you have already selected to not include in the patch.</li>
+			Use the <i>Show Excluded</i> option to show the hunks which you have already selected to not include in the patch.
+		</li>
+
+		<li>
+			When synchronizing with a patch, the options above are available in the Synchronize View's pull down menu.
+			You can also switch between available models to get extra information about the changes being applied.
+  		</li>
 
    	</ol>
 
@@ -162,11 +220,13 @@
 </p>
 
 <p><img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
-<a href="tasks-68.htm">Comparing resources</a>
+<a href="tasks-68.htm">Comparing resources</a><br>
+<a href="tasks-115.htm">Synchronizing with the repository</a>
 </p>
 
 
 <p><img border="0" src="../images/ngrelr.png" alt="Related reference" ><br>
+<a href="../reference/ref-19.htm">Team</a>
 <a href="../reference/ref-47.htm">CVS</a>
 </p>
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-97.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-97.htm
new file mode 100644
index 0000000..658f9d1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/tasks-97.htm
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html lang="en">
+<HEAD>
+
+<meta name="copyright" content="Copyright (c) Freescale Semiconductor and others 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
+<title>Creating resource filters</title>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff">
+<H1>Creating resource filters</H1>
+<p>
+<a href="../concepts/resourcefilters.htm">Resource filters</a> allow the user to configure 
+systematically which file system files and folders are included in the workspace during the 
+refresh operation.
+</p>
+
+<P>To create a resource filter:
+</P>
+
+<ol>
+  <li>In one of the navigation views, right-click the project or folder
+    where you want to create the resource filter.</li>
+  <li>From the pop-up menu, select <b>Properties</b>. The properties dialog will open</li>
+  <li>Expand the <b>Resource</b> section.</li>
+  <li>Click the <b>Resource Filters</b> section.</li>
+  <li>Click <b>Add...</b>.</li>
+  <li>Specify the filter type, to what entries it applies to, and enter the condition.</li>
+  <li>Click <b>OK</b>.</li>
+  <li>Click <b>OK</b>.</li>
+</ol>
+
+<P>
+</P>
+<P><img border="0" src="../images/ngrelc.png" alt="Related concepts" ><br>
+<a href="../concepts/resourcefilters.htm">Resources Filters</a><br>
+<a href="../concepts/concepts-12.htm">Resources</a><br>
+<a href="../concepts/concepts-17.htm">Resource hierarchies</a><br>
+</P>
+
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/timpandexp.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/timpandexp.htm
index 39e06f3..47726aa 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/timpandexp.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/timpandexp.htm
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -15,8 +15,7 @@
 <h1>Importing and exporting preferences</h1>
 <p CLASS="Para">Preference files can be both imported to and exported from the 
   Workbench allowing you to easily share individual or group preferences. </p>
-<p CLASS="Para">The Import wizard can be used to import preferences from the local 
-  file system to the Workbench.</p>
+<p CLASS="Para">The Import wizard can be used to import preferences from the file system to the Workbench.</p>
 <p CLASS="Para">To import a preference file:</p>
 <ol>
   <li>Select 
@@ -24,21 +23,14 @@
   <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
   <strong>File &gt; Import</strong></a>.</li>
   <li>In the Import wizard select <strong>General &gt; Preferences</strong> and click <strong>Next</strong>.</li>
-  <li>Click <strong>Browse...</strong> and locate the Preferences file on the 
-    local file system.</li>
-  <li>Select one of the following: 
-    <ul>
-      <li><strong>Import all</strong> to accept all of the preferences defined 
-        in the file.</li>
-      <li><strong>Choose specific preferences to import</strong> to select only 
-        specified preferences defined in the file.</li>
-    </ul>
-  </li>
+  <li>Click <strong>Browse...</strong> and locate the Preferences file on the file system.</li>
+  <li>Click <strong>Import all</strong> to accept all of the preferences defined in the file.</li>
+  <li>If you want to import only few preferences, choose them from the list.</li>
   <li>Click <strong>Finish</strong>.</li>
 </ol>
 <p CLASS="Para">&nbsp;</p>
 <p CLASS="Para">The Export wizard can be used to export preferences from the Workbench 
-  to the local file system.</p>
+  to the file system.</p>
 <p CLASS="Para">To export a preference file:</p>
 <ol>
   <li>Select
@@ -46,15 +38,9 @@
   <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png">
   <strong>File &gt; Export</strong></a>.</li>
   <li>In the Export wizard select <strong>General &gt; Preferences</strong> and click <strong>Next</strong>.</li>
-  <li>Select one of the following: 
-    <ul>
-      <li><strong>Export all</strong> to add all of the preferences to the file.</li>
-      <li><strong>Choose specific preferences to export</strong> to add only specified 
-        preferences to the file.</li>
-    </ul>
-  </li>
-  <li>Click <strong>Browse...</strong> and locate the preferences file on the 
-    local file system.</li>
+  <li>Click <strong>Export all</strong> to add all of the preferences to the file.</li>  
+  <li>If you want to export only few preferences, choose them from the list.</li>
+  <li>Click <strong>Browse...</strong> and locate the preferences file on the file system.</li>
   <li>Click <strong>Finish</strong></li>
 </ol>
 <p><strong>Note:</strong> If no changes have been made to the original preference 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/topenmode.htm b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/topenmode.htm
index 633c344..9df8b19 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tasks/topenmode.htm
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tasks/topenmode.htm
@@ -2,7 +2,7 @@
 <html lang="en">
 <HEAD>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
@@ -46,7 +46,7 @@ navigate to it.
 </p>
 
 <p><img border="0" src="../images/ngrelr.png" alt="Related reference" ><br>
-<a href="../reference/ref-10.htm">Workbench</a><br>
+<a href="../reference/ref-10.htm">General</a><br>
 </p>
 
 
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tips/images/preference-transfer-compiler.png b/eclipse/plugins/org.eclipse.platform.doc.user/tips/images/preference-transfer-compiler.png
new file mode 100644
index 0000000..0221293
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/tips/images/preference-transfer-compiler.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png b/eclipse/plugins/org.eclipse.platform.doc.user/tips/images/res_build.png
similarity index 100%
copy from eclipse/plugins/org.eclipse.platform.doc.user/images/res_build.png
copy to eclipse/plugins/org.eclipse.platform.doc.user/tips/images/res_build.png
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/tips/platform_tips.html b/eclipse/plugins/org.eclipse.platform.doc.user/tips/platform_tips.html
index e9621d0..eacd732 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/tips/platform_tips.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/tips/platform_tips.html
@@ -3,7 +3,7 @@
 
 <head>
 
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2010. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
 
 <meta http-equiv="Content-Language" content="en-us">
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -394,6 +394,14 @@ productivity. They are divided into the following sections:</p>
       resources are not affected. Copy and paste also work.</td>
   </tr>
   <tr> 
+    <td width="20%" valign="top" align="left"><b>Transfer preferences</b></td>
+    <td width="80%" valign="top" align="left">The preferences can be transferred from
+    one workspace to another by exporting and importing them. In addition, it is possible
+    to only do this for selected categories:
+    <p><img src="images/preference-transfer-compiler.png" alt="New Java Compiler Preference transfer"></p> 
+    </td>
+  </tr>
+  <tr> 
     <td width="20%" valign="top" align="left"><b>Workspace project management</b></td>
     <td width="80%" valign="top" align="left">Use the <b>Project &gt; Close Project</b> 
       command to manage projects within your workspace. When a project is closed, 
@@ -519,7 +527,7 @@ productivity. They are divided into the following sections:</p>
     </td>
     <td valign="top" align="left">Many operations can be optionally 
         run in the background so that you can continue working while they complete.
-      <p><img src="../images/res_build.png" alt="Progress dialog with Run in background button"></p>
+      <p><img src="images/res_build.png" alt="Progress dialog with Run in background button"></p>
       <p>Click <b>Always run in background</b> or toggle this on the
       
       <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Workbench)")'>
@@ -998,6 +1006,13 @@ productivity. They are divided into the following sections:</p>
       characters) and display all the tags that match what you have typed so far. 
       This greatly simplifies finding the desired tag when performing these operations.</TD>
   </TR>
+  <TR>
+    <TD valign="top" align="left"><strong>Applying patches in Sync View</strong>
+      </TD>
+    <TD valign="top" align="left">You can apply patches using the Synchronize view.
+    	This way of applying patches allows to work with other Eclipse features simultaneously, 
+    	so editing files in order to match the patch is possible.</TD>
+  </TR>   
 </table>
 
 </body>
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/topics_Concepts.xml b/eclipse/plugins/org.eclipse.platform.doc.user/topics_Concepts.xml
index 430f36f..9564452 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/topics_Concepts.xml
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/topics_Concepts.xml
@@ -14,7 +14,9 @@
       <topic label="Resources" href="concepts/concepts-12.htm" />
       <topic label="Resource hierarchies" href="concepts/concepts-17.htm" />
       <topic label="Linked resources" href="concepts/concepts-13.htm" />
+      <topic label="Virtual folders" href="concepts/virtualfolders.htm" />
       <topic label="Path variables" href="concepts/cpathvars.htm" />
+      <topic label="Resource filters" href="concepts/resourcefilters.htm" />
       <topic label="Working sets" href="concepts/cworkset.htm"/>
       <topic label="Builds" href="concepts/concepts-22.htm" />
       <topic label="Local history" href="concepts/concepts-17a.htm" />
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/topics_Tasks.xml b/eclipse/plugins/org.eclipse.platform.doc.user/topics_Tasks.xml
index 05ee934..b4b9d38 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/topics_Tasks.xml
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/topics_Tasks.xml
@@ -68,11 +68,13 @@
   <topic label="Creating a folder" href="tasks/tasks-43.htm" />
   <topic label="Creating a file" href="tasks/tasks-44.htm" />
   <topic label="Creating linked resources" href="tasks/tasks-45.htm" />
+  <topic label="Creating virtual folders" href="tasks/tasks-45a.htm" />
   <topic label="Moving resources" href="tasks/tasks-63.htm" />
   <topic label="Copying resources" href="tasks/tasks-63cg.htm" />
   <topic label="Renaming resources" href="tasks/tasks-66.htm" />
   <topic label="Deleting resources" href="tasks/tasks-67.htm" />
   <topic label="Viewing resources properties" href="tasks/tasks-49.htm" />
+  <topic label="Creating resource filters" href="tasks/tasks-97.htm" />
 </topic>
 
 <anchor id="t_afterworking_projects" />
@@ -161,7 +163,10 @@
 <!-- help topics -->
 <topic label="Accessing help" href="tasks/help.xhtml" >
   <topic label="Navigating help topics" href="tasks/help_navigate.htm" />
-  <topic label="Searching help" href="tasks/help_search.htm" />
+  <topic href="tasks/help_search.htm" label="Searching help">
+  </topic>
+  <topic href="tasks/help_scope.htm" label="Using help scopes">
+  </topic>
   <topic label="Accessing context-sensitive help" href="tasks/help_context.htm" />
   <topic label="Help display settings" href="tasks/help_settings.htm" />
   <topic label="Help accessibility" href="tasks/help_accessibility.htm">
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/alternate.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/alternate.png
deleted file mode 100644
index bdcbdbd..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/alternate.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-in-sync-view-preference.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-in-sync-view-preference.png
new file mode 100644
index 0000000..f25ac10
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-in-sync-view-preference.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-syncview.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-syncview.png
deleted file mode 100644
index 80efd92..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-syncview.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-ws.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-ws.png
new file mode 100644
index 0000000..5da82d5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/apply-patch-ws.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/block-selection-mode.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/block-selection-mode.png
deleted file mode 100644
index 2f46941..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/block-selection-mode.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/breakpoint-details.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/breakpoint-details.png
new file mode 100644
index 0000000..736c3a5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/breakpoint-details.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cnf-gointo.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cnf-gointo.png
deleted file mode 100644
index ad95363..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cnf-gointo.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cocoa.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cocoa.png
deleted file mode 100644
index 3b6c5b5..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/cocoa.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/collapse-projection.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/collapse-projection.png
deleted file mode 100644
index 9f5b6a9..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/collapse-projection.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/commitWizardLogicalModels.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/commitWizardLogicalModels.png
new file mode 100644
index 0000000..ee950d5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/commitWizardLogicalModels.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/configure-branches.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/configure-branches.png
new file mode 100644
index 0000000..0c76b68
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/configure-branches.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/contentMergeViewerSwitching.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/contentMergeViewerSwitching.png
deleted file mode 100644
index d04da64..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/contentMergeViewerSwitching.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customicon.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customicon.png
deleted file mode 100644
index 8b33158..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customicon.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customize-perspective.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customize-perspective.png
deleted file mode 100644
index 58565ca..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/customize-perspective.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-1.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-1.png
deleted file mode 100644
index 0d90897..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-1.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-2.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-2.png
deleted file mode 100644
index de5f8bc..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-2.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-3.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-3.png
deleted file mode 100644
index 10cacfc..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/debug-breadcrumb-3.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/dynamicPathVariables.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/dynamicPathVariables.png
new file mode 100644
index 0000000..121aabc
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/dynamicPathVariables.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/edit-button-in-property.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/edit-button-in-property.png
new file mode 100644
index 0000000..7f439c8
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/edit-button-in-property.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/expressions-columns.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/expressions-columns.png
new file mode 100644
index 0000000..85b354f
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/expressions-columns.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-attributes-ui.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-attributes-ui.png
new file mode 100644
index 0000000..57c5536
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-attributes-ui.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-system-import.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-system-import.png
new file mode 100644
index 0000000..0781f1c
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/file-system-import.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/gotoLine.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/gotoLine.png
deleted file mode 100644
index 8baa697..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/gotoLine.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/hide-fvb.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/hide-fvb.png
new file mode 100644
index 0000000..cf66ebd
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/hide-fvb.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-type-dialog.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-type-dialog.png
new file mode 100644
index 0000000..ef8a7e0
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-type-dialog.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-zip.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-zip.png
new file mode 100644
index 0000000..0876756
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/import-zip.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/inaccessible-projects-page.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/inaccessible-projects-page.png
new file mode 100644
index 0000000..7174268
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/inaccessible-projects-page.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/injection_graph_func.js b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/injection_graph_func.js
deleted file mode 100644
index 7216ce4..0000000
--- a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/injection_graph_func.js
+++ /dev/null
@@ -1,463 +0,0 @@
-var skype_injection_path = 'chrome://skype_ff_toolbar_win/content/';
-var skype_tool = null;
-
-/*window.addEventListener("click",skype_click_handler,true);
-function skype_click_handler(event)
-{
-	if (skype_tool)
-		skype_tool.closemenu();
-	//HideSkypeMenuFull();
-} */
-
-//CALL BUTTON
-var SkypeActiveCallButtonPart = 0;
-function SkypeSetCallButtonPart(obj)
-{
-	if (obj.getAttribute('id') == '__skype_highlight_id_left')
-	{
-		SkypeActiveCallButtonPart = 0;
-	}
-	else if (obj.getAttribute('id') == '__skype_highlight_id_right')
-	{
-		SkypeActiveCallButtonPart = 1;
-	}
-}
-
-function SkypeSetCallButton(obj, hl, isInternational, isFax)
-{
-	var cb_part_l = null;
-	var cb_part_ml = null;
-	var cb_part_mr = null;
-	var cb_part_r = null;
-	if (obj.getAttribute('rtl') == 'false')
-	{
-		cb_part_l = obj.firstChild.firstChild;
-		cb_part_ml = obj.firstChild.lastChild;
-		cb_part_mr = obj.lastChild.firstChild;
-		cb_part_r = obj.lastChild.lastChild;
-
-		cb_flag = obj.firstChild.lastChild.firstChild;
-		if (cb_flag && cb_flag.isSameNode(obj.firstChild.firstChild.firstChild) == true)
-			cb_flag = null;
-	}
-	else
-	{
-		cb_part_l = obj.lastChild.lastChild;
-		cb_part_ml = obj.lastChild.firstChild;
-		cb_part_mr = obj.firstChild.lastChild;
-		cb_part_r = obj.firstChild.firstChild;
-
-		cb_flag = obj.lastChild.firstChild.lastChild;
-		if (cb_flag && cb_flag.isSameNode(obj.lastChild.lastChild.lastChild) == true)
-			cb_flag = null;
-	}
-
-	if (hl == 1)
-	{
-		cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_l.gif')";
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_m.gif')";
-		cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_m.gif')";
-
-
-		if (isInternational == "0")
-		{
-			if (SkypeActiveCallButtonPart == 0)    //left
-			{
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseonflag_r"+(isFax?"_fax":"")+".gif')";
-				//shadow
-				if (cb_flag)
-				{
-					cb_flag.style.top = '1px';
-					cb_flag.style.left = '1px';
-					/*top right bottom left*/
-					cb_flag.style.padding = '1px 0px 0px 1px';//'2px 0px 0px 0px';
-				}
-			}
-			else                            //right
-			{
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_r"+(isFax?"_fax":"")+".gif')";
-				//flag
-				if (cb_flag)
-				{
-					cb_flag.style.top = '0px';
-					cb_flag.style.left = '0px';
-					cb_flag.style.padding = '0px 1px 1px 0px';//'0px 1px 1px 0px';
-					cb_flag.style.margin = '0px 0px 2px 0px;';
-				}
-			}
-		}
-		else
-		{
-			cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_mouseover_r"+(isFax?"_fax":"")+".gif')";
-			//flag
-			if (cb_flag)
-			{
-				cb_flag.style.top = '0px';
-				cb_flag.style.left = '0px';
-				cb_flag.style.padding = '0px 1px 1px 0px';
-				cb_flag.style.margin = '0px 0px 2px 0px;';
-			}
-		}
-	}
-	else
-	{
-		cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_l.gif')";
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_m.gif')";
-		cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_m.gif')";
-		cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_normal_r"+(isFax?"_fax":"")+".gif')";
-
-		//flag
-		if (cb_flag)
-		{
-			cb_flag.style.top = '0px';
-			cb_flag.left = '0px';
-			cb_flag.style.padding = '0px 1px 1px 0px';
-			cb_flag.style.margin = '0px 0px 2px 0px;';
-		}
-	}
-}
-var skype_cb_l = '';
-var skype_cb_m = '';
-var skype_cb_r = '';
-
-function SkypeSetCallButtonPressed(obj, pr, isInternational, isFax)
-{
-	var cb_part_l = null;
-	var cb_part_ml = null;
-	var cb_part_mr = null;
-	var cb_part_r = null;
-	if (obj.getAttribute('rtl') == 'false')
-	{
-		cb_part_l = obj.firstChild.firstChild;
-		cb_part_ml = obj.firstChild.lastChild;
-		cb_part_mr = obj.lastChild.firstChild;
-		cb_part_r = obj.lastChild.lastChild;
-
-		cb_flag = obj.firstChild.lastChild.firstChild;
-		if (cb_flag && cb_flag.isSameNode(obj.firstChild.firstChild.firstChild) == true)
-			cb_flag = null;
-	}
-	else
-	{
-		cb_part_l = obj.lastChild.lastChild;
-		cb_part_ml = obj.lastChild.firstChild;
-		cb_part_mr = obj.firstChild.lastChild;
-		cb_part_r = obj.firstChild.firstChild;
-
-		cb_flag = obj.lastChild.firstChild.lastChild;
-		if (cb_flag && cb_flag.isSameNode(obj.lastChild.lastChild.lastChild) == true)
-			cb_flag = null;
-	}
-	if (pr == 1)
-	{
-		skype_cb_l = cb_part_l.style.backgroundImage;//getAttribute('src');
-		skype_cb_m = cb_part_mr.style.backgroundImage;
-		skype_cb_r = cb_part_r.style.backgroundImage;//getAttribute('src');
-
-		if (isInternational == "0")
-		{
-			if (SkypeActiveCallButtonPart == 0)    //left
-			{
-				//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-				cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-				if (cb_part_l.isSameNode(cb_part_ml) != true)
-					cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-			}
-			else                            //right
-			{
-				//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-				cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-				if (cb_part_l.isSameNode(cb_part_ml) != true)
-					cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				//obj.lastChild.lastChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif');
-				cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif')";
-			}
-		}
-		else
-		{
-			//obj.firstChild.firstChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_l.gif');
-			cb_part_l.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_l.gif')";
-			if (cb_part_l.isSameNode(cb_part_ml) != true)
-				cb_part_ml.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-			cb_part_mr.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_m.gif')";
-				//obj.lastChild.lastChild.setAttribute('src', 'chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif');
-			cb_part_r.style.backgroundImage = "url('chrome://skype_ff_toolbar_win/content/cb_down_r"+(isFax?"_fax":"")+".gif')";
-		}
-	}
-	else
-	{
-		//obj.firstChild.firstChild.setAttribute('src', skype_cb_l);
-		cb_part_l.style.backgroundImage = skype_cb_l;
-		if (cb_part_l.isSameNode(cb_part_ml) != true)
-			cb_part_ml.style.backgroundImage = skype_cb_m;
-		cb_part_mr.style.backgroundImage = skype_cb_m;
-		//obj.lastChild.lastChild.setAttribute('src', skype_cb_r);
-		cb_part_r.style.backgroundImage = skype_cb_r;
-	}
-}
-
-//COMMANDS
-function SkypeToolBarInit(tb)
-{
-	skype_tool = tb;
-}
-
-function doRunCMDSkype(event, link, id, name)
-{
-	if (skype_tool)
-	{
-		if (link == 'chdial')
-		{
-			var obj=event.originalTarget;
-			if (!obj)
-				obj=event;
-
-			/*var brd=SkypeGetBounds(obj);
-		   var docelem = document.documentElement;
-		   if ((docelem.scrollTop == 0 && document.body.scrollTop != 0) || (docelem.scrollLeft == 0 && document.body.scrollLeft != 0))
-			   docelem=document.body;
-   
-		   scrollY=docelem.scrollTop;
-		   scrollX=docelem.scrollLeft;
-   
-		   var my=brd.top+16, mx=brd.left;/*brd.height*/
-
-			//var oDoc = obj.ownerDocument;
-
-			/*var obj2 = document.getBoxObjectFor(element);
-   
-		   var html_box = new XPCNativeWrapper(obj2).wrappedJSObject;
-		   if (!html_box)
-			 html_box = obj2;
-   
-		   var screenX = html_box.screenX;
-		   var screenY = html_box.screenY;
-			   */
-
-			SkypeFlagColor='rgb(184, 203, 255)';
-			skype_tool.chprefix(id, document, obj, screenY);
-		}
-		else if (link == 'copy')
-			skype_tool.copy_num(id, document);
-		else if (link == 'sms')
-			skype_tool.sms(id);
-		else if (link == 'add')
-			skype_tool.add(id, name);
-		else
-			skype_tool.call(id);
-	}
-}
-
-function runCMDSkype(link)
-{
-	HideSkypeFull();
-	doRunCMDSkype(null, link, skype_curid, skype_cur_name);
-}
-
-//FLAG TOOLTIP
-function HideSkypeFull()
-{
-	//   skype_active=false;
-	document.getElementById('skype_dc').style.visibility = "hidden";
-}
-
-function ShowSkype(event, title)
-{
-	//  skype_active=true;
-	DoShowSkype(event.pageX, event.pageY + 20, title);
-}
-
-function DoShowSkype(cX, cY, title)
-{
-	var menu = document.getElementById('skype_dc');
-	menu.firstChild.nodeValue = title;
-	menu.style.visibility = "visible";
-
-	menu.style.left = cX + 'px';
-	menu.style.top = cY + 'px';
-
-}
-var SkypeFlagColor = 'rgb(184, 203, 255)';
-function doSkypeFlag(obj, brd)
-{
-	SkypeFlagColor = brd;
-}
-
-//MENU
-var skype_curid = 0,skype_active = false,skype_showseed = 0,skype_ctm = 0,skype_cur_name = '';
-var skype_curbutton = null;
-function SkypeCheckCallButton(obj)
-{
-	var res = false;
-	if (skype_curbutton && skype_curbutton.isSameNode(obj) == true)
-		res = true;
-
-	skype_curbutton = obj;
-	return res;
-}
-
-function HideSkypeMenu()
-{                       //skype_tool.sd('HideSkypeMenu skype_active='+skype_active);
-	if (!skype_active)
-		HideSkypeMenuFull();
-	else
-		setTimeout("HideSkypeMenu()", 1000);
-}
-
-function HideSkypeMenu2(event)
-{
-	skype_showseed = 0;
-	if (!skype_active)
-		HideSkypeMenuFull();
-	else
-	{
-		skype_active = false;
-		setTimeout("HideSkypeMenu()", 1000);
-	}
-}
-
-function HideSkypeMenuFull()
-{                                 //skype_tool.sd('HideSkypeMenuFull skype_active='+skype_active);
-	/*   skype_active=false;
-	document.getElementById('skype_menu').style.visibility="hidden";*/
-}
-
-function CheckSkype()
-{
-	skype_active = true;
-}
-
-function ShowSkypeMenu(event, call_msg, id, callto, isMobile, name, x, y)
-{
-	try {
-		/*  	skype_active=true;       						//skype_tool.sd('ShowSkypeMenu skype_curid='+skype_curid+'   callto='+callto+'  id='+id);
-		if(document.getElementById('skype_menu').style.visibility!="hidden" && skype_curid==callto)//id
-		  return;
-		skype_showseed=Math.random();
-		clearTimeout(skype_ctm);
-	  var obj=event.originalTarget;
-	  if (!obj)
-		  obj=event;
-  //  	var brd=SkypeGetBounds(obj);
-		//var pcx=brd.left, pcy=brd.top+16;/*brd.height;* /   //alert(pcx+'--'+pcy);
-  
-	  scrolls=SkypeGetDivScroll(obj);
-  
-		var pcx = x+scrolls.left, pcy = y+scrolls.top;
-  
-		skype_ctm=setTimeout('DoShowSkypeMenu(\''+call_msg+'\','+skype_showseed+',"'+callto+'",'+pcx+','+pcy+','+isMobile+',"'+name+'")',0);*/
-	} catch(e) {
-	}
-}
-
-function DoShowSkypeMenu(call_msg, seed, callto, pcx, pcy, isMobile, name)
-{
-	try {                                                        //skype_tool.sd('DoShowSkypeMenu seed='+seed+'   skype_showseed='+skype_showseed);
-		/*  	if(seed!=skype_showseed)
-		  return;
-		skype_showseed=0;
-		skype_curid=callto;
-	  skype_cur_name=name;
-		var menu=document.getElementById('skype_menu');
-  
-		var my=pcy, mx=pcx;
-  
-	  var menubox=document.getBoxObjectFor(menu);
-	  //var docelem = document.documentElement;
-									//alert(menubox.height);
-									//alert('doc h='+document.height + ' y='+my+' menu h='+menubox.height);
-	  var docH=document.height;
-	  if (docH < document.documentElement.clientHeight) docH=document.documentElement.clientHeight;
-	  if (docH < document.documentElement.scrollHeight) docH=document.documentElement.scrollHeight;
-	  if (docH < document.body.clientHeight) docH=document.body.clientHeight;
-	  if (docH < document.body.scrollHeight) docH=document.body.scrollHeight;
-	  if ((my + menubox.height) > docH)
-		  my=my - 16 - menubox.height;
-	  if (my < 0) my=0;
-  //    if (document.height != 0 && (my + menubox.height) > document.height && (my + menubox.height) > document.documentElement.scrollHeight)//docelem.clientHeight)
-		  //my=document.height - menubox.height;
-  
-	  var docW=document.width;
-	  if (docW < document.documentElement.clientWidth) docW=document.documentElement.clientWidth;
-	  if (docW < document.documentElement.scrollWidth) docW=document.documentElement.scrollWidth;
-	  if (docW < document.body.clientWidth) docW=document.body.clientWidth;
-	  if (docW < document.body.scrollWidth) docW=document.body.scrollWidth;
-	  if ((mx + menubox.width) > docW)
-		  mx=document.width - menubox.width;
-	  if (mx < 0) mx=0;
-  //	if (document.width != 0 && (mx + menubox.width) > document.width && (mx + menubox.width) > document.documentElement.scrollWidth)//docelem.clientWidth)
-  
-		menu.style.left=mx+'px';
-		menu.style.top=my+'px';
-  
-	  skype_tool.doFixMenu(menu, isMobile, document);
-  
-	  menu.style.visibility="visible";  */
-	} catch(e) {
-	}
-}
-
-function SkypeSetBgColor(obj, color)
-{
-	try {
-		obj.lastChild.style.backgroundColor = color;
-	} catch(e) {
-	}
-}
-
-//UTIL
-function SkypeGetBounds(element)
-{
-	try {
-		var left = element.left;
-		var top = element.top;
-		while (!(element.tagName.toLowerCase() == 'span' && element.getAttribute('id') == '__skype_highlight_id'))
-		{
-			element = element.parentNode;
-		}
-		left = element.offsetLeft;
-		top = element.offsetTop;
-		for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
-		{
-			left += parent.offsetLeft;
-			top += parent.offsetTop;
-			if (parent.tagName.toLowerCase() == 'div')
-			{
-				left -= parent.scrollLeft;
-				top -= parent.scrollTop;
-			}
-		}
-
-
-		return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
-	} catch(e) {
-	}
-}
-
-function SkypeGetDivScroll(element)
-{
-	try {
-		var left = 0;
-		var top = 0;
-		while (!(element.tagName.toLowerCase() == 'span' && element.getAttribute('id') == '__skype_highlight_id'))
-		{
-			element = element.parentNode;
-		}
-
-		for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
-		{
-			if (parent.tagName.toLowerCase() == 'div')
-			{
-				left -= parent.scrollLeft;
-				top -= parent.scrollTop;
-			}
-		}
-
-
-		return {left: left, top: top};
-	} catch(e) {
-	}
-}
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/installhistory.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/installhistory.png
new file mode 100644
index 0000000..159963a
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/installhistory.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/linkedResourcesPropPage.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/linkedResourcesPropPage.png
new file mode 100644
index 0000000..2247866
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/linkedResourcesPropPage.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/localHistoryLimitSize.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/localHistoryLimitSize.png
new file mode 100644
index 0000000..6d7fbcb
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/localHistoryLimitSize.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/matching-might-not-be-optimal.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/matching-might-not-be-optimal.png
new file mode 100644
index 0000000..83012dc
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/matching-might-not-be-optimal.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/multi-instance-properties.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/multi-instance-properties.png
deleted file mode 100644
index cca62c2..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/multi-instance-properties.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-in-compare-editor.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-in-compare-editor.png
new file mode 100644
index 0000000..e94b310
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-in-compare-editor.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-boosting.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-boosting.png
new file mode 100644
index 0000000..252a4ab
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-boosting.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-dialog.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-dialog.png
deleted file mode 100644
index c8c52e6..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-dialog.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path-relative.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path-relative.png
new file mode 100644
index 0000000..fe92f55
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path-relative.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path.png
new file mode 100644
index 0000000..982c6af
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/open-resource-path.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2-license.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2-license.png
new file mode 100644
index 0000000..8e52625
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2-license.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install-details-wizard.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install-details-wizard.png
deleted file mode 100644
index 08e9967..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install-details-wizard.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install.png
deleted file mode 100644
index c8fd4a1..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2install.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2installwizard.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2installwizard.png
deleted file mode 100644
index 10198a3..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2installwizard.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2menu.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2menu.png
deleted file mode 100644
index b2f8e75..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2menu.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2repoprefs2.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2repoprefs2.png
deleted file mode 100644
index f61a80d..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2repoprefs2.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2revert.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2revert.png
deleted file mode 100644
index db8a4c1..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2revert.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard1.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard1.png
deleted file mode 100644
index db40c26..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard1.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard2.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard2.png
deleted file mode 100644
index 6cdd07e..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/p2updatewizard2.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/patch-options-in-sync-view.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/patch-options-in-sync-view.png
new file mode 100644
index 0000000..551bf7e
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/patch-options-in-sync-view.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/proxy-settings-ui.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/proxy-settings-ui.png
deleted file mode 100644
index e77f108..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/proxy-settings-ui.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quickaccess-bindings.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quickaccess-bindings.png
new file mode 100644
index 0000000..d4733fe
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quickaccess-bindings.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quicksearch.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quicksearch.png
deleted file mode 100644
index 49dd156..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/quicksearch.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resize-popups-gtk.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resize-popups-gtk.png
new file mode 100644
index 0000000..74c2b15
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resize-popups-gtk.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resourceFilters.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resourceFilters.png
new file mode 100644
index 0000000..70e4377
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/resourceFilters.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/save-dialog.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/save-dialog.png
new file mode 100644
index 0000000..4159383
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/save-dialog.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/show-ruler-annotation-tooltip.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/show-ruler-annotation-tooltip.png
new file mode 100644
index 0000000..dda4ab8
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/show-ruler-annotation-tooltip.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/solarisx86.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/solarisx86.png
deleted file mode 100644
index 63c9604..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/solarisx86.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/switch-editors.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/switch-editors.png
deleted file mode 100644
index 8a62e84..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/switch-editors.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/sync-schedule.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/sync-schedule.png
deleted file mode 100644
index 9844107..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/sync-schedule.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/syncViewLinkWithEditor.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/syncViewLinkWithEditor.png
new file mode 100644
index 0000000..0f03527
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/syncViewLinkWithEditor.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/tag-history.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/tag-history.png
deleted file mode 100644
index 103186f..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/tag-history.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/taskbarprogress.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/taskbarprogress.png
new file mode 100644
index 0000000..c19c78d
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/taskbarprogress.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/textSelection.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/textSelection.png
deleted file mode 100644
index cf7b955..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/textSelection.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder-properties.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder-properties.png
new file mode 100644
index 0000000..4d02ad5
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder-properties.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder.png
new file mode 100644
index 0000000..2bf3eb6
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/virtual-folder.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/visible-folded-annotations.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/visible-folded-annotations.png
new file mode 100644
index 0000000..d7041fc
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/visible-folded-annotations.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/webkitgtk.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/webkitgtk.png
new file mode 100644
index 0000000..ef51c49
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/webkitgtk.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/welcomescale.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/welcomescale.png
deleted file mode 100644
index 6d337d5..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/welcomescale.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wizardstop.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wizardstop.png
new file mode 100644
index 0000000..7546fda
Binary files /dev/null and b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wizardstop.png differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wordinplace.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wordinplace.png
deleted file mode 100644
index 2acd93e..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/wordinplace.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/workspaces-preference-page.png b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/workspaces-preference-page.png
deleted file mode 100644
index a4f7a4c..0000000
Binary files a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/images/workspaces-preference-page.png and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html
index 2f60a96..5b3d0b2 100644
--- a/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html
+++ b/eclipse/plugins/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html
@@ -1,24 +1,24 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html lang="en">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2009. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page.">
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../book.css"  type="text/css">
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2010. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="../book.css"  type="text/css"/>
 <style type="text/css">
 td {border-top: solid thin black;}
 img[alt] {background-color:#ffdddd;}
 tr {vertical-align: top;}
 </style>
-<title>Eclipse Platform What's New in 3.5</title>
+<title>Eclipse Platform What's New in 3.6</title>
 </head>
 
 <body>
 
-<h2>What's New in 3.5</h2>
+<h2>What's New in 3.6</h2>
 
 <p>Here are descriptions of some of the more interesting or significant changes 
-made to the Eclipse Platform for the 3.5 release of Eclipse. They are grouped into:</p>
+made to the Eclipse Platform for the 3.6 release of Eclipse. They are grouped into:</p>
 
 <ul>
 <li><a href="#Platform">Platform Changes</a></li>
@@ -37,8 +37,8 @@ document in the plug-in developer's guide.
 <!-- ****************** START OF N&N TABLE ****************** -->
 <table cellpadding="10" cellspacing="0" width="600">
   <colgroup>
-  <col width="30%">
-  <col width="70%">
+  <col width="30%"/>
+  <col width="70%"/>
   </colgroup>
   <tbody>
     <!-- ******************** Platform ********************** -->
@@ -47,190 +47,204 @@ document in the plug-in developer's guide.
           Changes</div></td>
     </tr>
 
-  <tr id="cocoa">
-    <td width="30%" valign="top" align="left"><b>Eclipse on Cocoa</b></td>
-    <td width="70%" valign="top">32 and 64-bit OSX Cocoa have joined the line-up of supported configurations for which SWT and Eclipse are routinely
-	built. Cocoa is now a first class Eclipse configuration, including advanced libraries such as OpenGL for SWT. Cocoa replaces Carbon
-	as the primary toolkit for Eclipse and SWT on Mac.
-	<p>
-	  <img src="images/cocoa.png" alt="Eclipse on Cocoa">
-	</p>
+  <tr> 
+    <td width="30%" valign="top" align="left">
+      <b>New platforms</b>
     </td>
+    <td width="70%" valign="top">
+     PowerPC 64-bit, Windows 7, and Ubuntu LTS 10.04 have joined the line-up of supported configurations 
+     for which SWT and Eclipse are routinely built and tested.
+    </td> 
   </tr>
 
-  <tr id="solaris-x86"> 
-    <td width="30%" valign="top" align="left"><b>Solaris x86</b></td>
-    <td width="70%" valign="top">Solaris x86 has joined the line-up of supported configurations for which SWT and Eclipse are routinely built.
-		<p><img src="images/solarisx86.png" alt="Solaris x86"></p>
+  <tr id="platform-open-file">
+    <td width="30%" valign="top" align="left"><b>Opening a file from the command line</b></td>
+    <td width="70%" valign="top">Based on work in SWT and the native launcher, the 
+    Eclipse IDE now supports opening a file from the command line, or opening a file that 
+    has been associated with the Eclipse executable. If an instance of Eclipse is already running, 
+    that instance will open the file. Otherwise, a new instance will be started.
+	</td>
+	</tr>
+
+  <tr id="resource-filters">
+    <td width="30%" valign="top" align="left"><b>Resource filters</b></td>
+    <td width="70%" valign="top">Projects and folders can now be configured to omit some of their
+    children in the file system from the workspace. The filtered files and directories will not
+    appear in views such as the <b>Project Explorer</b>, and won't be processed by 
+    workspace facilities such as builders. Filters can be configured on the <b>Resource Filters</b> 
+    page in the <b>Properties</b> dialog. When a filter is added, the following attributes have to be set.
+    <ul>
+    	<li><b>Filter type</b> - determines whether only matching resources should be visible (<b>Include</b>) or whether all matching resources should be hidden (<b>Exclude</b>)</li>
+    	<li><b>Applies to</b> - determines the type of resources that should be affected (files, folders, or both)</li>
+    	<li><b>All children (recursive)</b> - indicates that the filter should be used for the entire resource subtree</li>
+    	<li><b>File and Folder Attributes</b> - specifies the filter condition</li>
+	</ul>
+    <p><img src="images/resourceFilters.png" alt="Resource Filters" /></p></td>
+  </tr> 
+
+  <tr id="dynamic_path_variables">
+    <td width="30%" valign="top" align="left"><b>Dynamic path variables</b></td>
+    <td width="70%" valign="top">Linked resources can define their locations 
+    relative to user-defined <i>path variables</i>.
+    Now, a set of predefined path variables are available:
+    <ul>
+  		<li><b>PROJECT_LOC</b> - pointing out the project location</li>
+  		<li><b>WORKSPACE_LOC</b> - pointing out the workspace location</li>
+	</ul>
+	<p>When these variables are used, they are dynamically resolved based on the context 
+	of a linked resource. Those predefined variables may be also used to build user-defined variables.
+	</p>
+    <p><img src="images/dynamicPathVariables.png" alt="Dynamic Path Variables" /></p>
+    <p><img src="images/linkedResourcesPropPage.png" alt="Linked Resources Property Page" /></p>
 	</td>
   </tr>
 
-  <tr id="s390"> 
-    <td width="30%" valign="top" align="left"><b>Eclipse on s390 and s390x</b></td>
-    <td width="70%" valign="top">It's time to dust off that old mainframe in your basement, because Eclipse has
-    arrived on the s390 and s390x architectures. This new port is still early access, so give
-    it a spin and report any problems you encounter in bugzilla.
-	</td>
+  <tr id="virtual_folders">
+    <td width="30%" valign="top" align="left"><b>Virtual folders</b></td>
+    <td width="70%" valign="top"><b>Virtual folders</b> are a new type of resource that exist only in the workspace and
+    are not backed by a directory in your file system. These folders can be used to create more flexible project structures
+    by bringing together links to files spread throughout your file system.
+    <p>
+    Since virtual folders do not exist in the local file system, they can only
+    contain other virtual folders and linked resources.
+    </p>
+    <p><img src="images/virtual-folder.png" alt="Virtual Folders" /></p>
+    <p><img src="images/virtual-folder-properties.png" alt="Virtual Folders Properties" /></p></td>
+  </tr> 
+
+  <tr id="filesystem_import">
+    <td width="30%" valign="top" align="left"><b>File system import wizard</b></td>
+    <td width="70%" valign="top">The file system import wizard now supports creating
+    	virtual folders and linked files and folders.
+      <p><img src="images/file-system-import.png" alt="File System Import Wizard" /></p>
+      <p>Linked files and folders can also be created relative to a path variable.</p></td>
   </tr>
 
-  <tr id="buttonorder">
-    <td width="30%" valign="top" align="left"><b>Alternate button order</b></td>
+  <tr id="webkitgtk">
+    <td width="30%" valign="top" align="left"><b>Browser can use WebKitGTK+</b></td>
     <td width="70%" valign="top">
-		On GTK, it is now possible to change the default button order for Eclipse.  
-		To have the <b>OK</b> button on the left, edit the ~/.gtkrc-2.0 file and include the line 
-		"gtk-alternative-button-order=1".
-		<p><img src="images/alternate.png" alt="Alternate button order"></p>
+      Linux users can now use WebKitGTK+ instead of Mozilla as the Browser control's native renderer.  See
+      <a href="http://www.eclipse.org/swt/faq.php#browserwebkitgtk">Can the Browser use the WebKit renderer on GTK?</a>.
+      <p><img src="images/webkitgtk.png" alt="WebKitGTK+ Image"/></p>
 	</td>
   </tr>
 
-  <tr id="customize-perspective">
-    <td width="30%" valign="top" align="left"><b>Customize menus and toolbars</b></td>
-    <td width="70%" valign="top">The customize perspective dialog has been improved and
-      extended with new functionality. It can now be used to hide or show individual menu 
-      or toolbar items.
-      <p><img src="images/customize-perspective.png" alt="Customize Perspective dialog"></p>
-   </td>
-  </tr>
-
-  <tr id="multi-instance-properties">
-    <td width="30%" valign="top" align="left"><b>Multi-instance Properties view</b></td>
-    <td width="70%" valign="top">You can now pin the Properties view to a given selection.
-    This allows you to see the properties of a particular selection while 
-    having the freedom to select alternate items.
-    <p>You can now create new instances of the Properties view from an existing 
-    one. The existing one will be pinned to the contents it is currently 
-    displaying and the new view will be set to follow the workbench's 
-    selection.</p>
-    <p><img src="images/multi-instance-properties.png" alt="The Multi-instance Properties View"></p>
+  <tr id="unix-file-permissions">
+    <td width="30%" valign="top" align="left"><b>UNIX file permissions</b></td>
+    <td width="70%" valign="top">The full set of UNIX file permissions are now supported.
+	The attributes can be managed from the <b>Resource Properties</b> page.
+        <p><img src="images/file-attributes-ui.png" alt="File attributes UI" /></p>
     </td>
   </tr>
 
-  <tr id="workspace-compare-editor-enhancements">
-    <td width="30%" valign="top" align="left"><b>Compare Editor enhancements</b></td>
-    <td width="70%" valign="top"> 
-    New features have been added to the Compare Editor:
-    <ul>
-    	<li>The <b>Go to Line</b> action added to the context menu allows for rapid navigation</li>
-    	<li>The current text selection will be used to populate the filter field of the <b>Open Type</b> and <b>Open Resource</b> dialogs</li>
-    	<li>The current line is now highlighted in each viewer</li>
-    	<li>Background and foreground color preferences are now honored</li>
-    	<li> The <b>Set Encoding...</b> action has been added to the context menu. 
-    	This allows you to change the encoding of each side of the comparison</li>
-   	</ul>
-    <p><img src="images/gotoLine.png" alt="Go to Line" ></p>
-    <p><img src="images/textSelection.png" alt="TextSelection" ></p>
-	</td>
-  </tr>
-
-    <TR id="compare-word">
-      <TD vAlign=top align=left width="30%"><B>Compare Word documents</B></TD>
-      <TD vAlign=top width="70%">Comparing Word document changes in Eclipse now
-        uses the Word compare support to show you the changes as revisions.
-        <P><IMG alt="Compare Word documents" 
-      src="images/wordinplace.png" ></p></TD>
-    </TR>
-
-  <tr id="workspace-compare-switch-viewer">
-    <td width="30%" valign="top" align="left"><b>Switching compare viewers</b></td>
-    <td width="70%" valign="top">The <b>Compare Editor</b> allows you to switch to 
-      optional merge viewers available for the compared content. For instance, while comparing 
-      two Java files, you can use the simple <b>Text Compare</b> viewer instead of the default <b>Java 
-      Source Compare</b>.
-      <p>You can also switch between content-specific merge viewers; 
-      for example when an alternative Java compare viewer is available, you can use it instead of the default one.</p>
-      <p><img src="images/contentMergeViewerSwitching.png" alt="Viewer switching" ></p>
-	</td>
-  </tr>
-
-  <tr id="open-resource-open-with">
+  <tr id="open-resource-paths">
     <td width="30%" valign="top" align="left">
-        <b>Open Resource dialog allows choice of editor</b>
+        <b>New features in Open Resource dialog</b>
     </td>
     <td width="70%" valign="top">
-        The Open Resource dialog now allows you to open files with the the editor of your choice.
-        You can either choose the editor from the <b>Open With</b> context menu or
-        use the drop-down menu besides the <b>Open</b> button.
-        <p><img src="images/open-resource-dialog.png" alt="Open Resource dialog"></p>
+        The <b>Open Resource</b> dialog supports three new features:
+        <p>&bull; <b>Path patterns:</b> If the pattern contains a /, the part before the last / is used to match a path in the workspace:</p> 
+          <p><img src="images/open-resource-path.png" alt="Open Resource dialog with pattern '*/jface/w*/pa.html'"/></p> 
+        <br/>
+        <p>&bull; <b>Relative paths:</b> For example, "./T" matches all files starting with T in the folder of the active editor or selection:</p>
+          <p><img src="images/open-resource-path-relative.png" alt="Open Resource dialog with pattern './T'"/></p> 
+        <br/>
+        <p>&bull; <b>Closer items on top:</b> If the pattern matches many files with the same name, the files that are closer
+          to the currently edited or selected resource are shown on top of the matching items list.</p>
+          <p><img src="images/open-resource-boosting.png" alt="Open Resource dialog with pattern 'mak', matching many makefiles"/></p> 
     </td>
   </tr>
 
-  <tr id="switch-editors">
-    <td width="30%" valign="top" align="left">
-        <b>Switch editors and multi-page editors</b>
-    </td>
-    <td width="70%" valign="top">
-        Switching between open editors and multiple editor pages has been streamlined.
-        <b>Ctrl</b>+<b>PageDown</b> and <b>Ctrl</b>+<b>PageUp</b> now always activate the next or
-        previous editor tab, even in multi-page editors. To switch between pages of a multi-page
-        editor, use <b>Alt</b>+<b>PageDown</b> and <b>Alt</b>+<b>PageUp</b>.
-        <p><img src="images/switch-editors.png" alt="Multi-page editor (PDE manifest editor)"></p>
+   <tr id="platui-2">
+    <td width="30%" valign="top" align="left"><b>Progress shown in platform task bar</b></td>
+    <td width="70%" valign="top">Progress for long running operations is now shown in 
+    the platform task bar on platforms that support this feature.  Progress is shown for
+    long running tasks such as workbench startup, install, update, and repository synchronization.
+    <p> <img src="images/taskbarprogress.png" alt="Progress View and Win 7 Task Bar indicating the same progress" title="Progress in Win7 Task Bar"/></p>
     </td>
   </tr>
 
-  <tr id="workspace_team-proxy-settings-ui">
-    <td width="30%" valign="top" align="left"><b>Improved Network Connections page</b></td>
-    <td width="70%" valign="top">
-	The <b>Network Connection</b> page has been changed to better show the current
-	proxy configuration. Now if you go to <b>Preferences &gt; General &gt; Network Connections</b>,
-	you are able to see and change Eclipse proxy settings as well as see 
-	settings provided by the operating system. If you want to use your browser
-	or Gnome settings, or you have your proxy configured using environmental variables on Linux, 
-	you can see them all in this new UI.
-    <p><img src="images/proxy-settings-ui.png" alt="New Proxy Settings UI" ></p>
-	</td>
+   <tr id="platui-1">
+    <td width="30%" valign="top" align="left"><b>Canceling long-running operations in wizards</b></td>
+    <td width="70%" valign="top">There is now a stop button adjacent to the progress bar when a wizard is running
+       a long operation.  You can press the stop button (or the <b>Enter</b> or <b>Space</b> key) to cancel the operation
+       being shown in the progress bar.
+       <p> <img src="images/wizardstop.png" alt="Wizard with a progress bar and stop button" title="Wizard with Stop Button"/></p>
+    </td>
   </tr>
 
-  <tr id="workspaces_preference_page">
-    <td width="30%" valign="top" align="left"><b>Workspaces preference page</b></td>
-    <td width="70%" valign="top">A new preference page supports managing the startup prompt to select a
-    workspace: <b>General &gt; Startup and Shutdown &gt; Workspaces</b>. You can
-    enable or disable the prompt altogether (this setting used to be on 
-    <b>General &gt; Startup and Shutdown</b>) and specify the maximum number of
-    recent workspaces to be remembered. The page also lists the recently used
-    workspaces and allows you to remove unwanted workspaces from that list.
-    <p><img src="images/workspaces-preference-page.png" alt="The Workspaces preference page"></p></td>
+  <tr id="quick-access-keybindings">
+    <td width="30%" valign="top" align="left"><b>Quick Access now shows keybindings for commands</b></td>
+    <td width="70%" valign="top"><b>Quick Access</b> (<b>Ctrl+3</b>) now shows keybindings for commands so you can
+        save yourself from all that typing and just use the keyboard shortcut the next time you need
+        to run a command.
+      <p><img src="images/quickaccess-bindings.png"
+      alt="Quick Access dialog displaying two commands and their associated keybindings at the end of the command's description."/></p></td>
   </tr>
 
-  <tr id="platform-ui.cnf.gointo">
-    <td width="30%" valign="top" align="left"><b>Project Explorer improvements</b></td>
-    <td width="70%" valign="top">As a step in the campaign to bring
-    the <b>Project Explorer</b> up to parity with the <b>Package Explorer</b>, the
-    <b>Go Into</b> and <b>Go To</b> functionality has been added.  You can now
-    go into any folder/project/etc. and have that be the only contents of the <b>Project Explorer</b>.
-    <p><img src="images/cnf-gointo.png" alt="Showing the Project Explorer after Go Into selected" title="Go Into" border="1"></p>
-    </td>
+  <tr id="wizard-keywords">
+    <td width="30%" valign="top" align="left"><b>Search keywords in wizards</b></td>
+    <td width="70%" valign="top">The <b>File &gt; New</b>, <b>File &gt; Import...</b>,
+    and <b>File &gt; Export...</b> wizards now support searching by keyword. You can type
+    a search term that doesn't appear in the wizard name, and the term will match against
+    search keywords registered for that wizard. For example if you search for "zip" or
+    "directory" in the import wizard, you will be shown the wizards for importing from
+    archives or the file system, respectively.
+    <p><img src="images/import-zip.png" alt="Keyword search in wizards"/></p>
+	</td>
   </tr>
 
-      <!-- ******************** User Assistance ********************** -->
-
-  <tr id="customIcons">
-    <td width="30%" valign="top" align="left"><b>Custom icons in help system</b></td>
-    <td width="70%" valign="top">Custom icons can be specified for books and topics in the help system using
-	the &lt;tocIcon&gt; element in the <tt>org.eclipse.help.toc</tt> extension point. 
-      <p><img src="images/customicon.png" alt="table of contents"></p></td>
+  <tr id="workspace_local-history-limit-size">
+    <td width="30%" valign="top" align="left"><b>Local History pruning can be disabled</b></td>
+    <td width="70%" valign="top">The local history size constraints can now be disabled. 
+    Users that never want to discard history no longer need to wait on shutdown for 
+    history cleanup to occur. To disable history cleaning, go to
+    <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.FileStates)")'>
+    <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the preference page"/>
+    <b>Preferences &gt; General &gt; Workspace &gt; Local History</b></a>
+    and disable <b>Limit history size</b>.
+	Note that when this option is chosen, disk usage for the workspace local history 
+	will continue to grow indefinitely.
+	<p><img src="images/localHistoryLimitSize.png" alt="Limit history size"/></p></td>
+  </tr> 
+
+  <tr id="hideFVB">
+    <td width="30%" valign="top" align="left"><b>Hide empty fast view bars</b></td>
+    <td width="70%" valign="top">
+	In order to clean up the UI and gain some space in the trim area, there is a new preference on the
+	<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Perspectives)")'>
+	<img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the preference page"/>
+	<strong>General &gt; Perspectives</strong></a>
+	page that allows you to
+	hide the Fast View Bar when it's empty. Note that this option does not inhibit the functionality; if there are
+	fast views in the perspective (or you make a view a fast view) the bar will be shown regardless of the preference
+	setting.
+	<p>	<img src="images/hide-fvb.png" alt="Hide the fast view bar" /></p></td>
   </tr>
 
-  <tr id="welcomeFont">
-    <td width="30%" valign="top" align="left"><b>Buttons to change font size in Welcome</b></td>
-    <td width="70%" valign="top">To improve accessibility two new buttons (a large and a small 'A') have been 
-    added above the welcome area which can be used to increase or decrease the font size on the welcome pages. 
-    <p><img src="images/welcomescale.png" alt="welcome page"></p></td>
+  <tr id="edit-link-location">
+    <td width="30%" valign="top" align="left"><b>Edit linked resource location</b></td>
+    <td width="70%" valign="top">Linked resource locations can now be changed
+    	by selecting the <b>Edit...</b> button in the <b>Resource Properties</b> page.
+    	<p><img src="images/edit-button-in-property.png" border="0" alt="Edit Button"/></p>
+    </td>
   </tr>
 
-  <tr id="abouthtml">
-    <td width="30%" valign="top" align="left"><b>About page in help system</b></td>
-    <td width="70%" valign="top">It is now possible to open a web page, about.html from 
-    the help system that shows plug-in version information. This makes it possible to determine 
-    the versions of plug-ins running in a Help information center.</td>
+  <tr id="file-drag-dialog">
+    <td width="30%" valign="top" align="left"><b>File and folder operation dialog</b></td>
+    <td width="70%" valign="top">When dragging files and folders from the operating system 
+    	shell (such as Windows Explorer) onto <b>Project Explorer</b>, a dialog appears 
+    	to let you choose how the files should be imported.
+    	<p>The dialog allows you to simply copy files and folders (the traditional operation)
+    	but also easily create linked resources and virtual folders hierarchies in a project folder 
+    	by simply drag and dropping files and folders.</p>
+    	<img src="images/import-type-dialog.png" border="0" alt="Import File Operation Dialog" />
+      <p>The dialog also creates project path variable relative linked resources automatically,
+      	so that projects remains portable while using linked resources.</p>
+      </td>
   </tr>
 
-  <tr id="helpQuickSearch">
-    <td width="30%" valign="top" align="left"><b>Help quick search</b></td>
-    <td width="70%" valign="top">A search of the help system can be initiated with a  
-      scope limited to the selected book or topic.
-      <p> <img src="images/quicksearch.png" alt="help quick search"></p>
-    </td>
-  </tr>
+      <!-- ******************** User Assistance ********************** -->
 
       <!-- ******************** Install/Update ********************** -->
 
@@ -238,124 +252,95 @@ document in the plug-in developer's guide.
       <td colspan="2"><a name="Install"></a> <div style="font-size: 20px; font-weight: bold;">Install/Update Changes</div></td>
     </tr>
 
-  <tr id="p2ui-software-updates">
-    <td width="30%" valign="top" align="left"><b>Software updates menu items</b></td>
-    <td width="70%" valign="top">New menu items have been added to the <b>Help</b> menu, allowing you to
-       invoke the most common software management tasks immediately.  Instead of launching a single updates dialog and navigating pages with
-       action buttons, you can now perform common tasks immediately from the <b>Help</b> menu.
-       <p> <img src="images/p2menu.png" alt="Software updates menu items in the Help menu" title="Software Updates Menu Items"></p>
-       <p>For example, you can now check for software updates in one step using <b>Help &gt; Check for Updates</b>.
-       This menu command will check for updates (in the foreground or background depending on your 
-       <b>General &gt; Always run in background</b> preference), and launch the software updates wizard if updates are available.</p>
+  <tr id="p2-license"> 
+    <td width="30%" valign="top" align="left"><b>Grouping by license in install wizard</b></td>
+    <td width="70%" valign="top">Software to install is now grouped by license
+    in the <b>Review Licenses</b> page of the install wizard. This means you no longer need to select each item being
+    installed to ensure all applicable licenses have been reviewed.
+     <p><img src="images/p2-license.png" alt="Install wizard license review page"/></p>
     </td>
   </tr>
 
-  <tr id="p2ui-installing-new-software">
-    <td width="30%" valign="top" align="left"><b>Installing new software</b></td>
-    <td width="70%" valign="top">The <b>Available Software</b> page has been merged into the install wizard and
-       can be accessed using <b>Help &gt; Install New Software...</b>.   The same navigation features previously 
-       appearing in the <b>Available Software</b> page, such as filtering and viewing by site, category, or name, 
-       are now on the first page of the wizard.
-       <p> <img src="images/p2installwizard.png" alt="Available Software Page in the Install Wizard" title="Available Software Wizard Page"></p>
-       <p>Some of the most common workflow and usability complaints have also been addressed:</p>
-       <ul><li>The wizard will now open immediately without waiting to connect to any update sites.
-       This makes the view itself much more responsive once the wizard is opened.</li>
-       <li>A description field has been added to the page to show more information about the selected item.</li>
-       <li>You can now change many selections at once without computing the install results on each change.  Once 
-       you've selected the items to install, the <b>Next</b> button will take you to the review page.  If there
-       is an error or you otherwise want to change your selections, you can now go back and change the selections in the first
-       page, and the resulting changes won't be computed until you move forward again.</li>
-       </ul>
-    </td>
+  <tr id="ntlm-support"> 
+    <td width="30%" valign="top" align="left"><b>NTLMv2 proxy support</b></td>
+    <td width="70%" valign="top">Support has been added to the platform for communicating
+    with NT Lan Manager proxies (NTLMv2). You can now install and update software
+    in the Eclipse user interface when running behind proxies that use this protocol.</td>
   </tr>
 
-  <tr id="p2ui-install-from-new-site">
-    <td width="30%" valign="top" align="left"><b>Installing software from a new site</b></td>
-    <td width="70%" valign="top">The install wizard has been reorganized to make it simpler to
-       add a new site and install software from it.  You can add a new site by typing, pasting, or
-       dragging a URL link into the <b>Work with</b> combo box.  You can also use the <b>Add...</b> button
-       to add a site. Auto-completion on names and locations is supported when typing in the <b>Work with</b> field,
-       including completion of repositories that are currently disabled.
-       <p>Only the content for a newly added site will be shown, making it simpler to find
-       what you want to install.  You can also use the combo to change the filtering of the available software by any
-       site.  The wizard has also been streamlined by placing the links to other views closer to the
-       relevant information in the wizard.</p>
-       <p> <img src="images/p2install.png" alt="Available Software view in Install Wizard" title="Install Wizard"></p>
-       <p>A new checkbox at the bottom of the page lets you control whether all sites will be used when
-       searching for the new software's requirements, or whether only the site selected will be
-       consulted.  Previously, all sites were always used when gathering the requirements.</p>
+  <tr id="p2ui-1">
+    <td width="30%" valign="top" align="left"><b>Comparing configurations in the Installation History</b></td>
+    <td width="70%" valign="top">The <b>Installation History</b> page now allows you to compare two different
+       installation history configurations.  Now you can more easily see what was installed, uninstalled, or updated
+       in the various installation configurations.  You can also delete unwanted installation configurations
+       in order to reduce clutter and free up disk space.
+       <p> <img src="images/installhistory.png" alt="Compare button in the Installation History Page" title="Installation History Page"/></p>
     </td>
   </tr>
 
-  <tr id="p2ui-install-wizard">
-    <td width="30%" valign="top" align="left"><b>More detail in install wizards</b></td>
-    <td width="70%" valign="top">The wizards for installing, updating, and uninstalling software now provide
-       more detailed information about the software required to complete an operation.  For example, when you 
-       install a feature, you will see a list of the other features required that will also be installed.
-       <p> <img src="images/p2install-details-wizard.png" alt="Install wizard with detail" title="Install Wizard"></p>
-       <p>The update wizard has also been reorganized so that you can change your update selections
-       in a separate selection page.  When available updates are shown, the wizard will open directly
-       on the details page.</p>
-       <p> <img src="images/p2updatewizard1.png" alt="Update wizard detail" title="Update Wizard Detail Page"></p>
-       <p>From this page, use the wizard <b>&lt; Back</b> button to see all of the possible update proposals and
-       change the selections.</p>
-       <p> <img src="images/p2updatewizard2.png" alt="Update wizard with multiple proposals" title="Update Wizard Selection Page"></p>
-    </td>
-  </tr>
+    <!-- ******************** Text ********************** -->
+    <tr> 
+      <td colspan="2"><a name="Text"></a> <div style="font-size: 20px; font-weight: bold;">Editor Changes</div>
+      <p>
+      <em>These changes apply to all textual editors in the SDK.</em></p></td>
+    </tr>
 
-  <tr id="p2ui-info-in-about">
-    <td width="30%" valign="top" align="left"><b>Installation information now appears in About</b></td>
-    <td width="70%" valign="top">The <b>Installed Software</b> and <b>Installation History</b> pages
-       have been moved into the new <b>Installation Details</b> dialog.  To access these pages, choose <b>Help&gt;About</b>
-       and press the <b>Installation Details</b> button. In addition, you can now expand the top level items in the 
-       <b>Installed Software</b> page to see what software each item requires. From the
-       <b>Installation History</b> page you can browse previous install configurations, and
-       <b>Revert</b> to previous configurations.
-       <p> <img src="images/p2revert.png" alt="Installation History page in Installation Information dialog" title="Installation History"></p>
+  <tr id="resize-popups-gtk">
+    <td width="30%" valign="top" align="left">
+        <b>Resize content assist and hover pop-ups under Linux</b>
+    </td>
+    <td width="70%" valign="top">
+        Content assist and most hover pop-ups are now resizable in textual editors under Linux/GTK.
+       <p><img src="images/resize-popups-gtk.png" alt="Content assist popup with resize trim"/></p>
     </td>
   </tr>
 
-  <tr id="p2ui-software-sites-preferences">
-    <td width="30%" valign="top" align="left"><b>Software sites preference page</b></td>
+  <tr id="all-folded-annotations-visible">
+    <td width="30%" valign="top" align="left">
+        <b>All folded annotations are now visible in the rulers</b>
+    </td>
     <td width="70%" valign="top">
-       The available sites for installing and updating software are now managed from 
-       a preference page (<b>Preferences &gt; Install/Update &gt; Available Software Sites</b>). 
-       To find a particular site quickly, you can sort by name, location, or enablement.  You can also use the filter field to filter the list of sites.
-	   
-	   <p>This preference page also allows you to define your own name for available
-	   software sites. Names can be defined when adding a new site, or edited from the available
-	   sites preference page. If you don't provide a name, the name defined by the site itself will be used.
-	   </p>
-       <p> <img src="images/p2repoprefs2.png" alt="Available Software Sites preference page" title="Available Software Sites"></p>
+        Until now, only errors and warnings were shown in the vertical and overview ruler when code is folded. As of this release,
+        all annotations from the folded region are visible:
+        <p><img src="images/visible-folded-annotations.png" alt="Vertical and overview ruler annotations for folded code"/></p> 
     </td>
   </tr>
 
-    <!-- ******************** Text ********************** -->
-    <tr> 
-      <td colspan="2"><a name="Text"></a> <div style="font-size: 20px; font-weight: bold;">Editor Changes</div>
-      <p>
-      <em>These changes apply to all textual editors in the SDK.</em></p></td>
-    </tr>
+  <tr id="ruler-annotation-tooltip">
+    <td width="30%" valign="top" align="left"><b>Show ruler annotation tooltip command</b></td>
+    <td width="70%" valign="top">The annotation tooltip that appears when you hover over 
+    an icon in the vertical ruler on the left of a textual editor can now also be shown by pressing a key sequence. 
+        However, out of the box no key sequence is defined for that. Go to the
+        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Keys)")'>
+        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the preference page"/>
+        <strong>General &gt; Keys</strong></a>
+        preference page to assign a key sequence to the <b>Show Ruler Annotation Tooltip</b> command.      
+        <p><img src="images/show-ruler-annotation-tooltip.png" alt="Text editor with ruler annotation tooltip"/></p>         
+    </td>
+  </tr>
 
-  <tr id="block-selection-mode">
+  <tr id="save-unmappable-chars">
     <td width="30%" valign="top" align="left">
-        <b>Block selection mode in textual editors</b>
+        <b>Better handling of unmappable characters on save</b>
     </td>
     <td width="70%" valign="top">
-    	Textual editors now support block (aka column or rectangular) selection mode:
-       <p> <img src="images/block-selection-mode.png" alt="Block selection in text editor"></p>
-       <p>To enable it either use <b>Alt+Shift+A</b> or activate the 'Editor Presentation' action set to get
-       		a tool bar button for toggling the block selection mode.</p>  
+        There is now better support for characters that cannot be saved with the current encoding:
+       <p><img src="images/save-dialog.png" alt="Save dialog in case of unmappable characters"/></p> 
     </td>
   </tr>
 
-  <tr id="collapse-projection">
+
+  <tr id="print-dialog-remembers-options">
     <td width="30%" valign="top" align="left">
-        <b>Double-click on folding line collapses the folding region</b>
+        <b>Print dialog remembers user selected options </b>
     </td>
     <td width="70%" valign="top">
-        Double-click on the vertical folding line now collapses the folding region:
-       <p><img src="images/collapse-projection.png" alt="Double-click collapses the folding region" ></p>
+    	The <b>Print</b> dialog now remembers the following user selected options for all textual editors until the workbench is shutdown:
+    	<ul>
+    		<li>Selected printer</li>
+    		<li>Print to file</li>
+    		<li>Printer preferences: These are printer specific options like paper size, page order orientation etc.</li>
+    	</ul>
     </td>
   </tr>
 
@@ -365,28 +350,80 @@ document in the plug-in developer's guide.
           Changes</div></td>
     </tr>
 
-    <TR id=tagHistory>
-      <TD vAlign=top align=left width="30%"><B>History in Tag Resources dialog</B></TD>
-      <TD vAlign=top width="70%">When tagging a project you can now choose a
-        previously used tag.
-        <P><IMG alt="The Tag Resources dialog with the history list" 
-      src="images/tag-history.png" ></p></TD>
-    </TR>
-
-    <TR id=applyPatch>
-      <TD vAlign=top align=left width="30%"><B>Apply patch in the Synchronize
-          view</B></TD>
-      <TD vAlign=top width="70%">You can now apply a patch directly in the Synchronize
-        view.
-        <P><IMG alt="Apply patch in the Synchronize view" 
-      src="images/apply-patch-syncview.png" ></p></TD>
-    </TR>
-
-  <tr id="workspace_sync-schedule">
-    <td width="30%" valign="top" align="left"><b>More options for synchronization scheduling</b></td>
-    <td width="70%" valign="top">New options are available in the Configure Synchronize Schedule dialog.
-    Synchronization can be started at a specified time, run once or repeated at selected intervals.
-    <p><img src="images/sync-schedule.png" alt="Synchronize schedule dialog" ></p></td>
+  <tr id="open-in-compare-editor.png">
+    <td width="30%" valign="top" align="left"><b>Enhanced Open in Compare editor menu</b></td>
+    <td width="70%" valign="top">    
+    The context menu of the <b>Compare</b> editor contains <b>Open</b> and <b>Open With</b> actions, 
+    which open the file in full-fledged editors. Now, these actions set the selection and the caret position 
+    in the newly opened editor based on the selection in <b>Compare Editor</b>.
+    <p><img src="images/open-in-compare-editor.png" alt="Open in Compare Editor" />
+    </p>
+      </td>
+  </tr>
+
+  <tr id="patch-sync-view">
+    <td width="30%" valign="top" align="left"><b>Apply patch in Synchronize view</b></td>
+    <td width="70%" valign="top">
+    	The <b>Synchronize</b> view now allows to synchronize with a patch either by pasting
+    	the patch into the view or by using the <b>Synchronize</b> wizard. If you prefer
+    	this new way of applying patches, you can replace the modal <b>Apply Patch</b>
+    	dialog with the <b>Synchronize</b> view by selecting the 
+    	new <b>Apply patch in Synchronize view</b> option on the
+        <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.team.ui.TeamPreferences)")'>
+        <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="Opens the preference page"/>
+    	<b>Team</b></a>
+    	preference page:
+		<p><img alt="Apply patch in Synchronize view preference" title="Apply patch in Synchronize view preference"
+		src="images/apply-patch-in-sync-view-preference.png"/></p>
+
+		<p>When synchronizing with a patch the drop-down menu in the <b>Synchronize</b> view offers patch options
+		including <b>Reverse</b>, <b>Fuzz Factor...</b>, <b>Generate .rej File</b> 
+		and <b>Ignore Leading Path Segments...</b>.</p>
+    	<p><img src="images/patch-options-in-sync-view.png" alt="Patch options in Synchronize view"/></p>
+		<p>Moreover the <b>Synchronize with Patch</b> wizard displays a page with inaccessible projects 
+		referred from within the patch. Projects selected on this page will be opened prior to synchronization.</p>	
+        <p><img src="images/inaccessible-projects-page.png" alt="Inaccessible Projects page" /></p>
+    </td>
+  </tr>
+
+  <tr id="workspace_sync-view-link-with-editor">
+    <td width="30%" valign="top" align="left"><b>"Link with Editor" in Synchronize view</b></td>
+    <td width="70%" valign="top">The <b>Synchronize</b> view can now be linked 
+    with the active editor. Moreover, the view is now one of the 'Show In' targets when in the Synchronize perspective.
+    <p><img src="images/syncViewLinkWithEditor.png" alt="Link with Editor" /></p></td>
+  </tr>
+
+  <tr id="workspace_commit-wizard-logical-models">
+    <td width="30%" valign="top" align="left"><b>Logical models in Commit wizard</b></td>
+    <td width="70%" valign="top">The <b>Commit</b> wizard now shows logical 
+    models just like the <b>Synchronize</b> view does.
+    <p><img src="images/commitWizardLogicalModels.png" alt="Commit Wizard" /></p></td>
+  </tr>
+
+  <tr id="workspace_sorted-diffs-in-patch">
+    <td width="30%" valign="top" align="left"><b>Sorted diffs in patches</b></td>
+    <td width="70%" valign="top">The <b>Create Patch</b> action now creates patches 
+    that contain changes sorted by project and file path. This makes comparing patches much easier.</td>
+  </tr>
+
+  <tr id="config-branches">
+    <td width="30%" valign="top" align="left"><b>Usability enhancement to Configure Branches and Versions</b></td>
+    <td width="70%" valign="top">
+      	Now the <b>Configure Branches and Versions</b> action in the repository view is enabled for multiple selections. 
+      	This means that you are able to choose any file in the selection as a tag source for all selected folders.
+		<p><img src="images/configure-branches.png" alt="Configure Branches and Versions for multiple selection"/></p>
+	</td>
+  </tr>
+
+  <tr id="matching-might-not-be-optimal">
+    <td width="30%" valign="top" align="left"><b>Warning about possible inaccuracy in comparison result</b></td>
+    <td width="70%" valign="top">
+	The compare framework caps the result accuracy for large files. This used to happen silently, which
+	confused users. Now when the faster algorithm is used a warning label appears.
+	<p><img alt="Mathing might not be optimal label" title="Matching might not be optimal label"
+		src="images/matching-might-not-be-optimal.png"/>
+	</p>
+    </td>
   </tr>
 
     <!-- ******************** Debug ********************* -->
@@ -395,32 +432,39 @@ document in the plug-in developer's guide.
           Changes</div></td>
     </tr>
 
-  <tr id="debug-view-breadcrumb">
-    <td align="left" valign="top" width="30%"><b>Debug view breadcrumb</b></td>
-    <td valign="top" width="70%">Debug view now offers a breadcrumb
-      which shows the current active debug context. The breadcrumb is
-      activated automatically when the Debug view is resized to show only one
-      line of text.
-      <p><img alt="Debug view Breadcrumb" title="Debug view Breadcrumb"
-      src="images/debug-breadcrumb-1.png"><br><br></p>
-      <p>Each element in the breadcrumb can be selected and actions can
-      be invoked through a context menu or keyboard short cuts.
-      </p>
-      <p><img alt="Debug Breadcrumb Popup Menu"
-      title="Debug Breadcrumb Popup Menu" src="images/debug-breadcrumb-2.png"><br><br>
-      </p>
-      <p>Finally, a drop-down menu allows navigating to a new
-      element and changing the active debug context.
-      </p>
-      <p><img alt="Debug view Breadcrumb Drop-Down"
-      title="Debug view Breadcrumb Drop-Down"
-      src="images/debug-breadcrumb-3.png"></p>
-    </td>
-  </tr>
+	<tr id="expressionsviewcolumnsupport">
+	<td align="left" valign="top" width="30%"><b>Columns in Expressions view
+	</b></td>
+	<td valign="top" width="70%">The <b>Expressions</b> view now supports column display
+	just like the <b>Variables</b> view. To switch to a column 
+	presentation select <b>Layout &gt; Show Columns</b> from the view's menu.
+	<p><img alt="Expressions View with Columns" title="Expressions View with Columns"
+	src="images/expressions-columns.png"/><br/><br/></p>
+	<p>Users can also quickly edit existing expressions in-line by clicking on the 
+	expression in the <b>Name</b> column.  To add a	new expression, click on the
+	<b><i>Add new expression</i></b> place-holder at the bottom of the list.
+	</p>
+	</td>
+	</tr>
+
+	<tr id="breakpointdetails">
+	<td align="left" valign="top" width="30%"><b>Breakpoint detail panes
+	</b></td>
+	<td valign="top" width="70%">The breakpoints view now provides detail panes
+	to display and edit breakpoint properties. Use the view's <b>Layout</b> menu
+	to configure the orientation of the detail pane or hide it. 
+	<p><img alt="Breakpoint Detail Panes" title="Breakpoint Detail Panes"
+	src="images/breakpoint-details.png"/><br/><br/></p>
+	<p>For example, the detail pane for a Java line breakpoint allows its
+	condition to be edited in place with content assist. Use the <b>File &gt; Save (Ctrl-S)</b>
+	action to save a condition that has been edited. Check box and radio button properties are
+	saved immediately.
+	</p>
+	</td>
+	</tr>
 
     <!-- ****************** END OF N&N TABLE ****************** -->
-  </tbody>
+</tbody>
 </table>
-
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.platform/intro/whatsnewExtensionContent3.xml b/eclipse/plugins/org.eclipse.platform/intro/whatsnewExtensionContent3.xml
index 6d52765..899529d 100644
--- a/eclipse/plugins/org.eclipse.platform/intro/whatsnewExtensionContent3.xml
+++ b/eclipse/plugins/org.eclipse.platform/intro/whatsnewExtensionContent3.xml
@@ -2,8 +2,8 @@
 <introContent>
   	<extensionContent id="org.eclipse.ui.workbench.migration" name="Porting Guide" alt-style="css/whatsnew.properties" style="css/whatsnew.css" path="whatsnew/@">
 		<group filter="plugin=org.eclipse.platform.doc.isv" style-id="content-group" id="content-group">
-       		<link label="Migration from the previous release" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" id="migration" style-id="content-link">
-          		<text>Learn what you need to do to make your old code work in Eclipse 3.5</text>
+       		<link label="Migration from the previous release" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.isv/porting/eclipse_3_6_porting_guide.html" id="migration" style-id="content-link">
+          		<text>Learn what you need to do to make your old code work in Eclipse 3.6</text>
        		</link>
        	</group>
   	</extensionContent>
diff --git a/eclipse/plugins/org.eclipse.platform/launchersrc.zip b/eclipse/plugins/org.eclipse.platform/launchersrc.zip
index afe68f1..36066fd 100644
Binary files a/eclipse/plugins/org.eclipse.platform/launchersrc.zip and b/eclipse/plugins/org.eclipse.platform/launchersrc.zip differ
diff --git a/eclipse/plugins/org.eclipse.platform/plugin.properties b/eclipse/plugins/org.eclipse.platform/plugin.properties
index 7c40629..02f15bd 100644
--- a/eclipse/plugins/org.eclipse.platform/plugin.properties
+++ b/eclipse/plugins/org.eclipse.platform/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@ providerName=Eclipse.org
 productName=Eclipse Platform
 productBlurb=Eclipse Platform\n\
 \n\
-Version: 3.5.0\n\
+Version: 3.6.0\n\
 Build id: {0}\n\
 \n\
 (c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
diff --git a/eclipse/plugins/org.eclipse.rcp/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.rcp/META-INF/MANIFEST.MF
index e77afc7..a50060c 100644
--- a/eclipse/plugins/org.eclipse.rcp/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.rcp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.rcp; singleton:=true
-Bundle-Version: 3.5.0.qualifier
+Bundle-Version: 3.6.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Eclipse-AutoStart: true
diff --git a/eclipse/plugins/org.eclipse.rcp/about.properties b/eclipse/plugins/org.eclipse.rcp/about.properties
index e855b9f..f6d85d0 100644
--- a/eclipse/plugins/org.eclipse.rcp/about.properties
+++ b/eclipse/plugins/org.eclipse.rcp/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -19,6 +19,6 @@ blurb=Eclipse RCP\n\
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2000, 2010.  All rights reserved.\n\
 Visit http://www.eclipse.org/rcp
 
diff --git a/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/BuildNotesPage.java b/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/BuildNotesPage.java
index 2fcab7d..11e2a79 100644
--- a/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/BuildNotesPage.java
+++ b/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/BuildNotesPage.java
@@ -384,9 +384,11 @@ public class BuildNotesPage extends WizardPage {
 			GetBugsOperation getBugsOperation = new GetBugsOperation(
 					(ReleaseWizard) getWizard(), syncInfoSet);
 			getBugsOperation.run(this);
-			String tempText = outputReport();
-			if (tempText != null) {
-				reportText.setText(tempText);
+			if (bugSummaryMap != null) {
+				String tempText = outputReport();
+				if (tempText != null) {
+					reportText.setText(tempText);
+				}
 			}
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/FixCopyrightAction.java b/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/FixCopyrightAction.java
index b2e50dd..fb1b4f2 100644
--- a/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/FixCopyrightAction.java
+++ b/eclipse/plugins/org.eclipse.releng.tools/src/org/eclipse/releng/tools/FixCopyrightAction.java
@@ -265,6 +265,10 @@ public class FixCopyrightAction implements IObjectActionDelegate {
 						return 0;
 
 					}
+					else if (swt && logComment.indexOf("restore HEAD after accidental deletion by error in automated build script") != -1) {
+						// the last modification was the recovery when SWT was accidentally deleted from HEAD in July 2009, so ignore
+						return 0;
+					}
 					else if (filterString != null && logComment.indexOf(filterString) != -1) {
 						//the last update was a copyright checkin - ignore
 						return 0;
diff --git a/eclipse/plugins/org.eclipse.search/schema/searchPages.exsd b/eclipse/plugins/org.eclipse.search/schema/searchPages.exsd
index b6a71aa..17c2b22 100644
--- a/eclipse/plugins/org.eclipse.search/schema/searchPages.exsd
+++ b/eclipse/plugins/org.eclipse.search/schema/searchPages.exsd
@@ -138,7 +138,7 @@ page comes first
             <annotation>
                <documentation>
                   a comma separated list with file extensions on which the search page can operate. Each extension must also include a weight (0 meaning lowest weight) which enables the search infrastructure to find the best fitting page. The weight is separated from the extension by a colon. If a search page can search all possible resources then &quot;*&quot; can be used.
-&lt;br&gt;&lt;b&gt;Note:&lt;/b&gt; This only applies if there is no &lt;code&gt;org.eclipse.search.ui.ISearchPageScoreComputer&lt;/code&gt; adapter for the selected element.
+&lt;br&gt;&lt;b&gt;Note:&lt;/b&gt; If there is an &lt;code&gt;org.eclipse.search.ui.ISearchPageScoreComputer&lt;/code&gt; adapter for the selected element which returns a higher weight, then this higher weight will be used.
                </documentation>
             </annotation>
          </attribute>
diff --git a/eclipse/plugins/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java b/eclipse/plugins/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java
index 6132437..28c8b88 100644
--- a/eclipse/plugins/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java
+++ b/eclipse/plugins/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -311,16 +311,20 @@ class SearchPageDescriptor implements IPluginContribution, Comparable {
 	 */
 	public int computeScore(Object element) {
 		if (element instanceof IAdaptable) {
+			int score= ISearchPageScoreComputer.UNKNOWN;
+
 			ISearchPageScoreComputer tester= (ISearchPageScoreComputer)((IAdaptable)element).getAdapter(ISearchPageScoreComputer.class);
 			if (tester != null)
-				return tester.computeScore(getId(), element);
+				score= tester.computeScore(getId(), element);
 
 			IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
 			if (resource != null && resource.getType() == IResource.FILE) {
 				String extension= ((IFile)resource).getFileExtension();
 				if (extension != null)
-					return getScoreForFileExtension(extension);
+					score= Math.max(score, getScoreForFileExtension(extension));
 			}
+			if (score != ISearchPageScoreComputer.UNKNOWN)
+				return score;
 		}
 		if (fWildcardScore != ISearchPageScoreComputer.UNKNOWN)
 			return fWildcardScore;
@@ -338,10 +342,8 @@ class SearchPageDescriptor implements IPluginContribution, Comparable {
 			if (extension.equals(p.extension))
 				return p.score;
 		}
-		if (fWildcardScore != ISearchPageScoreComputer.UNKNOWN)
-			return fWildcardScore;
 
-		return ISearchPageScoreComputer.LOWEST;
+		return ISearchPageScoreComputer.UNKNOWN;
 	}
 
 	private void readExtensionScorePairs() {
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/.project b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/.project
new file mode 100644
index 0000000..78e2591
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.swt.gtk.linux.s390</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<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.pde.PluginNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+	</natures>
+</projectDescription>
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..53b1831
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"
+Bundle-Name: %fragmentName
+Bundle-Vendor: %providerName
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.s390; singleton:=true
+Bundle-Version: 3.6.0.qualifier
+Bundle-ManifestVersion: 2
+Bundle-Localization: fragment
+Export-Package: 
+ org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.mozilla; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390))
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about.html b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about.html
new file mode 100644
index 0000000..9b03555
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about.html
@@ -0,0 +1,233 @@
+<!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>August 17, 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>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>Gnome Binding</h4>
+
+<p>The &quot;Gnome Binding&quot; is a binding to the Gnome API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Gnome Binding:</p>
+<ul>
+	<li>libswt-gnome-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Gnome Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/gnome (but not including any sub-directories)</li>
+</ul>
+
+<p>The Gnome Binding contains portions of Gnome (&quot;Library&quot;).  Gnome is made available by The Free Software Foundation.  Use of the Library is governed by the terms and
+conditions of the GNU Lesser General Public License Version 2.1 (&quot;LGPL&quot;).  Use of the Gnome Binding on a standalone
+basis, is also governed by the terms and conditions of the LGPL.  A copy of the LGPL is provided with the Content (<a href="about_files/lgpl-v21.txt" target="_blank">lgpl-v21.txt</a>) and is also available at
+<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>.</p>
+
+<p>In accordance with Section 6 of the LGPL, you may combine or link a "work that uses the Library" (e.g. the SWT) with the Library to produce a work
+containing portions of the Library (e.g. the Gnome Binding) and distribute that work under the terms of your choice (e.g. the EPL) provided you comply with all
+other terms and conditions of Section 6 as well as other Sections of the LGPL.  Please note, if you modify the Gnome Binding such modifications shall be
+governed by the terms and conditions of the LGPL.  Also note, the terms of the EPL permit you to modify the combined work and the source code of the combined
+work is provided for debugging purposes so there is no need to reverse engineer the combined work.</p>
+
+<h4>GTK+ Binding</h4>
+
+<p>The &quot;GTK+ Binding&quot; is a binding to the GTK+ API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the GTK+ Binding:</p>
+<ul>
+	<li>libswt-atk-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+	<li>libswt-pi-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the GTK+ Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/accessibility/gtk (but not including any sub-directories)</li>
+	<li>The contents of the directory org/eclipse/swt/internal/cde (but not including any sub-directories)</li>
+	<li>The contents of the directory org/eclipse/swt/internal/gtk (but not including any sub-directories)</li>				
+</ul>
+
+<p>The GTK+ Binding contains portions of GTK+ (&quot;Library&quot;).  GTK+ is made available by The Free Software Foundation.  Use of the Library is governed by the terms and
+conditions of the GNU Lesser General Public License Version 2.1 (&quot;LGPL&quot;).  Use of the GTK+ Binding on a standalone
+basis, is also governed by the terms and conditions of the LGPL.  A copy of the LGPL is provided with the Content (<a href="about_files/lgpl-v21.txt" target="_blank">lgpl-v21.txt</a>) and is also available at
+<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>.</p>
+
+<p>In accordance with Section 6 of the LGPL, you may combine or link a "work that uses the Library" (e.g. the SWT) with the Library to produce a work
+containing portions of the Library (e.g. the GTK+ Binding) and distribute that work under the terms of your choice (e.g. the EPL) provided you comply with all
+other terms and conditions of Section 6 as well as other Sections of the LGPL.  Please note, if you modify the GTK+ Binding such modifications shall be
+governed by the terms and conditions of the LGPL.  Also note, the terms of the EPL permit you to modify the combined work and the source code of the combined
+work is provided for debugging purposes so there is no need to reverse engineer the combined work.</p>
+
+<h4>Mozilla Binding</h4>
+
+<p>The &quot;Mozilla Binding&quot; is a binding to the Mozilla API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Mozilla Binding:</p>
+<ul>
+	<li>libswt-mozilla-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Mozilla Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/mozilla (but not including any sub-directories)</li>
+</ul>
+
+<p>The Mozilla Binding contains portions of Mozilla (&quot;Mozilla&quot;).  Mozilla is made available by Mozilla.org.  Use of Mozilla is governed by the terms and
+conditions of the Mozilla Public License Version 1.1 (&quot;MPL&quot;).  A copy of the MPL is provided with the Content (<a href="about_files/mpl-v11.txt" target="_blank">mpl-v11.txt</a>) and is also available at
+<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>.</p>
+
+<h4>Cairo Binding</h4>
+
+<p>The &quot;Cairo Binding&quot; is a binding to the Cairo API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Cairo Binding:</p>
+<ul>
+	<li>libswt-cairo-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Cairo Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/cairo (but not including any sub-directories)</li>
+</ul>
+
+<p>The Cairo Binding contains portions of Cairo (&quot;Cairo&quot;).  Cairo is made available by the Cairo project at
+<a href="http://www.cairographics.org" target="_blank">http://www.cairographics.org</a>.  Use of Cairo by the Cairo Binding is governed by the terms and
+conditions of the Mozilla Public License Version 1.1 (&quot;MPL&quot;).  A copy of the MPL is
+provided with the Content (<a href="about_files/mpl-v11.txt" target="_blank">mpl-v11.txt</a>) and is also available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>.</p>
+
+<h4>Cairo for Linux</h4>
+
+<p>Refer to the file <a href="about_files/about_cairo.html">about_files/about_cairo.html</a> for licensing details about &quot;Cairo for Linux.&quot;
+
+<h4>Independent JPEG Group's JPEG software release 6b</h4>
+
+<p>This software is based in part on the work of the Independent JPEG Group's JPEG software release 6b (&quot;LIBJPEG&quot;).
+LIBJPEG was used to implement the decoding of JPEG format files in Java (TM).  The Content does NOT include any portion of the LIBJPEG file ansi2knr.c.</p>
+
+<p>Your use of LIBJPEG is subject to the terms and conditions located in the <a href="about_files/IJG_README">about_files/IJG_README</a> file which is included
+with the Content.</p>
+
+<p>The IJG's website is located at <a href="http://ijg.org/" target="_blank">http://ijg.org</a>.</p>
+
+<p>The class org.eclipse.swt.internal.image.JPEGFileFormat is based on following files from LIBJPEG:</p>
+
+<ul>
+    <li>cderror.h</li>
+    <li>cdjpeg.h</li>
+    <li>jchuff.h</li>
+    <li>jdcolor.c</li>
+    <li>jdct.h</li>
+    <li>jdhuff.h</li>
+    <li>jerror.h</li>
+    <li>jidctint.c</li>
+    <li>jinclude.h</li>
+    <li>jmemsys.h</li>
+    <li>jmorecfg.h</li>
+    <li>jpegint.h</li>
+    <li>jpeglib.h</li>
+    <li>jversion.h</li>
+    <li>transupp.h</li>
+</ul>
+
+<p>The class org.eclipse.swt.internal.image.JPEGDecoder is based on the following files from LIBJPEG:</p>
+
+<ul>
+	<li>jcapimin.c</li>
+	<li>jcapistd.c</li>
+	<li>jccoefct.c</li>
+	<li>jccolor.c</li>
+	<li>jcdctmgr.c</li>
+	<li>jchuff.c</li>
+	<li>jcinit.c</li>
+	<li>jcmainct.c</li>
+	<li>jcmarker.c</li>
+	<li>jcmaster.c</li>
+	<li>jcomapi.c</li>
+	<li>jcparam.c</li>
+	<li>jcphuff.c</li>
+	<li>jcprepct.c</li>
+	<li>jcsample.c</li>
+	<li>jctrans.c</li>
+	<li>jdapimin.c</li>
+	<li>jdapistd.c</li>
+	<li>jdatadst.c</li>
+	<li>jdatasrc.c</li>
+	<li>jdcoefct.c</li>
+	<li>jdcolor.c</li>
+	<li>jddctmgr.c</li>
+	<li>jdhuff.c</li>
+	<li>jdinput.c</li>
+	<li>jdmainct.c</li>
+	<li>jdmarker.c</li>
+	<li>jdmaster.c</li>
+	<li>jdmerge.c</li>
+	<li>jdphuff.c</li>
+	<li>jdpostct.c</li>
+	<li>jdsample.c</li>
+	<li>jdtrans.c</li>
+	<li>jerror.c</li>
+	<li>jfdctflt.c</li>
+	<li>jfdctfst.c</li>
+	<li>jfdctint.c</li>
+	<li>jidctflt.c</li>
+	<li>jidctfst.c</li>
+	<li>jidctint.c</li>
+	<li>jidctred.c</li>
+	<li>jpegtran.c</li>
+	<li>jquant1.c</li>
+	<li>jquant2.c</li>
+	<li>jutils.c</li>
+	<li>cderror.h</li>
+	<li>cdjpeg.h</li>
+	<li>jchuff.h</li>
+	<li>jconfig.h</li>
+	<li>jdct.h</li>
+	<li>jdhuff.h</li>
+	<li>jerror.h</li>
+	<li>jinclude.h</li>
+	<li>jmorecfg.h</li>
+	<li>jpegint.h</li>
+	<li>jpeglib.h</li>
+	<li>jversion.h</li>
+	<li>transupp.h</li>
+</ul>
+	
+<p>The following changes were made to the LIBJPEG code in the Content:</p>
+
+<ol>
+	<li>In Java, pointer math is not allowed so indexing was used instead.</li>
+	<li>Function pointers were replaced with switch statements.</li>
+	<li>The virtual memory, tracing and progress monitoring were removed.</li>
+	<li>The error handling was simplified and now uses Java exceptions.</li>
+</ol>
+
+<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/IJG_README b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/IJG_README
similarity index 100%
copy from eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/IJG_README
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/IJG_README
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/about_cairo.html b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/about_cairo.html
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/about_cairo.html
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/about_cairo.html
diff --git a/eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/lgpl-v21.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/lgpl-v21.txt
similarity index 100%
copy from eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/lgpl-v21.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/lgpl-v21.txt
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/mpl-v11.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/mpl-v11.txt
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/mpl-v11.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/mpl-v11.txt
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/pixman-licenses.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/pixman-licenses.txt
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/pixman-licenses.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/about_files/pixman-licenses.txt
diff --git a/eclipse/plugins/org.eclipse.swt.motif.hpux.ia64_32/build.properties b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/build.properties
similarity index 100%
copy from eclipse/plugins/org.eclipse.swt.motif.hpux.ia64_32/build.properties
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390/build.properties
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/build.xml b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/build.xml
new file mode 100644
index 0000000..9778bb1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/build.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="org.eclipse.swt.gtk.linux.s390" default="build.jars" basedir=".">
+
+	<property name="swt.ws" value="gtk" />
+	<property name="swt.os" value="linux" />
+	<property name="swt.arch" value="s390" />
+	
+	<!-- These properties are used by eclipse when exporting as Deployable plugin and fragments -->
+	<property name="version.suffix" value="3.6.0" />
+	
+	<import file="../org.eclipse.swt/buildFragment.xml"/>
+</project>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/fragment.properties b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/fragment.properties
new file mode 100644
index 0000000..bf743f1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390/fragment.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2004 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+fragmentName = Standard Widget Toolkit for GTK 2.0
+providerName = Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/.project b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/.project
new file mode 100644
index 0000000..bf411ad
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.swt.gtk.linux.s390x</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<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.pde.PluginNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+	</natures>
+</projectDescription>
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..311eee3
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"
+Bundle-Name: %fragmentName
+Bundle-Vendor: %providerName
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.s390x; singleton:=true
+Bundle-Version: 3.6.0.qualifier
+Bundle-ManifestVersion: 2
+Bundle-Localization: fragment
+Export-Package: 
+ org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.mozilla; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390x))
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about.html b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about.html
new file mode 100644
index 0000000..9b03555
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about.html
@@ -0,0 +1,233 @@
+<!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>August 17, 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>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>Gnome Binding</h4>
+
+<p>The &quot;Gnome Binding&quot; is a binding to the Gnome API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Gnome Binding:</p>
+<ul>
+	<li>libswt-gnome-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Gnome Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/gnome (but not including any sub-directories)</li>
+</ul>
+
+<p>The Gnome Binding contains portions of Gnome (&quot;Library&quot;).  Gnome is made available by The Free Software Foundation.  Use of the Library is governed by the terms and
+conditions of the GNU Lesser General Public License Version 2.1 (&quot;LGPL&quot;).  Use of the Gnome Binding on a standalone
+basis, is also governed by the terms and conditions of the LGPL.  A copy of the LGPL is provided with the Content (<a href="about_files/lgpl-v21.txt" target="_blank">lgpl-v21.txt</a>) and is also available at
+<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>.</p>
+
+<p>In accordance with Section 6 of the LGPL, you may combine or link a "work that uses the Library" (e.g. the SWT) with the Library to produce a work
+containing portions of the Library (e.g. the Gnome Binding) and distribute that work under the terms of your choice (e.g. the EPL) provided you comply with all
+other terms and conditions of Section 6 as well as other Sections of the LGPL.  Please note, if you modify the Gnome Binding such modifications shall be
+governed by the terms and conditions of the LGPL.  Also note, the terms of the EPL permit you to modify the combined work and the source code of the combined
+work is provided for debugging purposes so there is no need to reverse engineer the combined work.</p>
+
+<h4>GTK+ Binding</h4>
+
+<p>The &quot;GTK+ Binding&quot; is a binding to the GTK+ API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the GTK+ Binding:</p>
+<ul>
+	<li>libswt-atk-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+	<li>libswt-pi-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the GTK+ Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/accessibility/gtk (but not including any sub-directories)</li>
+	<li>The contents of the directory org/eclipse/swt/internal/cde (but not including any sub-directories)</li>
+	<li>The contents of the directory org/eclipse/swt/internal/gtk (but not including any sub-directories)</li>				
+</ul>
+
+<p>The GTK+ Binding contains portions of GTK+ (&quot;Library&quot;).  GTK+ is made available by The Free Software Foundation.  Use of the Library is governed by the terms and
+conditions of the GNU Lesser General Public License Version 2.1 (&quot;LGPL&quot;).  Use of the GTK+ Binding on a standalone
+basis, is also governed by the terms and conditions of the LGPL.  A copy of the LGPL is provided with the Content (<a href="about_files/lgpl-v21.txt" target="_blank">lgpl-v21.txt</a>) and is also available at
+<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>.</p>
+
+<p>In accordance with Section 6 of the LGPL, you may combine or link a "work that uses the Library" (e.g. the SWT) with the Library to produce a work
+containing portions of the Library (e.g. the GTK+ Binding) and distribute that work under the terms of your choice (e.g. the EPL) provided you comply with all
+other terms and conditions of Section 6 as well as other Sections of the LGPL.  Please note, if you modify the GTK+ Binding such modifications shall be
+governed by the terms and conditions of the LGPL.  Also note, the terms of the EPL permit you to modify the combined work and the source code of the combined
+work is provided for debugging purposes so there is no need to reverse engineer the combined work.</p>
+
+<h4>Mozilla Binding</h4>
+
+<p>The &quot;Mozilla Binding&quot; is a binding to the Mozilla API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Mozilla Binding:</p>
+<ul>
+	<li>libswt-mozilla-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Mozilla Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/mozilla (but not including any sub-directories)</li>
+</ul>
+
+<p>The Mozilla Binding contains portions of Mozilla (&quot;Mozilla&quot;).  Mozilla is made available by Mozilla.org.  Use of Mozilla is governed by the terms and
+conditions of the Mozilla Public License Version 1.1 (&quot;MPL&quot;).  A copy of the MPL is provided with the Content (<a href="about_files/mpl-v11.txt" target="_blank">mpl-v11.txt</a>) and is also available at
+<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>.</p>
+
+<h4>Cairo Binding</h4>
+
+<p>The &quot;Cairo Binding&quot; is a binding to the Cairo API.  The Content may include any or all of the following files:</p>
+
+<p>The following files in the plug-in JAR shall be defined as the native code portion of the Cairo Binding:</p>
+<ul>
+	<li>libswt-cairo-gtk-xxxx.so (where &quot;xxxx&quot; is the version number)</li>
+</ul>
+
+<p>The following files in both the plug-in JAR and the src.zip shall be defined respectively as the bytecode and source code portions of the Cairo Binding:</p>
+<ul>
+	<li>The contents of the directory org/eclipse/swt/internal/cairo (but not including any sub-directories)</li>
+</ul>
+
+<p>The Cairo Binding contains portions of Cairo (&quot;Cairo&quot;).  Cairo is made available by the Cairo project at
+<a href="http://www.cairographics.org" target="_blank">http://www.cairographics.org</a>.  Use of Cairo by the Cairo Binding is governed by the terms and
+conditions of the Mozilla Public License Version 1.1 (&quot;MPL&quot;).  A copy of the MPL is
+provided with the Content (<a href="about_files/mpl-v11.txt" target="_blank">mpl-v11.txt</a>) and is also available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>.</p>
+
+<h4>Cairo for Linux</h4>
+
+<p>Refer to the file <a href="about_files/about_cairo.html">about_files/about_cairo.html</a> for licensing details about &quot;Cairo for Linux.&quot;
+
+<h4>Independent JPEG Group's JPEG software release 6b</h4>
+
+<p>This software is based in part on the work of the Independent JPEG Group's JPEG software release 6b (&quot;LIBJPEG&quot;).
+LIBJPEG was used to implement the decoding of JPEG format files in Java (TM).  The Content does NOT include any portion of the LIBJPEG file ansi2knr.c.</p>
+
+<p>Your use of LIBJPEG is subject to the terms and conditions located in the <a href="about_files/IJG_README">about_files/IJG_README</a> file which is included
+with the Content.</p>
+
+<p>The IJG's website is located at <a href="http://ijg.org/" target="_blank">http://ijg.org</a>.</p>
+
+<p>The class org.eclipse.swt.internal.image.JPEGFileFormat is based on following files from LIBJPEG:</p>
+
+<ul>
+    <li>cderror.h</li>
+    <li>cdjpeg.h</li>
+    <li>jchuff.h</li>
+    <li>jdcolor.c</li>
+    <li>jdct.h</li>
+    <li>jdhuff.h</li>
+    <li>jerror.h</li>
+    <li>jidctint.c</li>
+    <li>jinclude.h</li>
+    <li>jmemsys.h</li>
+    <li>jmorecfg.h</li>
+    <li>jpegint.h</li>
+    <li>jpeglib.h</li>
+    <li>jversion.h</li>
+    <li>transupp.h</li>
+</ul>
+
+<p>The class org.eclipse.swt.internal.image.JPEGDecoder is based on the following files from LIBJPEG:</p>
+
+<ul>
+	<li>jcapimin.c</li>
+	<li>jcapistd.c</li>
+	<li>jccoefct.c</li>
+	<li>jccolor.c</li>
+	<li>jcdctmgr.c</li>
+	<li>jchuff.c</li>
+	<li>jcinit.c</li>
+	<li>jcmainct.c</li>
+	<li>jcmarker.c</li>
+	<li>jcmaster.c</li>
+	<li>jcomapi.c</li>
+	<li>jcparam.c</li>
+	<li>jcphuff.c</li>
+	<li>jcprepct.c</li>
+	<li>jcsample.c</li>
+	<li>jctrans.c</li>
+	<li>jdapimin.c</li>
+	<li>jdapistd.c</li>
+	<li>jdatadst.c</li>
+	<li>jdatasrc.c</li>
+	<li>jdcoefct.c</li>
+	<li>jdcolor.c</li>
+	<li>jddctmgr.c</li>
+	<li>jdhuff.c</li>
+	<li>jdinput.c</li>
+	<li>jdmainct.c</li>
+	<li>jdmarker.c</li>
+	<li>jdmaster.c</li>
+	<li>jdmerge.c</li>
+	<li>jdphuff.c</li>
+	<li>jdpostct.c</li>
+	<li>jdsample.c</li>
+	<li>jdtrans.c</li>
+	<li>jerror.c</li>
+	<li>jfdctflt.c</li>
+	<li>jfdctfst.c</li>
+	<li>jfdctint.c</li>
+	<li>jidctflt.c</li>
+	<li>jidctfst.c</li>
+	<li>jidctint.c</li>
+	<li>jidctred.c</li>
+	<li>jpegtran.c</li>
+	<li>jquant1.c</li>
+	<li>jquant2.c</li>
+	<li>jutils.c</li>
+	<li>cderror.h</li>
+	<li>cdjpeg.h</li>
+	<li>jchuff.h</li>
+	<li>jconfig.h</li>
+	<li>jdct.h</li>
+	<li>jdhuff.h</li>
+	<li>jerror.h</li>
+	<li>jinclude.h</li>
+	<li>jmorecfg.h</li>
+	<li>jpegint.h</li>
+	<li>jpeglib.h</li>
+	<li>jversion.h</li>
+	<li>transupp.h</li>
+</ul>
+	
+<p>The following changes were made to the LIBJPEG code in the Content:</p>
+
+<ol>
+	<li>In Java, pointer math is not allowed so indexing was used instead.</li>
+	<li>Function pointers were replaced with switch statements.</li>
+	<li>The virtual memory, tracing and progress monitoring were removed.</li>
+	<li>The error handling was simplified and now uses Java exceptions.</li>
+</ol>
+
+<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/IJG_README b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/IJG_README
similarity index 100%
copy from eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/IJG_README
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/IJG_README
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/about_cairo.html b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/about_cairo.html
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/about_cairo.html
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/about_cairo.html
diff --git a/eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/lgpl-v21.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/lgpl-v21.txt
similarity index 100%
copy from eclipse/features/org.eclipse.platform/about_files/linux.gtk.ppc/about_files/lgpl-v21.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/lgpl-v21.txt
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/mpl-v11.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/mpl-v11.txt
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/mpl-v11.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/mpl-v11.txt
diff --git a/eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/pixman-licenses.txt b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/pixman-licenses.txt
similarity index 100%
copy from eclipse/features/org.eclipse.equinox.executable/gtk_root/about_files/pixman-licenses.txt
copy to eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/about_files/pixman-licenses.txt
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.properties b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.properties
new file mode 100644
index 0000000..7129b10
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.properties
@@ -0,0 +1,11 @@
+###############################################################################
+# Copyright (c) 2000, 2004 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+custom = true
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.xml b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.xml
new file mode 100644
index 0000000..c1618fc
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/build.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="org.eclipse.swt.gtk.linux.s390x" default="build.jars" basedir=".">
+
+	<property name="swt.ws" value="gtk" />
+	<property name="swt.os" value="linux" />
+	<property name="swt.arch" value="s390x" />
+	
+	<!-- These properties are used by eclipse when exporting as Deployable plugin and fragments -->
+	<property name="version.suffix" value="3.6.0" />
+	
+	<import file="../org.eclipse.swt/buildFragment.xml"/>
+</project>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/fragment.properties b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/fragment.properties
new file mode 100644
index 0000000..bf743f1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt.gtk.linux.s390x/fragment.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2004 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+fragmentName = Standard Widget Toolkit for GTK 2.0
+providerName = Eclipse.org
diff --git a/eclipse/plugins/org.eclipse.swt/.settings/.api_filters b/eclipse/plugins/org.eclipse.swt/.settings/.api_filters
index 5f320ec..c341e5a 100644
--- a/eclipse/plugins/org.eclipse.swt/.settings/.api_filters
+++ b/eclipse/plugins/org.eclipse.swt/.settings/.api_filters
@@ -80,6 +80,26 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java" type="org.eclipse.swt.accessibility.Accessible">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.accessibility.Accessible"/>
+                <message_argument value="internal_dispose_Accessible()"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.accessibility.Accessible"/>
+                <message_argument value="internal_new_Accessible(Control)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.accessibility.Accessible"/>
+                <message_argument value="internal_WM_GETOBJECT(int, int)"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java" type="org.eclipse.swt.browser.AuthenticationListener">
         <filter id="576720909">
             <message_arguments>
@@ -380,6 +400,18 @@
         </filter>
     </resource>
     <resource path="Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java" type="org.eclipse.swt.ole.win32.Variant">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.ole.win32.Variant"/>
+                <message_argument value="win32_new(int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.ole.win32.Variant"/>
+                <message_argument value="win32_copy(int, Variant)"/>
+            </message_arguments>
+        </filter>
         <filter id="389242988">
             <message_arguments>
                 <message_argument value="org.eclipse.swt.ole.win32.Variant"/>
@@ -402,6 +434,18 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.printing.Printer"/>
+                <message_argument value="internal_new_GC(GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.printing.Printer"/>
+                <message_argument value="internal_dispose_GC(int, GCData)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java" type="org.eclipse.swt.events.ArmListener">
         <filter id="576720909">
@@ -586,6 +630,12 @@
         </filter>
     </resource>
     <resource path="Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java" type="org.eclipse.swt.graphics.ImageData">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.ImageData"/>
+                <message_argument value="internal_new(int, int, int, PaletteData, int, byte[], int, byte[], byte[], int, int, int, int, int, int, int)"/>
+            </message_arguments>
+        </filter>
         <filter id="576725006">
             <message_arguments>
                 <message_argument value="CloneableCompatibility"/>
@@ -633,6 +683,18 @@
         </filter>
     </resource>
     <resource path="Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java" type="org.eclipse.swt.widgets.TypedListener">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.TypedListener"/>
+                <message_argument value="getEventListener()"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.TypedListener"/>
+                <message_argument value="handleEvent(Event)"/>
+            </message_arguments>
+        </filter>
         <filter id="338948223">
             <message_arguments>
                 <message_argument value="org.eclipse.swt.widgets.TypedListener"/>
@@ -647,6 +709,12 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Color"/>
+                <message_argument value="win32_new(Device, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java" type="org.eclipse.swt.graphics.Cursor">
         <filter id="338940029">
@@ -655,6 +723,12 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Cursor"/>
+                <message_argument value="win32_new(Device, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java" type="org.eclipse.swt.graphics.Device">
         <filter id="338940029">
@@ -663,6 +737,18 @@
                 <message_argument value="hPalette"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Device"/>
+                <message_argument value="internal_dispose_GC(int, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Device"/>
+                <message_argument value="internal_new_GC(GCData)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java" type="org.eclipse.swt.graphics.Font">
         <filter id="338940029">
@@ -671,6 +757,12 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Font"/>
+                <message_argument value="win32_new(Device, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java" type="org.eclipse.swt.graphics.FontData">
         <filter id="338940029">
@@ -685,6 +777,12 @@
                 <message_argument value="height"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.FontData"/>
+                <message_argument value="win32_new(LOGFONT, float)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java" type="org.eclipse.swt.graphics.FontMetrics">
         <filter id="338940029">
@@ -693,6 +791,12 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.FontMetrics"/>
+                <message_argument value="win32_new(TEXTMETRIC)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java" type="org.eclipse.swt.graphics.GC">
         <filter id="338940029">
@@ -704,6 +808,18 @@
         <filter id="338944126">
             <message_arguments>
                 <message_argument value="org.eclipse.swt.graphics.GC"/>
+                <message_argument value="win32_new(int, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.GC"/>
+                <message_argument value="win32_new(Drawable, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.GC"/>
                 <message_argument value="getGCData()"/>
             </message_arguments>
         </filter>
@@ -722,12 +838,12 @@
         </filter>
         <filter id="1143996420">
             <message_arguments>
-                <message_argument value="hGDIFont"/>
+                <message_argument value="org.eclipse.swt.graphics.GCData"/>
             </message_arguments>
         </filter>
         <filter id="1143996420">
             <message_arguments>
-                <message_argument value="org.eclipse.swt.graphics.GCData"/>
+                <message_argument value="hGDIFont"/>
             </message_arguments>
         </filter>
     </resource>
@@ -744,6 +860,24 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Image"/>
+                <message_argument value="internal_dispose_GC(int, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Image"/>
+                <message_argument value="internal_new_GC(GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Image"/>
+                <message_argument value="win32_new(Device, int, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java" type="org.eclipse.swt.graphics.Path">
         <filter id="338940029">
@@ -768,6 +902,12 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.graphics.Region"/>
+                <message_argument value="win32_new(Device, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/Transform.java" type="org.eclipse.swt.graphics.Transform">
         <filter id="338940029">
@@ -817,6 +957,18 @@
                 <message_argument value="handle"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Control"/>
+                <message_argument value="internal_dispose_GC(int, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Control"/>
+                <message_argument value="internal_new_GC(GCData)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/CoolBar.java" type="org.eclipse.swt.widgets.CoolBar">
         <filter id="336744520">
@@ -865,6 +1017,30 @@
                 <message_argument value="msg"/>
             </message_arguments>
         </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Display"/>
+                <message_argument value="internal_dispose_GC(int, GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Display"/>
+                <message_argument value="findWidget(int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Display"/>
+                <message_argument value="internal_new_GC(GCData)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Display"/>
+                <message_argument value="findWidget(int, int)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/ExpandBar.java" type="org.eclipse.swt.widgets.ExpandBar">
         <filter id="336744520">
@@ -991,6 +1167,20 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java" type="org.eclipse.swt.widgets.Shell">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Shell"/>
+                <message_argument value="win32_new(Display, int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Shell"/>
+                <message_argument value="internal_new(Display, int)"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/Slider.java" type="org.eclipse.swt.widgets.Slider">
         <filter id="336744520">
             <message_arguments>
@@ -1109,6 +1299,14 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java" type="org.eclipse.swt.widgets.Widget">
+        <filter id="338944126">
+            <message_arguments>
+                <message_argument value="org.eclipse.swt.widgets.Widget"/>
+                <message_argument value="removeListener(int, SWTEventListener)"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="META-INF/MANIFEST.MF">
         <filter id="923795461">
             <message_arguments>
diff --git a/eclipse/plugins/org.eclipse.swt/.settings/org.eclipse.pde.api.tools.prefs b/eclipse/plugins/org.eclipse.swt/.settings/org.eclipse.pde.api.tools.prefs
index 1458bb3..c87951d 100644
--- a/eclipse/plugins/org.eclipse.swt/.settings/org.eclipse.pde.api.tools.prefs
+++ b/eclipse/plugins/org.eclipse.swt/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,13 +1,15 @@
-#Wed May 27 10:10:25 EDT 2009
+#Tue Apr 20 10:20:28 EDT 2010
 ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
 ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
 ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
 API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
 API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
 CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
 CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
 CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
 CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
@@ -16,7 +18,7 @@ CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
 CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
 CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
 CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Ignore
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
 CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
 CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
 CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
@@ -47,7 +49,7 @@ ILLEGAL_OVERRIDE=Warning
 ILLEGAL_REFERENCE=Warning
 INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
 INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
 INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
 INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
 INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
@@ -80,6 +82,7 @@ TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
 TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
 TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
 UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
 eclipse.preferences.version=1
 incompatible_api_component_version=Error
 incompatible_api_component_version_include_major_without_breaking_change=Disabled
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/library/swt_awt.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/library/swt_awt.c
index dc8fcb2..cca746c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/library/swt_awt.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/library/swt_awt.c	
@@ -1,7 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * Copyright (c) 2009 Adobe Systems Inc.
- *
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/carbon/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/carbon/org/eclipse/swt/accessibility/Accessible.java
index 531e422..1a85e8f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/carbon/org/eclipse/swt/accessibility/Accessible.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/carbon/org/eclipse/swt/accessibility/Accessible.java	
@@ -75,9 +75,9 @@ public class Accessible {
 	Vector accessibleHyperlinkListeners = new Vector();
 	Vector accessibleTableListeners = new Vector();
 	Vector accessibleTableCellListeners = new Vector();
-	Vector accessibleTextExtendedListeners = new Vector();
+	// This line is intentionally commented. See addAccessibleTextListener.
+	// Vector accessibleTextExtendedListeners = new Vector();
 	Vector accessibleValueListeners = new Vector();
-	Vector accessibleScrollListeners = new Vector();
 	Vector accessibleAttributeListeners = new Vector();
 	Accessible parent;
 	Control control;
@@ -221,11 +221,13 @@ public class Accessible {
 	public void addAccessibleTextListener (AccessibleTextListener listener) {
 		checkWidget ();
 		if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-		if (listener instanceof AccessibleTextExtendedListener) {
-			accessibleTextExtendedListeners.addElement (listener);		
-		} else {
+		// Carbon won't be adding the additional extended listener features for 3.6
+		// so no need to segregate the two listener types.
+//		if (listener instanceof AccessibleTextExtendedListener) {
+//			accessibleTextExtendedListeners.addElement (listener);		
+//		} else {
 			accessibleTextListeners.addElement (listener);
-		}
+//		}
 	}
 	
 	/**
@@ -1365,11 +1367,13 @@ public class Accessible {
 	public void removeAccessibleTextListener (AccessibleTextListener listener) {
 		checkWidget ();
 		if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-		if (listener instanceof AccessibleTextExtendedListener) {
-			accessibleTextExtendedListeners.removeElement (listener);
-		} else {
+		// Carbon won't be adding the additional extended listener features for 3.6
+		// so no need to segregate the two listener types.
+//		if (listener instanceof AccessibleTextExtendedListener) {
+//			accessibleTextExtendedListeners.removeElement (listener);
+//		} else {
 			accessibleTextListeners.removeElement (listener);
-		}
+//		}
 	}
 
 	/**
@@ -1553,13 +1557,46 @@ public class Accessible {
 	 * indicating that something has changed within a custom control.
 	 *
 	 * @param event an <code>ACC</code> constant beginning with EVENT_* indicating the message to send
-	 * @param eventData an object containing event-specific data
+	 * @param eventData an object containing event-specific data, or null if there is no event-specific data
 	 * 
 	 * @exception SWTException <ul>
 	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver's control has been disposed</li>
 	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver's control</li>
 	 * </ul>
 	 * 
+	 * @see ACC#EVENT_ACTION_CHANGED
+	 * @see ACC#EVENT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE
+	 * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED
+	 * @see ACC#EVENT_DOCUMENT_RELOAD
+	 * @see ACC#EVENT_HYPERLINK_ACTIVATED
+	 * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED
+	 * @see ACC#EVENT_LOCATION_CHANGED
+	 * @see ACC#EVENT_NAME_CHANGED
+	 * @see ACC#EVENT_PAGE_CHANGED
+	 * @see ACC#EVENT_SECTION_CHANGED
+	 * @see ACC#EVENT_SELECTION_CHANGED
+	 * @see ACC#EVENT_STATE_CHANGED
+	 * @see ACC#EVENT_TABLE_CAPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_SUMMARY_CHANGED
+	 * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_TEXT_CARET_MOVED
+	 * @see ACC#EVENT_TEXT_CHANGED
+	 * @see ACC#EVENT_TEXT_COLUMN_CHANGED
+	 * @see ACC#EVENT_TEXT_SELECTION_CHANGED
+	 * @see ACC#EVENT_VALUE_CHANGED
+	 * 
 	 * @since 3.6
 	 */
 	public void sendEvent(int event, Object eventData) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java
index 4905945..0ab7cc9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java	
@@ -72,17 +72,18 @@ public class Accessible {
 	Vector accessibleTableCellListeners = new Vector();
 	Vector accessibleTextExtendedListeners = new Vector();
 	Vector accessibleValueListeners = new Vector();
-	Vector accessibleScrollListeners = new Vector();
 	Vector accessibleAttributeListeners = new Vector();
 	Relation relations[] = new Relation[MAX_RELATION_TYPES];
 	Accessible parent;
 	Control control;
+	int currentRole = -1;
 
 	Map /*<Integer, SWTAccessibleDelegate>*/ childToIdMap = new HashMap();
-	Vector children = new Vector();
 	SWTAccessibleDelegate delegate;
 
 	int index = -1;
+
+	TableAccessibleDelegate tableDelegate;
 	
 	/**
 	 * Constructs a new instance of this class given its parent.
@@ -98,10 +99,10 @@ public class Accessible {
 	 * @since 3.6
 	 */
 	public Accessible(Accessible parent) {
-		this.parent = checkNull(parent);
+		if (parent == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+		this.parent = parent;
 		this.control = parent.control;
 		delegate = new SWTAccessibleDelegate(this, ACC.CHILDID_SELF);
-		parent.children.add(this);
 	}
 	
 	/**
@@ -115,15 +116,6 @@ public class Accessible {
 		this.control = control;
 	}
 	
-	void addAccessibleChild(Accessible accessible) {
-		children.add(accessible);
-	}
-	
-	static Accessible checkNull (Accessible parent) {
-		if (parent == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-		return parent;
-	}
-	
 	/**
 	 * Invokes platform specific functionality to allocate a new accessible object.
 	 * <p>
@@ -428,6 +420,35 @@ public class Accessible {
 		relations[type].addTarget(target);
 	}
 	
+	void checkRole(int role) {
+		// A lightweight control can change its role at any time, so track
+		// the current role for the control.  If it changes, reset the attribute list.
+		if (role != currentRole) {
+			currentRole = role;
+			
+			if (attributeNames != null) {
+				attributeNames.release();
+				attributeNames = null;
+			}
+			
+			if (parameterizedAttributeNames != null) {
+				parameterizedAttributeNames.release();
+				parameterizedAttributeNames = null;
+			}
+			
+			if (actionNames != null) {
+				actionNames.release();
+				actionNames = null;
+			}
+		}
+	}
+
+	void createTableDelegate() {
+		if (tableDelegate == null) {
+			tableDelegate = new TableAccessibleDelegate(this);
+		}
+	}
+	
 	id getColumnIndexRangeAttribute(int childID) {
 		AccessibleTableCellEvent event = new AccessibleTableCellEvent(this);
 		for (int i = 0; i < accessibleTableCellListeners.size(); i++) {
@@ -457,33 +478,17 @@ public class Accessible {
 	id getSelectedAttribute(int childID) {
 		if (accessibleTableListeners.size() > 0) {
 			AccessibleTableEvent event = new AccessibleTableEvent(this);
+			event.row = index;
 			for (int i = 0; i < accessibleTableListeners.size(); i++) {
 				AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
-				listener.getSelectedRows(event);
-			}
-			if (event.accessibles != null) {
-				for (int i = 0; i < event.accessibles.length; i++) {
-					if (this.equals(event.accessibles[i])) return NSNumber.numberWithBool(true);
-				}
-			}
-			for (int i = 0; i < accessibleTableListeners.size(); i++) {
-				AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
-				listener.getSelectedColumns(event);
-			}
-			if (event.accessibles != null) {
-				for (int i = 0; i < event.accessibles.length; i++) {
-					if (this.equals(event.accessibles[i])) return NSNumber.numberWithBool(true);
-				}
-			}
-		}
-		if (accessibleTableCellListeners.size() > 0) {
-			AccessibleTableCellEvent event = new AccessibleTableCellEvent(this);
-			for (int i = 0; i < accessibleTableCellListeners.size(); i++) {
-				AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
-				listener.isSelected(event);
+				if (currentRole == ACC.ROLE_ROW)
+					listener.isRowSelected(event);
+				else
+					listener.isColumnSelected(event);
 			}
 			return NSNumber.numberWithBool(event.isSelected);
 		}
+
 		return NSNumber.numberWithBool(false);
 	}
 
@@ -504,6 +509,7 @@ public class Accessible {
 	}
 	
 	id getVisibleColumnsAttribute(int childID) {
+		if (accessibleTableListeners.size() == 0) return null;		
 		id returnValue = null;
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
@@ -523,6 +529,7 @@ public class Accessible {
 	}
 
 	id getVisibleRowsAttribute(int childID) {
+		if (accessibleTableListeners.size() == 0) return null;		
 		id returnValue = null;
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
@@ -542,6 +549,7 @@ public class Accessible {
 	}
 
 	id getSelectedRowsAttribute(int childID) {
+		if (accessibleTableListeners.size() == 0) return null;		
 		id returnValue = null;
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
@@ -560,33 +568,58 @@ public class Accessible {
 				if (event.accessible != null) array.addObject(event.accessible.delegate);
 			}
 			returnValue = array;
-		} else {
-			returnValue = NSArray.array();
 		}
-		return returnValue;
+		return returnValue == null ? NSArray.array() : returnValue;
 	}
 	
+
+	int getRowCount() {
+		AccessibleTableEvent event = new AccessibleTableEvent(this);
+		
+		for (int i = 0; i < accessibleTableListeners.size(); i++) {
+			AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+			listener.getRowCount(event);
+		}
+		
+		return event.count;
+	}
+
 	id getRowsAttribute(int childID) {
-		id returnValue = null;
+		if (accessibleTableListeners.size() == 0) return null;
+		
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
 			AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+			listener.getRowCount(event);
 			listener.getRows(event);
 		}
-		if (event.accessibles != null) {
-			NSMutableArray array = NSMutableArray.arrayWithCapacity(event.accessibles.length);
-			Object[] rows = event.accessibles;
-			for (int i = 0; i < rows.length; i++) {
-				Accessible acc = (Accessible) rows[i];
-				acc.index = i;
-				array.addObject(acc.delegate);
+		
+		if (event.accessibles == null) event.accessibles = new Accessible[0];
+		
+		if (event.count != event.accessibles.length) {
+			createTableDelegate();
+
+			// Rerun the row query now that our accessible is in place.
+			for (int i = 0; i < accessibleTableListeners.size(); i++) {
+				AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+				listener.getRowCount(event);
+				listener.getRows(event);
 			}
-			returnValue = array;
 		}
-		return returnValue == null ? NSArray.array() : returnValue;
+
+		NSMutableArray array = NSMutableArray.arrayWithCapacity(event.accessibles.length);
+		Object[] rows = event.accessibles;
+		for (int i = 0; i < rows.length; i++) {
+			Accessible acc = (Accessible) rows[i];
+			acc.index = i;
+			array.addObject(acc.delegate);
+		}
+		return array;
 	}
 
 	id getSelectedColumnsAttribute(int childID) {
+		if (accessibleTableListeners.size() == 0) return null;
+		
 		id returnValue = null;
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
@@ -605,30 +638,52 @@ public class Accessible {
 				if (event.accessible != null) array.addObject(event.accessible.delegate);
 			}
 			returnValue = array;
-		} else {
-			returnValue = NSArray.array();
 		}
-		return returnValue;
+		return returnValue == null ? NSArray.array() : returnValue;
+	}
+	
+	int getColumnCount() {
+		AccessibleTableEvent event = new AccessibleTableEvent(this);
+		
+		for (int i = 0; i < accessibleTableListeners.size(); i++) {
+			AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+			listener.getColumnCount(event);
+		}
+		
+		return event.count;
 	}
 	
 	id getColumnsAttribute(int childID) {
-		id returnValue = null;
+		if (accessibleTableListeners.size() == 0) return null;
+
 		AccessibleTableEvent event = new AccessibleTableEvent(this);
 		for (int i = 0; i < accessibleTableListeners.size(); i++) {
 			AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+			listener.getColumnCount(event);
 			listener.getColumns(event);
 		}
-		if (event.accessibles != null) {
-			NSMutableArray array = NSMutableArray.arrayWithCapacity(event.accessibles.length);
-			Accessible[] accessibles = event.accessibles;
-			for (int i = 0; i < accessibles.length; i++) {
-				Accessible acc = accessibles[i];
-				acc.index = i;
-				array.addObject(acc.delegate);
+
+		if (event.accessibles == null) event.accessibles = new Accessible[0];
+
+		if (event.count != event.accessibles.length) {
+			createTableDelegate();
+
+			// Rerun the Column query, now that our adapter is in place.
+			for (int i = 0; i < accessibleTableListeners.size(); i++) {
+				AccessibleTableListener listener = (AccessibleTableListener)accessibleTableListeners.elementAt(i);
+				listener.getColumnCount(event);
+				listener.getColumns(event);
 			}
-			returnValue = array;
 		}
-		return returnValue == null ? NSArray.array() : returnValue;
+
+		NSMutableArray array = NSMutableArray.arrayWithCapacity(event.accessibles.length);
+		Accessible[] accessibles = event.accessibles;
+		for (int i = 0; i < accessibles.length; i++) {
+			Accessible acc = accessibles[i];
+			acc.index = i;
+			array.addObject(acc.delegate);
+		}
+		return array;
 	}
 	
 	/**
@@ -718,6 +773,8 @@ public class Accessible {
 			if (event.detail == -1) {
 				return null;
 			}
+	
+			checkRole(event.detail);
 			
 			if ((childID == ACC.CHILDID_SELF) && (actionNames != null)) {
 				return retainedAutoreleased(actionNames);
@@ -808,32 +865,16 @@ public class Accessible {
 		if (event.detail == -1)
 			return null;
 		
-		if ((childID == ACC.CHILDID_SELF) && (attributeNames != null)) {
-			// See if this object has a label or is a label for something else. If so, add that to the list.
-			if (relations[ACC.RELATION_LABEL_FOR] != null) {
-				if (!attributeNames.containsObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute)) attributeNames.addObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute);
-			} else {
-				attributeNames.removeObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute);
-			}
-			
-			if (relations[ACC.RELATION_LABELLED_BY] != null) {
-				if (!attributeNames.containsObject(OS.NSAccessibilityTitleUIElementAttribute)) attributeNames.addObject(OS.NSAccessibilityTitleUIElementAttribute);
-			} else {
-				attributeNames.removeObject(OS.NSAccessibilityTitleUIElementAttribute);
-			}
-
-			return retainedAutoreleased(attributeNames);
-		}
+		checkRole(event.detail);
+		
+		// If the attributes haven't changed return the cached list.
+		if (attributeNames != null) return retainedAutoreleased(attributeNames);
 		
+		// Set up the base set of attributes.
 		NSMutableArray returnValue = NSMutableArray.arrayWithCapacity(baseAttributes.length);
 
-		/* Add our list of supported attributes to the array.
-		 * Make sure each attribute name is not already in the array before appending.
-		 */
 		for (int i = 0; i < baseAttributes.length; i++) {
-			if (!returnValue.containsObject(baseAttributes[i])) {
-				returnValue.addObject(baseAttributes[i]);
-			}
+			returnValue.addObject(baseAttributes[i]);
 		}
 		
 		switch(event.detail) {
@@ -937,21 +978,15 @@ public class Accessible {
 				returnValue.addObject(OS.NSAccessibilityEnabledAttribute);
 				returnValue.addObject(OS.NSAccessibilityColumnsAttribute);
 				returnValue.addObject(OS.NSAccessibilitySelectedColumnsAttribute);
+				returnValue.addObject(OS.NSAccessibilityVisibleColumnsAttribute);
 				returnValue.addObject(OS.NSAccessibilityRowsAttribute);
 				returnValue.addObject(OS.NSAccessibilitySelectedRowsAttribute);
 				returnValue.addObject(OS.NSAccessibilityVisibleRowsAttribute);
-				returnValue.addObject(OS.NSAccessibilityVisibleColumnsAttribute);
 				returnValue.addObject(OS.NSAccessibilityHeaderAttribute);
 				break;
 			case ACC.ROLE_TABLECELL:
-				returnValue.addObject(OS.NSAccessibilitySelectedAttribute);
-				if (OS.VERSION >= 0x1060) returnValue.addObject(OS.NSAccessibilityRowIndexRangeAttribute);
-				if (OS.VERSION >= 0x1060) returnValue.addObject(OS.NSAccessibilityColumnIndexRangeAttribute);
-				break;
-			case ACC.ROLE_TABLEROWHEADER:
 				returnValue.addObject(OS.NSAccessibilityEnabledAttribute);
-				returnValue.addObject(OS.NSAccessibilitySelectedAttribute);
-				returnValue.addObject(OS.NSAccessibilityIndexAttribute);
+				returnValue.addObject(OS.NSAccessibilityValueAttribute);
 				break;
 			case ACC.ROLE_TREE:
 				returnValue.addObject(OS.NSAccessibilityColumnsAttribute);
@@ -1009,6 +1044,8 @@ public class Accessible {
 			case ACC.ROLE_CANVAS:
 				break;
 			case ACC.ROLE_COLUMN:
+				returnValue.removeObject(OS.NSAccessibilityChildrenAttribute);
+				returnValue.removeObject(OS.NSAccessibilityFocusedAttribute);
 				returnValue.addObject(OS.NSAccessibilityIndexAttribute);
 				returnValue.addObject(OS.NSAccessibilitySelectedAttribute);
 				returnValue.addObject(OS.NSAccessibilityRowsAttribute);
@@ -1018,6 +1055,9 @@ public class Accessible {
 			case ACC.ROLE_DOCUMENT:
 				break;
 			case ACC.ROLE_GRAPHIC:
+				returnValue.addObject(OS.NSAccessibilityEnabledAttribute);
+				returnValue.addObject(OS.NSAccessibilityTitleAttribute);
+				returnValue.addObject(OS.NSAccessibilityDescriptionAttribute);
 				break;
 			case ACC.ROLE_GROUP:
 				break;
@@ -1260,7 +1300,21 @@ public class Accessible {
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public boolean internal_accessibilityIsIgnored(int childID) {
-		return false;
+		AccessibleControlEvent event = new AccessibleControlEvent(this);
+		event.childID = childID;
+		event.detail = -1;
+		for (int i = 0; i < accessibleControlListeners.size(); i++) {
+			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
+			listener.getRole(event);
+		}
+
+		boolean shouldIgnore = (event.detail == -1);
+		
+		if (shouldIgnore) {
+			shouldIgnore = getTitleAttribute(childID) == null && getHelpAttribute(childID) == null && getDescriptionAttribute(childID) == null;
+		}
+		
+		return shouldIgnore;
 	}
 
 	/**
@@ -1288,6 +1342,8 @@ public class Accessible {
 		if (event.detail == -1)
 			return null;
 		
+		checkRole(event.detail);
+		
 		if ((childID == ACC.CHILDID_SELF) && (parameterizedAttributeNames != null)) {
 			return retainedAutoreleased(parameterizedAttributeNames);
 		}
@@ -1442,6 +1498,8 @@ public class Accessible {
 	}
 
 	id getAttributedStringForRangeParameterizedAttribute(id parameter, int childID) {
+		if (accessibleAttributeListeners.size() == 0) return null;
+		
 		id stringFragment = getStringForRangeParameterizedAttribute(parameter, childID);
 		NSMutableAttributedString attribString = (NSMutableAttributedString)new NSMutableAttributedString().alloc();
 		attribString.initWithString(new NSString(stringFragment), null);
@@ -1456,6 +1514,8 @@ public class Accessible {
 		event.offset = (int) /*64*/ range.location;
 		event.start = event.end = -1;
 		
+		NSRange attributeRange = new NSRange();
+		
 		while (event.offset < range.location + range.length) {
 			if (accessibleAttributeListeners.size() > 0) {
 				for (int i = 0; i < accessibleAttributeListeners.size(); i++) {
@@ -1464,16 +1524,27 @@ public class Accessible {
 				}
 			}
 
-			if (event.start == -1 && event.end == -1) {
-				return stringFragment;
-			} else {
-				event.offset = event.end;
-			}			
-
-			NSRange attributeRange = new NSRange();
+			if (event.start == -1 && event.end == -1) return stringFragment;
+			
+			// The returned attributed string must have zero-based attributes.
 			attributeRange.location = event.start - range.location;
 			attributeRange.length = event.end - event.start;
-			
+
+			// attributeRange.location can be negative if the start of the requested range falls in the middle of a style run.
+			// If that happens, clamp to zero and adjust the length by the amount of adjustment.
+			if (attributeRange.location < 0) {
+				attributeRange.length -= -attributeRange.location;
+				attributeRange.location = 0;
+			}
+
+			// Likewise, make sure the last attribute set does not run past the end of the requested range. 
+			if (attributeRange.location + attributeRange.length > range.length) {
+				attributeRange.length = range.length - attributeRange.location;
+			}
+
+			// Reset the offset so we pick up the next set of attributes that change.
+			event.offset = event.end;
+
 			if (event.textStyle != null) {
 				TextStyle ts = event.textStyle;
 				if (ts.font != null) {
@@ -1572,6 +1643,7 @@ public class Accessible {
 				break;
 			}
 			paragraphDict.setValue(NSNumber.numberWithInt(osAlignment), NSString.stringWith("AXTextAlignment"));
+			range.location = 0;
 			attribString.addAttribute(NSString.stringWith("AXParagraphStyle"), paragraphDict, range);
 		}
 		
@@ -1579,6 +1651,8 @@ public class Accessible {
 	}
 
 	id getBoundsForRangeParameterizedAttribute(id parameter, int childID) {
+		if (accessibleTextExtendedListeners.size() == 0) return null;
+		
 		id returnValue = null;
 		NSValue parameterObject = new NSValue(parameter.id);
 		NSRange range = parameterObject.rangeValue();
@@ -1607,7 +1681,6 @@ public class Accessible {
 			//FIXME???
 			//how to implement with old listener
 		}
-		returnValue = NSValue.valueWithRect(rect);
 		return returnValue;
 	}
 	
@@ -1709,18 +1782,22 @@ public class Accessible {
 			listener.getRole(event);
 		}
 		if (event.detail != -1) {
-			String appRole = roleToOs (event.detail);
-			String appSubrole = null;
-			int index = appRole.indexOf(':');
-			if (index != -1) {
-				appSubrole = appRole.substring(index + 1);
-				appRole = appRole.substring(0, index);
+			if (event.detail == ACC.ROLE_TABITEM) {
+				returnValue = new NSString(OS.NSAccessibilityRoleDescription (NSString.stringWith("AXTab").id, 0));
+			} else {
+				String appRole = roleToOs (event.detail);
+				String appSubrole = null;
+				int index = appRole.indexOf(':');
+				if (index != -1) {
+					appSubrole = appRole.substring(index + 1);
+					appRole = appRole.substring(0, index);
+				}
+				NSString nsAppRole = NSString.stringWith(appRole);
+				NSString nsAppSubrole = null;
+				
+				if (appSubrole != null) nsAppSubrole = NSString.stringWith(appSubrole);
+				returnValue = new NSString(OS.NSAccessibilityRoleDescription (((nsAppRole != null) ? nsAppRole.id : 0), (nsAppSubrole != null) ? nsAppSubrole.id : 0));
 			}
-			NSString nsAppRole = NSString.stringWith(appRole);
-			NSString nsAppSubrole = null;
-			
-			if (appSubrole != null) nsAppSubrole = NSString.stringWith(appSubrole);
-			returnValue = new NSString(OS.NSAccessibilityRoleDescription (((nsAppRole != null) ? nsAppRole.id : 0), (nsAppSubrole != null) ? nsAppSubrole.id : 0));
 		}
 		return returnValue;
 	}
@@ -1831,6 +1908,7 @@ public class Accessible {
 				case ACC.ROLE_HEADING: // text in the text field
 					if (value != null) returnValue = NSString.stringWith(value);
 					break;
+				case ACC.ROLE_TABLECELL: // text in the cell
 				case ACC.ROLE_LABEL: // text in the label
 					/* On a Mac, the 'value' of a label is the same as the 'name' of the label. */
 					AccessibleEvent e = new AccessibleEvent(this);
@@ -1881,8 +1959,7 @@ public class Accessible {
 		
 		/* Or the application can answer a valid child ID, including CHILDID_SELF and CHILDID_NONE. */
 		if (event.childID == ACC.CHILDID_SELF) {
-			boolean hasFocus = (event.childID == childID);
-			return NSNumber.numberWithBool(hasFocus);
+			return NSNumber.numberWithBool(true);
 		}
 		if (event.childID == ACC.CHILDID_NONE) {
 			return NSNumber.numberWithBool(false);
@@ -1919,6 +1996,15 @@ public class Accessible {
 	id getChildrenAttribute (int childID) {
 		id returnValue = null; 
 		if (childID == ACC.CHILDID_SELF) {
+			// Test for a table first.
+			if (currentRole == ACC.ROLE_TABLE) {
+				// If the row count differs from the row elements returned,
+				// we need to create our own adapter to map the cells onto 
+				// rows and columns.  The rows and columns attributes determine that for us.
+				getRowsAttribute(childID);
+				getColumnsAttribute(childID);
+			}
+			
 			AccessibleControlEvent event = new AccessibleControlEvent(this);
 			event.childID = childID;
 			event.detail = -1; // set to impossible value to test if app resets
@@ -2269,7 +2355,7 @@ public class Accessible {
 			range.location = event.start;
 			range.length = event.end - event.start;
 			returnValue = NSValue.valueWithRange(range);
-		} else {
+		} else if (accessibleControlListeners.size() > 0){
 			AccessibleControlEvent event = new AccessibleControlEvent(this);
 			event.childID = childID;
 			event.result = null;
@@ -2306,7 +2392,7 @@ public class Accessible {
 			range.location = event.start;
 			range.length = event.end - event.start;
 			returnValue = NSValue.valueWithRange(range);
-		} else {
+		} else if (accessibleControlListeners.size() > 0) {
 //			AccessibleControlEvent event = new AccessibleControlEvent(this);
 //			event.childID = childID;
 //			event.result = null;
@@ -2345,7 +2431,7 @@ public class Accessible {
 			}
 			String text = event.result;
 			if (text != null) returnValue = NSString.stringWith(text);
-		} else {
+		} else if (accessibleTextListeners.size() > 0) {
 			AccessibleTextEvent event = new AccessibleTextEvent(this);
 			event.childID = childID;
 			event.offset = -1;
@@ -2387,7 +2473,7 @@ public class Accessible {
 			range.location = event.start;
 			range.length = event.end - event.start;
 			returnValue = NSValue.valueWithRange(range);
-		} else {
+		} else if (accessibleTextExtendedListeners.size() > 0) {
 			AccessibleTextEvent event = new AccessibleTextEvent(this);
 			event.childID = childID;
 			event.offset = -1;
@@ -2430,7 +2516,7 @@ public class Accessible {
 				listener.getText(event);
 			}
 			if (event.result != null) returnValue = NSString.stringWith(event.result);
-		} else {
+		} else if (accessibleControlListeners.size() > 0) {
 			AccessibleControlEvent event = new AccessibleControlEvent(this);
 			event.childID = childID;
 			event.result = null;
@@ -2470,7 +2556,7 @@ public class Accessible {
 					returnValue.addObject(NSValue.valueWithRange(range));
 				}
 			}
-		} else {
+		} else if (accessibleTextListeners.size() > 0) {
 			AccessibleTextEvent event = new AccessibleTextEvent(this);
 			event.childID = childID;
 			event.offset = -1;
@@ -2493,44 +2579,37 @@ public class Accessible {
 	}
 	
 	id getStyleRangeForIndexAttribute (id parameter, int childID) {
-		id returnValue = null;
+		if (accessibleAttributeListeners.size() == 0) return null;
 
 		// Parameter is an NSRange wrapped in an NSValue. 
 		NSNumber parameterObject = new NSNumber(parameter.id);
 		int index = parameterObject.intValue();
 		
-		if (accessibleAttributeListeners.size() > 0) {
-			AccessibleTextAttributeEvent event = new AccessibleTextAttributeEvent(this);
-			event.offset = (int) /*64*/ index;
-			
-			// Marker values -- if -1 after calling getTextAttributes, no one implemented it.
-			event.start = event.end = -1;
-			
-			for (int i = 0; i < accessibleAttributeListeners.size(); i++) {
-				AccessibleAttributeListener listener = (AccessibleAttributeListener) accessibleAttributeListeners.elementAt(i);
-				listener.getTextAttributes(event);
-			}
+		AccessibleTextAttributeEvent event = new AccessibleTextAttributeEvent(this);
+		event.offset = (int) /*64*/ index;
 
-			NSRange range = new NSRange();
-			if (event.start == -1 && event.end == -1) {
-				range.location = index;
-				range.length = 0;
-			} else {
-				range.location = event.start;
-				range.length = event.end - event.start;
-			}
-			returnValue = NSValue.valueWithRange(range);
-		} else {
-			NSRange range = new NSRange();
+		// Marker values -- if -1 after calling getTextAttributes, no one implemented it.
+		event.start = event.end = -1;
+
+		for (int i = 0; i < accessibleAttributeListeners.size(); i++) {
+			AccessibleAttributeListener listener = (AccessibleAttributeListener) accessibleAttributeListeners.elementAt(i);
+			listener.getTextAttributes(event);
+		}
+
+		NSRange range = new NSRange();
+		if (event.start == -1 && event.end == -1) {
 			range.location = index;
 			range.length = 0;
-			returnValue = NSValue.valueWithRange(range);
+		} else {
+			range.location = event.start;
+			range.length = event.end - event.start;
 		}
-		return returnValue;
+
+		return NSValue.valueWithRange(range);
 	}
 	
 	id getVisibleCharacterRangeAttribute (int childID) {
-		NSRange range = new NSRange();
+		NSRange range = null;
 		if (accessibleTextExtendedListeners.size() > 0) {
 			AccessibleTextEvent event = new AccessibleTextEvent(this);
 			event.childID = childID;
@@ -2538,9 +2617,10 @@ public class Accessible {
 				AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 				listener.getVisibleRanges(event);
 			}
+			range = new NSRange();
 			range.location = event.start;
 			range.length = event.end - event.start;
-		} else {
+		} else if (accessibleControlListeners.size() > 0) {
 			AccessibleControlEvent event = new AccessibleControlEvent(this);
 			event.childID = childID;
 			event.result = null;
@@ -2549,14 +2629,13 @@ public class Accessible {
 				listener.getValue(event);
 			}
 			if (event.result != null) {
+				range = new NSRange();
 				range.location = 0;
 				range.length = event.result.length();
-			} else {
-				return null;
 			}
 		}
 
-		return NSValue.valueWithRange(range);
+		return (range != null) ? NSValue.valueWithRange(range) : null;
 	}
 
 	int lineNumberForOffset (String text, int offset) {
@@ -2856,42 +2935,41 @@ public class Accessible {
 	 * @since 3.6
 	 */
 	public void removeRelation(int type, Accessible target) {
-		//TODO: platform-specific? (we will manage the set on Windows)
+		checkWidget();
+		if (relations[type] != null) {
+			relations[type].removeTarget(target);
+		}
 	}
 	
 	void release(boolean destroy) {
-		Iterator childIter = children.iterator();
-		while(childIter.hasNext()) {
-			Accessible accessible = (Accessible) childIter.next();
-			accessible.release(false);
-		}
-		children = null;
-		if (destroy && parent != null) parent.children.remove(this);
-		
 		if (actionNames != null) actionNames.release();
 		actionNames = null;
 		if (attributeNames != null) attributeNames.release();
 		attributeNames = null;
 		if (parameterizedAttributeNames != null) parameterizedAttributeNames.release();
 		parameterizedAttributeNames = null;
-		if (delegate != null) delegate.release();
+		if (delegate != null) {
+			delegate.internal_dispose_SWTAccessibleDelegate();
+			delegate.release();
+		}
 		delegate = null;
 		relations = null;
 		
-		Collection delegates = childToIdMap.values();
-		Iterator iter = delegates.iterator();
-		while (iter.hasNext()) {
-			SWTAccessibleDelegate childDelegate = (SWTAccessibleDelegate)iter.next();
-			childDelegate.internal_dispose_SWTAccessibleDelegate();
+		if (childToIdMap != null) {
+			Collection delegates = childToIdMap.values();
+			Iterator iter = delegates.iterator();
+			while (iter.hasNext()) {
+				SWTAccessibleDelegate childDelegate = (SWTAccessibleDelegate)iter.next();
+				childDelegate.internal_dispose_SWTAccessibleDelegate();
+				childDelegate.release();
+			}
+			childToIdMap.clear();
+			childToIdMap = null;
 		}
-		childToIdMap.clear();
-		childToIdMap = null;
+		
+		if (tableDelegate != null) tableDelegate.release();
 	}
 	
-	void releaseAccessibleChildren() {
-
-	}
-
 	static NSArray retainedAutoreleased(NSArray inObject) {
 		id temp = inObject.retain();
 		id temp2 = new NSObject(temp.id).autorelease();
@@ -2903,13 +2981,46 @@ public class Accessible {
 	 * indicating that something has changed within a custom control.
 	 *
 	 * @param event an <code>ACC</code> constant beginning with EVENT_* indicating the message to send
-	 * @param eventData an object containing event-specific data
+	 * @param eventData an object containing event-specific data, or null if there is no event-specific data
 	 * 
 	 * @exception SWTException <ul>
 	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver's control has been disposed</li>
 	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver's control</li>
 	 * </ul>
 	 * 
+	 * @see ACC#EVENT_ACTION_CHANGED
+	 * @see ACC#EVENT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE
+	 * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED
+	 * @see ACC#EVENT_DOCUMENT_RELOAD
+	 * @see ACC#EVENT_HYPERLINK_ACTIVATED
+	 * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED
+	 * @see ACC#EVENT_LOCATION_CHANGED
+	 * @see ACC#EVENT_NAME_CHANGED
+	 * @see ACC#EVENT_PAGE_CHANGED
+	 * @see ACC#EVENT_SECTION_CHANGED
+	 * @see ACC#EVENT_SELECTION_CHANGED
+	 * @see ACC#EVENT_STATE_CHANGED
+	 * @see ACC#EVENT_TABLE_CAPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_SUMMARY_CHANGED
+	 * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_TEXT_CARET_MOVED
+	 * @see ACC#EVENT_TEXT_CHANGED
+	 * @see ACC#EVENT_TEXT_COLUMN_CHANGED
+	 * @see ACC#EVENT_TEXT_SELECTION_CHANGED
+	 * @see ACC#EVENT_VALUE_CHANGED
+	 * 
 	 * @since 3.6
 	 */
 	public void sendEvent(int event, Object eventData) {
@@ -2918,7 +3029,6 @@ public class Accessible {
 		id eventSource = accessibleHandle(this);
 
 		switch (event) {
-		case ACC.EVENT_TABLE_CHANGED:
 		case ACC.EVENT_TEXT_CHANGED:
 		case ACC.EVENT_VALUE_CHANGED:
 		case ACC.EVENT_STATE_CHANGED:
@@ -2953,7 +3063,14 @@ public class Accessible {
 			OS.NSAccessibilityPostNotification(eventSource.id, OS.NSAccessibilityTitleChangedNotification.id); break;
 		case ACC.EVENT_TEXT_CARET_MOVED:
 			OS.NSAccessibilityPostNotification(eventSource.id, OS.NSAccessibilitySelectedTextChangedNotification.id); break;
-
+		case ACC.EVENT_TABLE_CHANGED:
+			if (tableDelegate != null) {
+				tableDelegate.reset();
+				getRowsAttribute(ACC.CHILDID_SELF);
+				getColumnsAttribute(ACC.CHILDID_SELF);
+			}
+			OS.NSAccessibilityPostNotification(eventSource.id, OS.NSAccessibilityRowCountChangedNotification.id); break;
+			
 		// None of these correspond to anything in Cocoa. 
 		case ACC.EVENT_HYPERTEXT_LINK_SELECTED:
 		case ACC.EVENT_DOCUMENT_LOAD_COMPLETE:
@@ -2977,7 +3094,11 @@ public class Accessible {
 	 */
 	public void selectionChanged () {
 		checkWidget();
-		OS.NSAccessibilityPostNotification(control.view.id, OS.NSAccessibilitySelectedChildrenChangedNotification.id);
+		if (currentRole == ACC.ROLE_TABLE) {
+			OS.NSAccessibilityPostNotification(control.view.id, OS.NSAccessibilitySelectedRowsChangedNotification.id);
+		} else {
+			OS.NSAccessibilityPostNotification(control.view.id, OS.NSAccessibilitySelectedChildrenChangedNotification.id);
+		}
 	}
 
 	/**
@@ -3144,15 +3265,9 @@ public class Accessible {
 			case ACC.ROLE_COLUMN: nsReturnValue =  OS.NSAccessibilityColumnRole; break;
 			case ACC.ROLE_ROW: nsReturnValue =  concatStringsAsRole(OS.NSAccessibilityRowRole, OS.NSAccessibilityTableRowSubrole); break;
 			case ACC.ROLE_TABLE: nsReturnValue = OS.NSAccessibilityTableRole; break;
-			case ACC.ROLE_TABLECELL: 
-				if (OS.VERSION >= 0x1060) {
-					nsReturnValue = OS.NSAccessibilityCellRole;
-				} else {
-					nsReturnValue = concatStringsAsRole(OS.NSAccessibilityRowRole, OS.NSAccessibilityTableRowSubrole);
-				}
-				break;
+			case ACC.ROLE_TABLECELL: nsReturnValue = OS.NSAccessibilityStaticTextRole; break; 
 			case ACC.ROLE_TABLECOLUMNHEADER: nsReturnValue = OS.NSAccessibilityGroupRole; break;
-			case ACC.ROLE_TABLEROWHEADER: nsReturnValue = concatStringsAsRole(OS.NSAccessibilityRowRole, OS.NSAccessibilityTableRowSubrole); break;
+			case ACC.ROLE_TABLEROWHEADER: nsReturnValue = OS.NSAccessibilityGroupRole; break;
 			case ACC.ROLE_TREE: nsReturnValue = OS.NSAccessibilityOutlineRole; break;
 			case ACC.ROLE_TREEITEM: nsReturnValue = concatStringsAsRole(OS.NSAccessibilityOutlineRole, OS.NSAccessibilityOutlineRowSubrole); break;
 			case ACC.ROLE_TABFOLDER: nsReturnValue = OS.NSAccessibilityTabGroupRole; break;
@@ -3207,4 +3322,37 @@ public class Accessible {
 		return control.getDisplay ().getThread () == Thread.currentThread ();
 	}
 
+	/**
+	 * Adds relationship attributes if needed to the property list. 
+	 * <p>
+	 * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
+	 * public API. It is marked public only so that it can be shared
+	 * within the packages provided by SWT. It is not available on all
+	 * platforms and should never be accessed from application code.
+	 * </p>
+	 * 
+	 * @noreference This method is not intended to be referenced by clients.
+	 */
+	public int /*long*/ internal_addRelationAttributes(int /*long*/ defaultAttributes) {
+		NSArray attributes = new NSArray(defaultAttributes);
+		NSMutableArray returnArray = NSMutableArray.arrayWithCapacity(attributes.count());
+		returnArray.addObjectsFromArray(attributes);
+		
+		// See if this object has a label or is a label for something else. If so, add that to the list.
+		if (relations[ACC.RELATION_LABEL_FOR] != null) {
+			if (!returnArray.containsObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute)) returnArray.addObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute);
+			if (!returnArray.containsObject(OS.NSAccessibilityTitleAttribute)) returnArray.addObject(OS.NSAccessibilityTitleAttribute);
+		} else {
+			returnArray.removeObject(OS.NSAccessibilityServesAsTitleForUIElementsAttribute);
+		}
+
+		if (relations[ACC.RELATION_LABELLED_BY] != null) {
+			if (!returnArray.containsObject(OS.NSAccessibilityTitleUIElementAttribute)) returnArray.addObject(OS.NSAccessibilityTitleUIElementAttribute);
+		} else {
+			returnArray.removeObject(OS.NSAccessibilityTitleUIElementAttribute);
+		}
+
+		return returnArray.id;
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableColumn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableColumn.java
new file mode 100644
index 0000000..a106d8e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableColumn.java	
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.accessibility;
+
+import org.eclipse.swt.internal.cocoa.*;
+
+/**
+ * This class is used to describe a table column for objects that have an accessible
+ * role of ACC.ROLE_TABLE, but aren't implemented like NSTableViews. 
+ *
+ * Instances of this class represent one column in a table. Cocoa accessibility expects
+ * columns to report their location, number of rows, and elements in those rows.
+ * 
+ * @see TableAccessibleDelegate
+ */
+class AccessibleTableColumn extends Accessible {
+
+	public AccessibleTableColumn(Accessible accessible, int childID) {
+		super(accessible);
+		index = childID;
+		
+		addAccessibleControlListener(new AccessibleControlAdapter() {
+			public void getLocation(AccessibleControlEvent e) {
+				Accessible[] cells = AccessibleTableColumn.this.getColumnCells();
+
+				// Ask first row for position.
+				AccessibleControlEvent event = new AccessibleControlEvent(this);
+				event.childID = ACC.CHILDID_SELF;
+				event.width = -1;
+				Accessible child = cells[0];
+				
+				for (int i = 0; i < child.accessibleControlListeners.size(); i++) {
+					AccessibleControlListener listener = (AccessibleControlListener) child.accessibleControlListeners.elementAt(i);
+					listener.getLocation(event);
+				}
+
+				// Ask all children for size.
+				int height = 0;
+				int width = 0;
+				for (int j = 0; j < cells.length; j++) {
+					NSValue sizeObj = (NSValue)cells[j].getSizeAttribute(ACC.CHILDID_SELF);
+					NSSize size = sizeObj.sizeValue();
+					if (size.width > width) width = (int) size.width;
+					height += size.height;
+				}
+				
+				e.x = event.x;
+				e.y = event.y;
+				e.width = width;
+				e.height = height;
+			}
+			public void getRole(AccessibleControlEvent e) {
+				e.detail = ACC.ROLE_COLUMN;
+			}
+		});
+		addAccessibleTableListener(new AccessibleTableAdapter() {
+			public void getRowCount(AccessibleTableEvent e) {
+				e.count = getColumnCells().length;
+			}
+			public void getRow(AccessibleTableEvent e) {
+				int index = e.row;
+				Accessible[] children = getColumnCells();
+				int count = children.length;
+				if (0 <= index && index < count) {
+					e.accessible = children[index];
+				}
+			}
+			public void getRows(AccessibleTableEvent e) {
+				e.accessibles = getColumnCells();
+			}
+		});
+	}
+	
+	private Accessible[] getColumnCells() {
+		int validRowCount = Math.max (1, parent.getRowCount());
+		Accessible[] cells = new Accessible[validRowCount];
+		AccessibleTableEvent event = new AccessibleTableEvent(this);
+		for (int i = 0; i < validRowCount; i++) {
+			event.column = index;
+			event.row = i;
+	
+			for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
+				AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(j);
+				listener.getCell(event);
+			}
+	
+			cells[i] = event.accessible;
+		}
+		return cells;
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableHeader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableHeader.java
new file mode 100644
index 0000000..ed9e5b9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableHeader.java	
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.accessibility;
+
+import org.eclipse.swt.internal.cocoa.*;
+
+/**
+ * This class is used to describe a table header for objects that have an accessible
+ * role of ACC.ROLE_TABLE, but aren't implemented like NSTableViews. That means they
+ * report back their children as a list of cells in row-major order instead of a list of
+ * rows with cells as children of those rows. The assumption is that the first 'row'
+ * of cells (cell 0 to cell 'column-count - 1') are the column headers of the table.
+ *
+ * This class works with the parent control to act as the header section of the table, 
+ * and reports the cells in the header so that screen readers (VoiceOver, mainly) can
+ * identify the column of the cell that the VoiceOver cursor is reading.
+ */
+class AccessibleTableHeader extends Accessible {
+
+	public AccessibleTableHeader(Accessible accessible, int childID) {
+		super(accessible);
+		index = childID;
+
+		addAccessibleControlListener(new AccessibleControlAdapter() {
+			public void getChildren(AccessibleControlEvent e) {
+				int validColumnCount = Math.max (1, parent.getColumnCount());
+				Accessible[] children = new Accessible[validColumnCount];
+				AccessibleControlEvent event = new AccessibleControlEvent(this);
+
+				for (int i = 0; i < validColumnCount; i++) {
+					event.childID = i;
+					event.detail = ACC.CHILDID_CHILD_AT_INDEX;
+
+					for (int j = 0; j < parent.accessibleControlListeners.size(); j++) {
+						AccessibleControlListener listener = (AccessibleControlListener) parent.accessibleControlListeners.elementAt(j);
+						listener.getChild(event);
+					}
+
+					event.accessible.parent = AccessibleTableHeader.this;
+					children[i] = event.accessible;
+				}
+				e.children = children; 
+			}
+			public void getChildCount(AccessibleControlEvent e) {
+				e.detail = Math.max (1, parent.getColumnCount());
+			}
+			public void getLocation(AccessibleControlEvent e) {
+				int validColumnCount = Math.max (1, parent.getColumnCount());
+				Accessible[] children = new Accessible[validColumnCount];
+				AccessibleControlEvent event = new AccessibleControlEvent(this);
+
+				for (int i = 0; i < validColumnCount; i++) {
+					event.childID = i;
+					event.detail = ACC.CHILDID_CHILD_AT_INDEX;
+
+					for (int j = 0; j < parent.accessibleControlListeners.size(); j++) {
+						AccessibleControlListener listener = (AccessibleControlListener) parent.accessibleControlListeners.elementAt(j);
+						listener.getChild(event);
+					}
+
+					event.accessible.parent = AccessibleTableHeader.this;
+					children[i] = event.accessible;
+				}
+
+				// Ask first child for position.
+				NSValue positionObj = (NSValue)children[0].getPositionAttribute(ACC.CHILDID_SELF);
+				NSPoint position = positionObj.pointValue();
+
+				// Ask all children for size.
+				int height = 0;
+				int width = 0;
+				for (int j = 0; j < children.length; j++) {
+					NSValue sizeObj = (NSValue)children[j].getSizeAttribute(ACC.CHILDID_SELF);
+					NSSize size = sizeObj.sizeValue();
+					if (size.height > height) height = (int) size.height;
+					width += size.width;
+				}
+				e.x = (int) position.x;
+				// Flip y coordinate for Cocoa.
+				NSArray screens = NSScreen.screens();
+				NSScreen screen = new NSScreen(screens.objectAtIndex(0));
+				NSRect frame = screen.frame();
+				e.y = (int) (frame.height - position.y - height);
+				e.width = width;
+				e.height = height;
+			}
+
+			public void getRole(AccessibleControlEvent e) {
+				e.detail = ACC.ROLE_TABLECOLUMNHEADER;
+			}
+		});
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableRow.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableRow.java
new file mode 100644
index 0000000..b514898
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/AccessibleTableRow.java	
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.accessibility;
+
+import org.eclipse.swt.internal.cocoa.*;
+
+/**
+ * This class is used to describe a table column for objects that have an accessible
+ * role of ACC.ROLE_TABLE, but aren't implemented like NSTableViews. 
+ *
+ * Instances of this class represent one row in a table. Cocoa accessibility expects
+ * rows to report their location, and assumes the cells of the table are children of the rows.
+ * 
+ * @see TableAccessibleDelegate
+ */
+class AccessibleTableRow extends Accessible {
+
+	public AccessibleTableRow(Accessible accessible, int childID) {
+		super(accessible);
+		index = childID;
+		
+		addAccessibleControlListener(new AccessibleControlAdapter() {
+			public void getChildCount(AccessibleControlEvent e) {
+				e.detail = Math.max (1, parent.getColumnCount());
+			}
+			public void getChildren(AccessibleControlEvent e) {
+				int validColumnCount = Math.max (1, parent.getColumnCount());
+				Object[] children = new Object[validColumnCount];
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				for (int i = 0; i < validColumnCount; i++) {
+					event.column = i;
+					event.row = index;
+					for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
+						AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(j);
+						listener.getCell(event);
+					}
+					
+					if (event.accessible != null) {
+						event.accessible.parent = AccessibleTableRow.this;
+					}
+					
+					children[i] = event.accessible;
+				}
+				
+				e.children = children;
+			}			
+			public void getLocation(AccessibleControlEvent e) {
+				int validColumnCount = Math.max (1, parent.getColumnCount());
+				Accessible[] children = new Accessible[validColumnCount];
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				for (int i = 0; i < validColumnCount; i++) {
+					event.column = i;
+					event.row = index;
+
+					for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
+						AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(j);
+						listener.getCell(event);
+					}
+
+					children[i] = event.accessible;
+				}
+
+				// Ask first child for position.
+				NSValue positionObj = (NSValue)children[0].getPositionAttribute(ACC.CHILDID_SELF);
+				NSPoint position = positionObj.pointValue();
+				
+				// Ask all children for size.
+				int height = 0;
+				int width = 0;
+				for (int j = 0; j < children.length; j++) {
+					NSValue sizeObj = (NSValue)children[j].getSizeAttribute(ACC.CHILDID_SELF);
+					NSSize size = sizeObj.sizeValue();
+					if (size.height > height) height = (int) size.height;
+					width += size.width;
+				}
+				e.x = (int) position.x;
+				// Flip y coordinate for Cocoa.
+				NSArray screens = NSScreen.screens();
+				NSScreen screen = new NSScreen(screens.objectAtIndex(0));
+				NSRect frame = screen.frame();
+				e.y = (int) (frame.height - position.y - height);
+				e.width = width;
+				e.height = height;
+			}
+
+			public void getRole(AccessibleControlEvent e) {
+				int childID = e.childID;
+				if (childID == ACC.CHILDID_SELF) {
+					e.detail = ACC.ROLE_ROW;
+				} else {
+					e.detail = ACC.ROLE_TABLECELL;
+				}
+			}
+
+			public void getFocus(AccessibleControlEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				event.column = 0;
+				event.row = index;
+				for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
+					AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(j);
+					listener.getCell(event);
+				}
+				if (event.accessible != null) {
+					NSNumber focusedObj = (NSNumber) event.accessible.getFocusedAttribute(ACC.CHILDID_SELF);
+					e.childID = focusedObj.boolValue() ? ACC.CHILDID_SELF : ACC.CHILDID_NONE;
+				} else {
+					e.childID = ACC.CHILDID_NONE;
+				}
+			}
+		});
+		
+		addAccessibleTableListener(new AccessibleTableAdapter() {
+			public void isColumnSelected(AccessibleTableEvent e) {
+				e.isSelected = false;
+			}
+			public void isRowSelected(AccessibleTableEvent e) {
+				// Delegate to the parent table.
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				event.row = e.row;
+				for (int i = 0; i < parent.accessibleTableListeners.size(); i++) {
+					AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(i);
+					listener.isRowSelected(event);
+				}
+				e.isSelected = event.isSelected;
+			}			
+		});
+	}
+	
+	void getChildAtPoint(AccessibleControlEvent e) {
+		int validColumnCount = Math.max (1, parent.getColumnCount());
+		Accessible[] children = new Accessible[validColumnCount];
+		AccessibleTableEvent event = new AccessibleTableEvent(this);
+		for (int i = 0; i < validColumnCount; i++) {
+			event.column = i;
+			event.row = index;
+
+			for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
+				AccessibleTableListener listener = (AccessibleTableListener)parent.accessibleTableListeners.elementAt(j);
+				listener.getCell(event);
+			}
+
+			children[i] = event.accessible;
+		}
+		
+		for (int j = 0; j < children.length; j++) {
+			NSValue positionObj = (NSValue)children[j].getPositionAttribute(index);
+			NSPoint position = positionObj.pointValue();
+			
+			NSValue sizeObj = (NSValue)children[j].getSizeAttribute(index);
+			NSSize size = sizeObj.sizeValue();
+
+			if (position.x <= e.x && e.x <= position.x + size.width) {
+				children[j].parent = this;
+				e.accessible = children[j];
+				break;
+			}
+		}
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Relation.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Relation.java
index 0d5e2de..95e9b49 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Relation.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Relation.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,13 +24,22 @@ class Relation {
 	}
 
 	void addTarget(Accessible target) {
+		if (containsTarget(target)) return;
 		Accessible[] newTargets = new Accessible[targets.length + 1];
 		System.arraycopy(targets, 0, newTargets, 0, targets.length);
 		newTargets[targets.length] = target;
 		targets = newTargets;
 	}
 
+	boolean containsTarget(Accessible target) {
+		for (int i = 0; i < targets.length; i++) {
+			if (targets[i] == target) return true;
+		}
+		return false;
+	}
+
 	void removeTarget(Accessible target) {
+		if (!containsTarget(target)) return;
 		Accessible[] newTargets = new Accessible[targets.length - 1];
 		int j = 0;
 		for (int i = 0; i < targets.length; i++) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/SWTAccessibleDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/SWTAccessibleDelegate.java
index 249d83a..68d0bfd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/SWTAccessibleDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/SWTAccessibleDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/TableAccessibleDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/TableAccessibleDelegate.java
new file mode 100644
index 0000000..c8b246a
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/TableAccessibleDelegate.java	
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.accessibility;
+
+import java.util.*;
+
+import org.eclipse.swt.internal.cocoa.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class is used to describe a table for objects that have an accessible
+ * role of ACC.ROLE_TABLE, but aren't implemented like NSTableViews. That means they
+ * report back their children as a list of cells in row-major order instead of a list of
+ * rows with cells as children of those rows. The assumption is that the first 'row'
+ * of cells (cell 0 to cell 'column-count - 1') are the column headers of the table.
+
+ * Note that this class is NOT a subclass of Accessible, because it is not a child of the
+ * table accessible. It exists to factor out the logic when working with a lightweight table
+ * that doesn't conform to Cocoa's expectations. Specifically, it reports back a list of row
+ * and column objects and a header as its children, and identifies which cell the mouse is
+ * over.
+ */
+class TableAccessibleDelegate {
+
+	Map /*<Integer, AccessibleTableColumn>*/ childColumnToIdMap = new HashMap();
+	Map /*<Integer, AccessibleTableRow>*/ childRowToIdMap = new HashMap();
+	Accessible tableAccessible;
+	AccessibleTableHeader headerAccessible;
+	
+	public TableAccessibleDelegate(Accessible accessible) {
+		tableAccessible = accessible;
+		
+		tableAccessible.addAccessibleControlListener(new AccessibleControlAdapter() {
+			public void getChildCount(AccessibleControlEvent e) {
+				/* Return the number of row and column children.
+				 * If the CTable2 is being used as a list (i.e. if columns.length == 0) then add 1 column child.
+				 * If there is a column header (i.e. if columns.length > 0) then add 1 "column header" child.
+				 */
+				e.detail = childColumnToIdMap.size() + childRowToIdMap.size();
+				if (childColumnToIdMap.size() > 1) e.detail++;
+			}
+			public void getChildren(AccessibleControlEvent e) {
+				int childCount = childColumnToIdMap.size() + childRowToIdMap.size();
+				if (childColumnToIdMap.size() > 1) childCount++;
+				Accessible[] children = new Accessible[childCount];
+				int childIndex = 0;
+				
+				Iterator iter = childRowToIdMap.values().iterator();
+				while (iter.hasNext()) {
+					AccessibleTableRow row = (AccessibleTableRow)iter.next(); 
+					children[childIndex++] = row;
+				}
+	
+				iter = childColumnToIdMap.values().iterator();
+				while (iter.hasNext()) {
+					AccessibleTableColumn col = (AccessibleTableColumn)iter.next();
+					children[childIndex++] = col;
+				}
+	
+				if (childColumnToIdMap.size() > 1) children[childIndex] = headerAccessible();
+				
+				e.children = children;
+			}
+						
+			public void getChildAtPoint(AccessibleControlEvent e) {
+				NSPoint testPoint = new NSPoint();
+				testPoint.x = e.x;
+				Monitor primaryMonitor = Display.getCurrent().getPrimaryMonitor();
+				testPoint.y = (int) (primaryMonitor.getBounds().height - e.y);
+	
+				Iterator iter = childRowToIdMap.values().iterator();
+				
+				while (iter.hasNext()) {
+					AccessibleTableRow row = (AccessibleTableRow) iter.next();
+					NSValue locationValue = new NSValue(row.getPositionAttribute(ACC.CHILDID_SELF).id);
+					NSPoint location = locationValue.pointValue();
+					
+					NSValue sizeValue = new NSValue(row.getSizeAttribute(ACC.CHILDID_SELF));
+					NSSize size = sizeValue.sizeValue();
+					
+					if (location.y < testPoint.y && testPoint.y < (location.y + size.height)) {
+						AccessibleControlEvent e2 = new AccessibleControlEvent(e.getSource());
+						e2.x = (int) testPoint.x;
+						e2.y = (int) testPoint.y;
+						row.getChildAtPoint(e);
+						break;
+					}
+				}
+			}
+			
+			public void getState(AccessibleControlEvent e) {
+				int state = ACC.STATE_NORMAL | ACC.STATE_FOCUSABLE | ACC.STATE_SELECTABLE;
+	
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				for (int i = 0; i < tableAccessible.accessibleTableListeners.size(); i++) {
+					AccessibleTableListener listener = (AccessibleTableListener)tableAccessible.accessibleTableListeners.elementAt(i);
+					listener.getSelectedRows(event);
+				}
+				
+				if (event.selected != null) {
+					int[] selected = (int[])event.selected;
+	
+					for (int i = 0; i < selected.length; i++) {
+						if (selected[i] == tableAccessible.index) {
+							state |= ACC.STATE_SELECTED;
+							break;
+						}
+					}
+				}
+	
+				NSNumber focusedObject = (NSNumber)tableAccessible.getFocusedAttribute(ACC.CHILDID_SELF);
+				if (focusedObject.boolValue()) {
+					state |= ACC.STATE_FOCUSED;
+				}
+				
+				e.detail = state;
+			}
+		});
+		
+		tableAccessible.addAccessibleTableListener(new AccessibleTableAdapter() {
+			public void getColumnCount(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				
+				for (int i = 0; i < tableAccessible.accessibleTableListeners.size(); i++) {
+					AccessibleTableListener listener = (AccessibleTableListener)tableAccessible.accessibleTableListeners.elementAt(i);
+					if (listener != this) listener.getColumnCount(event);
+				}
+	
+				e.count = event.count;
+			}
+			public void getColumn(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				getColumns(event);
+				e.accessible = event.accessibles[e.column];
+			}
+			public void getColumns(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				getColumnCount(event);
+				
+				// This happens if the table listeners just report back a column count but don't have
+				// distinct objects for each of the column.
+				// When that happens we need to make 'fake' accessibles that represent the rows.
+				if (event.count != childColumnToIdMap.size()) {
+					childColumnToIdMap.clear();
+				}
+				
+				Accessible[] columns = new Accessible[event.count];
+				
+				for (int i = 0; i < event.count; i++) {
+					columns[i] = childColumnToOs(i);
+				}
+	
+				int columnCount = childColumnToIdMap.size() > 0 ? childColumnToIdMap.size() : 1;
+				Accessible[] accessibles = new Accessible[columnCount];
+				for (int i = 0; i < columnCount; i++) {
+					accessibles[i] = (Accessible) childColumnToIdMap.get(new Integer(i));
+				}
+				e.accessibles = accessibles;
+			}
+			public void getColumnHeader(AccessibleTableEvent e) {
+				e.accessible = (childColumnToIdMap.size() > 1 ? headerAccessible() : null);
+			}
+			public void getRowCount(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				
+				for (int i = 0; i < tableAccessible.accessibleTableListeners.size(); i++) {
+					AccessibleTableListener listener = (AccessibleTableListener)tableAccessible.accessibleTableListeners.elementAt(i);
+					if (listener != this) listener.getRowCount(event);
+				}
+	
+				e.count = event.count;
+			}
+			public void getRow(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				getRows(event);
+				e.accessible = event.accessibles[e.row];
+			}
+			public void getRows(AccessibleTableEvent e) {
+				AccessibleTableEvent event = new AccessibleTableEvent(this);
+				getRowCount(event);
+				
+				// This happens if the table listeners just report back a column count but don't have
+				// distinct objects for each of the column.
+				// When that happens we need to make 'fake' accessibles that represent the rows.
+				if (event.count != childRowToIdMap.size()) {
+					childRowToIdMap.clear();
+				}
+				
+				Accessible[] rows = new Accessible[event.count];
+				
+				for (int i = 0; i < event.count; i++) {
+					rows[i] = childRowToOs(i);
+				}
+	
+				int columnCount = childRowToIdMap.size() > 0 ? childRowToIdMap.size() : 1;
+				Accessible[] accessibles = new Accessible[columnCount];
+				for (int i = 0; i < columnCount; i++) {
+					accessibles[i] = (Accessible) childRowToIdMap.get(new Integer(i));
+				}
+				e.accessibles = accessibles;
+			}
+		});
+	
+	}
+
+	Accessible childColumnToOs(int childID) {
+		if (childID == ACC.CHILDID_SELF) {
+			return tableAccessible;
+		}
+	
+		/* Check cache for childID, if found, return corresponding osChildID. */
+		AccessibleTableColumn childRef = (AccessibleTableColumn) childColumnToIdMap.get(new Integer(childID));
+		
+		if (childRef == null) {
+			childRef = new AccessibleTableColumn(tableAccessible, childID);
+			childColumnToIdMap.put(new Integer(childID), childRef);
+		}
+		
+		return childRef;
+	}
+
+	Accessible childRowToOs(int childID) {
+		if (childID == ACC.CHILDID_SELF) {
+			return tableAccessible;
+		}
+
+		/* Check cache for childID, if found, return corresponding osChildID. */
+		AccessibleTableRow childRef = (AccessibleTableRow) childRowToIdMap.get(new Integer(childID));
+		
+		if (childRef == null) {
+			childRef = new AccessibleTableRow(tableAccessible, childID);
+			childRowToIdMap.put(new Integer(childID), childRef);
+		}
+		
+		return childRef;
+	}
+
+	AccessibleTableHeader headerAccessible() {
+		if (headerAccessible == null) headerAccessible = new AccessibleTableHeader(tableAccessible, ACC.CHILDID_SELF);
+		return headerAccessible;
+	}
+
+	void release() {
+		if (childRowToIdMap != null) {
+			Collection delegates = childRowToIdMap.values();
+			Iterator iter = delegates.iterator();
+			while (iter.hasNext()) {
+				SWTAccessibleDelegate childDelegate = ((Accessible)iter.next()).delegate;
+				if (childDelegate != null) {
+					childDelegate.internal_dispose_SWTAccessibleDelegate();
+					childDelegate.release();
+				}
+			}
+
+			childRowToIdMap.clear();
+			childRowToIdMap = null;
+		}
+
+		if (childColumnToIdMap != null) {
+			Collection delegates = childColumnToIdMap.values();
+			Iterator iter = delegates.iterator();
+			while (iter.hasNext()) {
+				SWTAccessibleDelegate childDelegate = ((Accessible)iter.next()).delegate;
+				if (childDelegate != null) {
+					childDelegate.internal_dispose_SWTAccessibleDelegate();
+					childDelegate.release();
+				}
+			}
+
+			childColumnToIdMap.clear();
+			childColumnToIdMap = null;
+		}
+	}
+	
+	void reset() {
+		release();
+		childColumnToIdMap = new HashMap();
+		childRowToIdMap = new HashMap();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/ACC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/ACC.java
index 861d3d3..1cf770e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/ACC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/ACC.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionAdapter.java
index d56526e..a8b9608 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionEvent.java
index b7f7c14..de96073 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java
index a643c90..ab679ec 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeAdapter.java
index feab703..43df16e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeEvent.java
index 9b7409d..b09ffb0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java
index 54eda14..6d08f26 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlAdapter.java
index 034b827..a9bc78a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java
index 9466148..8b50d4b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkAdapter.java
index 2e74823..693cbc8 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkEvent.java
index 5bb0886..79df0ef 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java
index 6e32432..34a48fb 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableAdapter.java
index 827e345..759efaa 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellAdapter.java
index 2852d71..cc0835f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellEvent.java
index 039dcaa..47ceff4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java
index d6618f8..93ed52e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableEvent.java
index 0d675f6..a4dcc9b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java
index faa8a46..65deb59 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextAttributeEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextAttributeEvent.java
index 3f13866..96dc631 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextAttributeEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextAttributeEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextEvent.java
index 96271a9..ce56485 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,20 +34,29 @@ import org.eclipse.swt.internal.*;
 public class AccessibleTextEvent extends SWTEventObject {
 	public int childID;				// IN
 	public int offset, length;		// OUT
+	/** @since 3.6 */
 	public Accessible accessible;
 
 	/**
 	 * The value of this field must be set in the accessible text extended listener method
 	 * before returning. What to set it to depends on the listener method called.
+	 * @since 3.6
 	 */
 	public String result;
 	
+	/** @since 3.6 */
 	public int count;
+	/** @since 3.6 */
 	public int index;
+	/** @since 3.6 */
 	public int start, end;
+	/** @since 3.6 */
 	public int type;
+	/** @since 3.6 */
 	public int x, y, width, height;
+	/** @since 3.6 */
 	public int [] ranges;
+	/** @since 3.6 */
 	public Rectangle [] rectangles;
 	
 	static final long serialVersionUID = 3977019530868308275L;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedAdapter.java
index 2d4c128..d9fa74f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedListener.java
index d5b4d90..c4374ef 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextExtendedListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueAdapter.java
index 39f198f..bb9600a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueAdapter.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueAdapter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueEvent.java
index d56d801..de42982 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java
index 1ab5832..bd557f2 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/emulated/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/emulated/org/eclipse/swt/accessibility/Accessible.java
index 066ad1b..41eb5f5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/emulated/org/eclipse/swt/accessibility/Accessible.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/emulated/org/eclipse/swt/accessibility/Accessible.java	
@@ -576,13 +576,46 @@ public class Accessible {
 	 * indicating that something has changed within a custom control.
 	 *
 	 * @param event an <code>ACC</code> constant beginning with EVENT_* indicating the message to send
-	 * @param eventData an object containing event-specific data
+	 * @param eventData an object containing event-specific data, or null if there is no event-specific data
 	 * 
 	 * @exception SWTException <ul>
 	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver's control has been disposed</li>
 	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver's control</li>
 	 * </ul>
 	 * 
+	 * @see ACC#EVENT_ACTION_CHANGED
+	 * @see ACC#EVENT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE
+	 * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED
+	 * @see ACC#EVENT_DOCUMENT_RELOAD
+	 * @see ACC#EVENT_HYPERLINK_ACTIVATED
+	 * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED
+	 * @see ACC#EVENT_LOCATION_CHANGED
+	 * @see ACC#EVENT_NAME_CHANGED
+	 * @see ACC#EVENT_PAGE_CHANGED
+	 * @see ACC#EVENT_SECTION_CHANGED
+	 * @see ACC#EVENT_SELECTION_CHANGED
+	 * @see ACC#EVENT_STATE_CHANGED
+	 * @see ACC#EVENT_TABLE_CAPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_SUMMARY_CHANGED
+	 * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_TEXT_CARET_MOVED
+	 * @see ACC#EVENT_TEXT_CHANGED
+	 * @see ACC#EVENT_TEXT_COLUMN_CHANGED
+	 * @see ACC#EVENT_TEXT_SELECTION_CHANGED
+	 * @see ACC#EVENT_VALUE_CHANGED
+	 * 
 	 * @since 3.6
 	 */
 	public void sendEvent(int event, Object eventData) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java
index 6f4a50f..f1b21b9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java	
@@ -50,7 +50,6 @@ public class Accessible {
 	Vector accessibleTableCellListeners = new Vector();
 	Vector accessibleTextExtendedListeners = new Vector();
 	Vector accessibleValueListeners = new Vector();
-	Vector accessibleScrollListeners = new Vector();
 	Vector accessibleAttributeListeners = new Vector();
 	Accessible parent;
 	AccessibleObject accessibleObject;
@@ -66,6 +65,13 @@ public class Accessible {
 			this.type = type;
 			this.target = target;
 		}
+
+		public boolean equals(Object object) {
+			if (object == this) return true;
+			if (!(object instanceof Relation)) return false;
+			Relation relation = (Relation)object;
+			return (relation.type == this.type) && (relation.target == this.target);
+		}
 	}
 	
 	/**
@@ -374,7 +380,9 @@ public class Accessible {
 	public void addRelation(int type, Accessible target) {
 		checkWidget();
 		if (relations == null) relations = new Vector();
-		relations.add(new Relation(type, target));
+		Relation relation = new Relation(type, target);
+		if (relations.indexOf(relation) != -1) return;
+		relations.add(relation);
 		if (accessibleObject != null) accessibleObject.addRelation(type, target);
 	}
 	
@@ -750,16 +758,11 @@ public class Accessible {
 	public void removeRelation(int type, Accessible target) {
 		checkWidget();
 		if (relations == null) return;
-		for (int i = relations.size() - 1; i >= 0; i--) {
-			Relation relation = (Relation)relations.elementAt(i);
-			if (relation.type == type && relation.target == target) {
-				relations.remove(i);
-				if (accessibleObject != null) {
-					accessibleObject.removeRelation(relation.type, relation.target);
-				}
-				break;
-			}
-		}
+		Relation relation = new Relation(type, target);
+		int index = relations.indexOf(relation);
+		if (index == -1) return;
+		relations.remove(index);
+		if (accessibleObject != null) accessibleObject.removeRelation(type, target);
 	}
 
 	/**
@@ -767,13 +770,46 @@ public class Accessible {
 	 * indicating that something has changed within a custom control.
 	 *
 	 * @param event an <code>ACC</code> constant beginning with EVENT_* indicating the message to send
-	 * @param eventData an object containing event-specific data
+	 * @param eventData an object containing event-specific data, or null if there is no event-specific data
 	 * 
 	 * @exception SWTException <ul>
 	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver's control has been disposed</li>
 	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver's control</li>
 	 * </ul>
 	 * 
+	 * @see ACC#EVENT_ACTION_CHANGED
+	 * @see ACC#EVENT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE
+	 * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED
+	 * @see ACC#EVENT_DOCUMENT_RELOAD
+	 * @see ACC#EVENT_HYPERLINK_ACTIVATED
+	 * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED
+	 * @see ACC#EVENT_LOCATION_CHANGED
+	 * @see ACC#EVENT_NAME_CHANGED
+	 * @see ACC#EVENT_PAGE_CHANGED
+	 * @see ACC#EVENT_SECTION_CHANGED
+	 * @see ACC#EVENT_SELECTION_CHANGED
+	 * @see ACC#EVENT_STATE_CHANGED
+	 * @see ACC#EVENT_TABLE_CAPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_SUMMARY_CHANGED
+	 * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_TEXT_CARET_MOVED
+	 * @see ACC#EVENT_TEXT_CHANGED
+	 * @see ACC#EVENT_TEXT_COLUMN_CHANGED
+	 * @see ACC#EVENT_TEXT_SELECTION_CHANGED
+	 * @see ACC#EVENT_VALUE_CHANGED
+	 * 
 	 * @since 3.6
 	 */
 	public void sendEvent(int event, Object eventData) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleFactory.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleFactory.java
index f8bf90f..47ed177 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleFactory.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleFactory.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -323,10 +323,7 @@ class AccessibleFactory {
 	
 	static void createAccessible (Accessible accessible) {
 		int /*long*/ controlHandle = accessible.getControlHandle ();
-		int /*long*/ widgetType = OS.G_OBJECT_TYPE (controlHandle);
-		int /*long*/ registry = ATK.atk_get_default_registry ();
-		int /*long*/ factory = ATK.atk_registry_get_factory (registry, widgetType);
-		ATK.atk_object_factory_create_accessible (factory, controlHandle);
+		OS.gtk_widget_get_accessible(controlHandle);
 	}
 
 	static int /*long*/ getType (String widgetTypeName, Accessible accessible, int /*long*/ parentType, int childId) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
index 2cafbfe..07ef376 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -479,8 +479,8 @@ class AccessibleObject {
 		}
 		int /*long*/ parentResult = 0;
 		AtkHypertextIface iface = getHypertextIface (atkObject);
-		if (iface != null && iface.get_link != 0) {
-			parentResult = ATK.call (iface.get_link, atkObject, char_index);
+		if (iface != null && iface.get_link_index != 0) {
+			parentResult = ATK.call (iface.get_link_index, atkObject, char_index);
 		}
 		return parentResult;
 	}
@@ -1914,7 +1914,7 @@ class AccessibleObject {
 	}
 	
 	static int /*long*/ atkText_set_caret_offset (int /*long*/ atkObject, int /*long*/ offset) {
-		if (DEBUG) print ("-->atkText_gset_character_offset");
+		if (DEBUG) print ("-->atkText_set_caret_offset");
 		AccessibleObject object = getAccessibleObject (atkObject);
 		if (object != null) {
 			Accessible accessible = object.accessible;
@@ -1931,8 +1931,8 @@ class AccessibleObject {
 			}
 		}
 		AtkTextIface iface = getTextIface (atkObject);
-		if (iface != null && iface.get_character_at_offset != 0) {
-			return ATK.call (iface.get_character_at_offset, atkObject, offset);
+		if (iface != null && iface.set_caret_offset != 0) {
+			return ATK.call (iface.set_caret_offset, atkObject, offset);
 		}
 		return 0;
 	}
@@ -2209,6 +2209,9 @@ class AccessibleObject {
 					if (text != null && text.length () > event.offset && text.length() >= event.offset + event.length) {
 						return getStringPtr (text.substring(event.offset, event.offset + event.length));
 					}
+					if (iface != null && iface.get_text != 0) {
+						return ATK.call (iface.get_text, atkObject, event.offset, event.offset + event.length);
+					}
 					return 0;
 				}
 			}
@@ -2246,6 +2249,10 @@ class AccessibleObject {
 				return getStringPtr (text);
 			}
 		}
+		AtkTextIface iface = getTextIface (atkObject);
+		if (iface != null && iface.get_text != 0) {
+			return ATK.call (iface.get_text, atkObject, start_offset, end_offset);
+		}
 		return 0;
 	}
 
@@ -2257,6 +2264,7 @@ class AccessibleObject {
 			Vector listeners = accessible.accessibleTextExtendedListeners;
 			int length = listeners.size();
 			if (length > 0) {
+				int /*long*/ charCount = atkText_get_character_count (atkObject);
 				AccessibleTextEvent event = new AccessibleTextEvent(accessible);
 				event.start = event.end = (int)/*64*/offset_value;
 				event.count = 1;
@@ -2269,10 +2277,58 @@ class AccessibleObject {
 					case ATK.ATK_TEXT_BOUNDARY_LINE_START: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 					case ATK.ATK_TEXT_BOUNDARY_LINE_END: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 				}
+				int eventStart = event.start;
+				int eventEnd = event.end;
 				for (int i = 0; i < length; i++) {
 					AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
 					listener.getText(event);
 				}
+				switch ((int)/*64*/boundary_type) {
+					case ATK.ATK_TEXT_BOUNDARY_WORD_START: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_START: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_START:
+						if (event.end < charCount) {
+							int start = event.start;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = 2;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.end = event.start;
+							event.start = start;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+					case ATK.ATK_TEXT_BOUNDARY_WORD_END: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_END: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_END:
+						if (0 < event.start) {
+							int end = event.end;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.start = event.end;
+							event.end = end;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+				}
 				OS.memmove (start_offset, new int[] {event.start}, 4);
 				OS.memmove (end_offset, new int[] {event.end}, 4);
 				return getStringPtr (event.result);
@@ -2441,6 +2497,10 @@ class AccessibleObject {
 				return getStringPtr (text);
 			} 
 		}
+		AtkTextIface iface = getTextIface (atkObject);
+		if (iface != null && iface.get_text_after_offset != 0) {
+			return ATK.call (iface.get_text_after_offset, atkObject, offset_value, boundary_type, start_offset, end_offset);
+		}
 		return 0;
 	}
 
@@ -2452,6 +2512,7 @@ class AccessibleObject {
 			Vector listeners = accessible.accessibleTextExtendedListeners;
 			int length = listeners.size();
 			if (length > 0) {
+				int /*long*/ charCount = atkText_get_character_count (atkObject);
 				AccessibleTextEvent event = new AccessibleTextEvent(accessible);
 				event.start = event.end = (int)/*64*/offset_value;
 				event.count = 0;
@@ -2464,10 +2525,58 @@ class AccessibleObject {
 					case ATK.ATK_TEXT_BOUNDARY_LINE_START: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 					case ATK.ATK_TEXT_BOUNDARY_LINE_END: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 				}
+				int eventStart = event.start;
+				int eventEnd = event.end;
 				for (int i = 0; i < length; i++) {
 					AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
 					listener.getText(event);
 				}
+				switch ((int)/*64*/boundary_type) {
+					case ATK.ATK_TEXT_BOUNDARY_WORD_START: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_START: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_START:
+						if (event.end < charCount) {
+							int start = event.start;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = 1;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.end = event.start;
+							event.start = start;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+					case ATK.ATK_TEXT_BOUNDARY_WORD_END: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_END: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_END:
+						if (0 < event.start) {
+							int end = event.end;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = -1;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.start = event.end;
+							event.end = end;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+				}
 				OS.memmove (start_offset, new int[] {event.start}, 4);
 				OS.memmove (end_offset, new int[] {event.end}, 4);
 				return getStringPtr (event.result);
@@ -2579,6 +2688,10 @@ class AccessibleObject {
 				return getStringPtr (text);
 			} 
 		}
+		AtkTextIface iface = getTextIface (atkObject);
+		if (iface != null && iface.get_text_at_offset != 0) {
+			return ATK.call (iface.get_text_at_offset, atkObject, offset_value, boundary_type, start_offset, end_offset);
+		}
 		return 0;
 	}
 
@@ -2590,6 +2703,7 @@ class AccessibleObject {
 			Vector listeners = accessible.accessibleTextExtendedListeners;
 			int length = listeners.size();
 			if (length > 0) {
+				int /*long*/ charCount = atkText_get_character_count (atkObject);
 				AccessibleTextEvent event = new AccessibleTextEvent(accessible);
 				event.start = event.end = (int)/*64*/offset_value;
 				event.count = -1;
@@ -2602,12 +2716,60 @@ class AccessibleObject {
 					case ATK.ATK_TEXT_BOUNDARY_LINE_START: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 					case ATK.ATK_TEXT_BOUNDARY_LINE_END: event.type = ACC.TEXT_BOUNDARY_LINE; break; 
 				}
+				int eventStart = event.start;
+				int eventEnd = event.end;
 				for (int i = 0; i < length; i++) {
 					AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
 					listener.getText(event);
 				}
 				OS.memmove (start_offset, new int[] {event.start}, 4);
 				OS.memmove (end_offset, new int[] {event.end}, 4);
+				switch ((int)/*64*/boundary_type) {
+					case ATK.ATK_TEXT_BOUNDARY_WORD_START: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_START: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_START:
+						if (event.end < charCount) {
+							int start = event.start;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.end = event.start;
+							event.start = start;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+					case ATK.ATK_TEXT_BOUNDARY_WORD_END: 
+					case ATK.ATK_TEXT_BOUNDARY_SENTENCE_END: 
+					case ATK.ATK_TEXT_BOUNDARY_LINE_END:
+						if (0 < event.start) {
+							int end = event.end;
+							event.start = eventStart;
+							event.end = eventEnd;
+							event.count = -2;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+							event.start = event.end;
+							event.end = end;
+							event.type = ACC.TEXT_BOUNDARY_ALL;
+							event.count = 0;
+							for (int i = 0; i < length; i++) {
+								AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) listeners.elementAt(i);
+								listener.getText(event);
+							}
+						}
+						break;
+				}
 				return getStringPtr (event.result);
 			}
 			int offset = (int)/*64*/offset_value;
@@ -2722,12 +2884,16 @@ class AccessibleObject {
 				return getStringPtr (text);
 			}
 		}
+		AtkTextIface iface = getTextIface (atkObject);
+		if (iface != null && iface.get_text_before_offset != 0) {
+			return ATK.call (iface.get_text_before_offset, atkObject, offset_value, boundary_type, start_offset, end_offset);
+		}
 		return 0;
 	}
 	
 	static void setGValue (int /*long*/ value, Number number) {
 		if (number == null) return;
-		OS.g_value_unset(value);
+		if (OS.G_VALUE_TYPE(value) != 0) OS.g_value_unset(value);
 		if (number instanceof Double) {
 			OS.g_value_init(value, OS.G_TYPE_DOUBLE());
 			OS.g_value_set_double(value, number.doubleValue());
@@ -2871,7 +3037,8 @@ class AccessibleObject {
 		if (childId == ACC.CHILDID_NONE || childId == ACC.CHILDID_MULTIPLE) return null;
 		if (children != null) {
 			for (int i = 0; i < children.length; i++) {
-				if (children[i] != null && children[i].id == childId) return children [0];
+				AccessibleObject child = children[i];
+				if (child != null && child.id == childId) return child;
 			}
 		}
 		return null;
@@ -2883,22 +3050,21 @@ class AccessibleObject {
 	}
 	
 	String getText () {
-		int /*long*/ parentResult = 0;
-		String parentText = "";	//$NON-NLS-1$
-		AtkTextIface iface = getTextIface (handle);
-		if (iface != null && iface.get_character_count != 0) {
-			int /*long*/ characterCount = ATK.call (iface.get_character_count, handle);
-			if (characterCount > 0 && iface.get_text != 0) {
-				parentResult = ATK.call (iface.get_text, handle, 0, characterCount);
-				if (parentResult != 0) {
-					parentText = getString (parentResult);
-					OS.g_free(parentResult);
-				}
-			}
-		}
 		Vector listeners = accessible.accessibleControlListeners;
 		int length = listeners.size();
 		if (length > 0) {
+			String parentText = "";	//$NON-NLS-1$
+			AtkTextIface iface = getTextIface (handle);
+			if (iface != null && iface.get_character_count != 0) {
+				int /*long*/ characterCount = ATK.call (iface.get_character_count, handle);
+				if (characterCount > 0 && iface.get_text != 0) {
+					int /*long*/ parentResult = ATK.call (iface.get_text, handle, 0, characterCount);
+					if (parentResult != 0) {
+						parentText = getString (parentResult);
+						OS.g_free(parentResult);
+					}
+				}
+			}
 			AccessibleControlEvent event = new AccessibleControlEvent (accessible);
 			event.childID = id;
 			event.result = parentText;
@@ -2908,7 +3074,7 @@ class AccessibleObject {
 			}
 			return event.result;
 		}
-		return parentText;
+		return null;
 	}
 
 	static int /*long*/ gObjectClass_finalize (int /*long*/ atkObject) {
@@ -3233,7 +3399,8 @@ class AccessibleObject {
 		updateChildren ();
 		AccessibleObject accObject = getChildByID (childID);
 		if (accObject != null) {
-			ATK.atk_focus_tracker_notify (accObject.handle);
+			OS.g_signal_emit_by_name (accObject.handle, ATK.focus_event, 1, 0);
+			ATK.atk_object_notify_state_change(accObject.handle, ATK.ATK_STATE_FOCUSED, true);
 		}
 	}
 	
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java
index 732dd6e..04a73d4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,12 +46,14 @@ public class Accessible {
 	static final int MAX_RELATION_TYPES = 15;
 	static final int TABLE_MODEL_CHANGE_SIZE = 5;
 	static final int TEXT_CHANGE_SIZE = 4;
-	static final boolean DEBUG = Device.DEBUG;
-	static int UniqueID = 1;
+	static final boolean DEBUG = false;
+	static final String PROPERTY_USEIA2 = "org.eclipse.swt.accessibility.UseIA2"; //$NON-NLS-1$
+	static boolean UseIA2 = true;
+	static int UniqueID = -0x10;
 	int refCount = 0, enumIndex = 0;
 	COMObject objIAccessible, objIEnumVARIANT, objIServiceProvider, objIAccessible2, objIAccessibleAction,
-		objIAccessibleApplication, objIAccessibleComponent, /*objIAccessibleEditableText,*/ objIAccessibleHyperlink,
-		objIAccessibleHypertext, objIAccessibleImage, objIAccessibleTable2, objIAccessibleTableCell,
+		objIAccessibleApplication, /*objIAccessibleComponent,*/ /*objIAccessibleEditableText,*/ objIAccessibleHyperlink,
+		objIAccessibleHypertext, /*objIAccessibleImage,*/ objIAccessibleTable2, objIAccessibleTableCell,
 		objIAccessibleText, objIAccessibleValue; /* objIAccessibleRelation is defined in Relation class */
 	IAccessible iaccessible;
 	Vector accessibleListeners = new Vector();
@@ -63,18 +65,24 @@ public class Accessible {
 	Vector accessibleTableCellListeners = new Vector();
 	Vector accessibleTextExtendedListeners = new Vector();
 	Vector accessibleValueListeners = new Vector();
-	Vector accessibleScrollListeners = new Vector();
 	Vector accessibleAttributeListeners = new Vector();
 	Relation relations[] = new Relation[MAX_RELATION_TYPES];
 	Object[] variants;
 	Accessible parent;
 	Vector children = new Vector();
 	Control control;
-	int uniqueID = 0;
+	int uniqueID = -1;
 	int [] tableChange; // type, rowStart, rowCount, columnStart, columnCount
 	Object [] textDeleted; // type, start, end, text
 	Object [] textInserted; // type, start, end, text
 
+	static {
+		String property = System.getProperty (PROPERTY_USEIA2);
+		if (property != null && property.equalsIgnoreCase ("false")) { //$NON-NLS-1$
+			UseIA2 = false;
+		}
+	}
+	
 	/**
 	 * Constructs a new instance of this class given its parent.
 	 * 
@@ -92,8 +100,7 @@ public class Accessible {
 		this.parent = checkNull(parent);
 		this.control = parent.control;
 		parent.children.addElement(this);
-		// TODO: Should we use the proxy for lightweight children (for IAccessible defaults only)?
-		this.iaccessible = parent.iaccessible; // use the same proxy for default values?
+		AddRef();
 	}
 
 	/**
@@ -190,7 +197,38 @@ public class Accessible {
 			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
 			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
 			public int /*long*/ method2(int /*long*/[] args) {return Release();}
-			// We will not add the IAccessible methods here because "AT's should not rely on IA inheritance"
+			
+			/* 
+			 * Even though the IA2 spec says "AT's should not rely on IA inheritance",
+			 * some AT's do rely on it, so we need to implement the IAccessible methods here.
+			 */
+			// method3 GetTypeInfoCount - not implemented
+			// method4 GetTypeInfo - not implemented
+			// method5 GetIDsOfNames - not implemented
+			// method6 Invoke - not implemented
+			public int /*long*/ method7(int /*long*/[] args) {return get_accParent(args[0]);}
+			public int /*long*/ method8(int /*long*/[] args) {return get_accChildCount(args[0]);}
+			public int /*long*/ method9(int /*long*/[] args) {return get_accChild(args[0], args[1]);}
+			public int /*long*/ method10(int /*long*/[] args) {return get_accName(args[0], args[1]);}
+			public int /*long*/ method11(int /*long*/[] args) {return get_accValue(args[0], args[1]);}
+			public int /*long*/ method12(int /*long*/[] args) {return get_accDescription(args[0], args[1]);}
+			public int /*long*/ method13(int /*long*/[] args) {return get_accRole(args[0], args[1]);}
+			public int /*long*/ method14(int /*long*/[] args) {return get_accState(args[0], args[1]);}
+			public int /*long*/ method15(int /*long*/[] args) {return get_accHelp(args[0], args[1]);}
+			public int /*long*/ method16(int /*long*/[] args) {return get_accHelpTopic(args[0], args[1], args[2]);}
+			public int /*long*/ method17(int /*long*/[] args) {return get_accKeyboardShortcut(args[0], args[1]);}
+			public int /*long*/ method18(int /*long*/[] args) {return get_accFocus(args[0]);}
+			public int /*long*/ method19(int /*long*/[] args) {return get_accSelection(args[0]);}
+			public int /*long*/ method20(int /*long*/[] args) {return get_accDefaultAction(args[0], args[1]);}
+			public int /*long*/ method21(int /*long*/[] args) {return accSelect((int)/*64*/args[0], args[1]);}
+			public int /*long*/ method22(int /*long*/[] args) {return accLocation(args[0], args[1], args[2], args[3], args[4]);}
+			public int /*long*/ method23(int /*long*/[] args) {return accNavigate((int)/*64*/args[0], args[1], args[2]);}
+			public int /*long*/ method24(int /*long*/[] args) {return accHitTest((int)/*64*/args[0], (int)/*64*/args[1], args[2]);}
+			public int /*long*/ method25(int /*long*/[] args) {return accDoDefaultAction(args[0]);}
+			public int /*long*/ method26(int /*long*/[] args) {return put_accName(args[0], args[1]);}
+			public int /*long*/ method27(int /*long*/[] args) {return put_accValue(args[0], args[1]);}
+
+			// IAccessible2 methods
 			public int /*long*/ method28(int /*long*/[] args) {return get_nRelations(args[0]);}
 			public int /*long*/ method29(int /*long*/[] args) {return get_relation((int)/*64*/args[0], args[1]);}
 			public int /*long*/ method30(int /*long*/[] args) {return get_relations((int)/*64*/args[0], args[1], args[2]);}
@@ -210,6 +248,33 @@ public class Accessible {
 			public int /*long*/ method44(int /*long*/[] args) {return get_locale(args[0]);}
 			public int /*long*/ method45(int /*long*/[] args) {return get_attributes(args[0]);}
 		};
+
+		/* If the callback takes a struct parameter (for example, a VARIANT),
+		 * then create a custom callback that dereferences the struct and
+		 * passes a pointer to the original callback.
+		 */
+		int /*long*/ ppVtable = objIAccessible2.ppVtable;
+		int /*long*/[] pVtable = new int /*long*/[1];
+		COM.MoveMemory(pVtable, ppVtable, OS.PTR_SIZEOF);
+		int /*long*/[] funcs = new int /*long*/[28];
+		COM.MoveMemory(funcs, pVtable[0], OS.PTR_SIZEOF * funcs.length);
+		funcs[9] = COM.get_accChild_CALLBACK(funcs[9]);
+		funcs[10] = COM.get_accName_CALLBACK(funcs[10]);
+		funcs[11] = COM.get_accValue_CALLBACK(funcs[11]);
+		funcs[12] = COM.get_accDescription_CALLBACK(funcs[12]);
+		funcs[13] = COM.get_accRole_CALLBACK(funcs[13]);
+		funcs[14] = COM.get_accState_CALLBACK(funcs[14]);
+		funcs[15] = COM.get_accHelp_CALLBACK(funcs[15]);
+		funcs[16] = COM.get_accHelpTopic_CALLBACK(funcs[16]);
+		funcs[17] = COM.get_accKeyboardShortcut_CALLBACK(funcs[17]);
+		funcs[20] = COM.get_accDefaultAction_CALLBACK(funcs[20]);
+		funcs[21] = COM.accSelect_CALLBACK(funcs[21]);
+		funcs[22] = COM.accLocation_CALLBACK(funcs[22]);
+		funcs[23] = COM.accNavigate_CALLBACK(funcs[23]);
+		funcs[25] = COM.accDoDefaultAction_CALLBACK(funcs[25]);
+		funcs[26] = COM.put_accName_CALLBACK(funcs[26]);
+		funcs[27] = COM.put_accValue_CALLBACK(funcs[27]);
+		COM.MoveMemory(pVtable[0], funcs, OS.PTR_SIZEOF * funcs.length);
 	}
 
 	void createIAccessibleAction() {
@@ -238,16 +303,17 @@ public class Accessible {
 		};
 	}
 
-	void createIAccessibleComponent() {
-		objIAccessibleComponent = new COMObject(new int[] {2,0,0,2,1,1}) {
-			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
-			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
-			public int /*long*/ method2(int /*long*/[] args) {return Release();}
-			public int /*long*/ method3(int /*long*/[] args) {return get_locationInParent(args[0], args[1]);}
-			public int /*long*/ method4(int /*long*/[] args) {return get_foreground(args[0]);}
-			public int /*long*/ method5(int /*long*/[] args) {return get_background(args[0]);}
-		};
-	}
+	// This method is intentionally commented. We are not providing IAccessibleComponent at this time.
+//	void createIAccessibleComponent() {
+//		objIAccessibleComponent = new COMObject(new int[] {2,0,0,2,1,1}) {
+//			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
+//			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
+//			public int /*long*/ method2(int /*long*/[] args) {return Release();}
+//			public int /*long*/ method3(int /*long*/[] args) {return get_locationInParent(args[0], args[1]);}
+//			public int /*long*/ method4(int /*long*/[] args) {return get_foreground(args[0]);}
+//			public int /*long*/ method5(int /*long*/[] args) {return get_background(args[0]);}
+//		};
+//	}
 
 	// This method is intentionally commented. We are not providing IAccessibleEditableText at this time.
 //	void createIAccessibleEditableText() {
@@ -318,16 +384,17 @@ public class Accessible {
 		};
 	}
 
-	void createIAccessibleImage() {
-		objIAccessibleImage = new COMObject(new int[] {2,0,0,1,3,2}) {
-			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
-			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
-			public int /*long*/ method2(int /*long*/[] args) {return Release();}
-			public int /*long*/ method3(int /*long*/[] args) {return get_description(args[0]);}
-			public int /*long*/ method4(int /*long*/[] args) {return get_imagePosition((int)/*64*/args[0], args[1], args[2]);}
-			public int /*long*/ method5(int /*long*/[] args) {return get_imageSize(args[0], args[1]);}
-		};
-	}
+	// This method is intentionally commented. We are not providing IAccessibleImage at this time.
+//	void createIAccessibleImage() {
+//		objIAccessibleImage = new COMObject(new int[] {2,0,0,1,3,2}) {
+//			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
+//			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
+//			public int /*long*/ method2(int /*long*/[] args) {return Release();}
+//			public int /*long*/ method3(int /*long*/[] args) {return get_description(args[0]);}
+//			public int /*long*/ method4(int /*long*/[] args) {return get_imagePosition((int)/*64*/args[0], args[1], args[2]);}
+//			public int /*long*/ method5(int /*long*/[] args) {return get_imageSize(args[0], args[1]);}
+//		};
+//	}
 
 	void createIAccessibleTable2() {
 		objIAccessibleTable2 = new COMObject(new int[] {2,0,0,3,1,2,1,1,1,1,1,2,2,2,2,1,2,2,1,1,1,1,1}) {
@@ -1085,22 +1152,57 @@ public class Accessible {
 	 * indicating that something has changed within a custom control.
 	 *
 	 * @param event an <code>ACC</code> constant beginning with EVENT_* indicating the message to send
-	 * @param eventData an object containing event-specific data
+	 * @param eventData an object containing event-specific data, or null if there is no event-specific data
 	 * 
 	 * @exception SWTException <ul>
 	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver's control has been disposed</li>
 	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver's control</li>
 	 * </ul>
 	 * 
+	 * @see ACC#EVENT_ACTION_CHANGED
+	 * @see ACC#EVENT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE
+	 * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED
+	 * @see ACC#EVENT_DOCUMENT_RELOAD
+	 * @see ACC#EVENT_HYPERLINK_ACTIVATED
+	 * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED
+	 * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED
+	 * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED
+	 * @see ACC#EVENT_LOCATION_CHANGED
+	 * @see ACC#EVENT_NAME_CHANGED
+	 * @see ACC#EVENT_PAGE_CHANGED
+	 * @see ACC#EVENT_SECTION_CHANGED
+	 * @see ACC#EVENT_SELECTION_CHANGED
+	 * @see ACC#EVENT_STATE_CHANGED
+	 * @see ACC#EVENT_TABLE_CAPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED
+	 * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED
+	 * @see ACC#EVENT_TABLE_SUMMARY_CHANGED
+	 * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED
+	 * @see ACC#EVENT_TEXT_CARET_MOVED
+	 * @see ACC#EVENT_TEXT_CHANGED
+	 * @see ACC#EVENT_TEXT_COLUMN_CHANGED
+	 * @see ACC#EVENT_TEXT_SELECTION_CHANGED
+	 * @see ACC#EVENT_VALUE_CHANGED
+	 * 
 	 * @since 3.6
 	 */
 	public void sendEvent(int event, Object eventData) {
 		checkWidget();
+		if (!UseIA2) return;
+		if (DEBUG) print(this + ".NotifyWinEvent " + getEventString(event) + " hwnd=" + control.handle + " childID=" + eventChildID());
 		switch (event) {
 			case ACC.EVENT_TABLE_CHANGED: {
 				if (!(eventData instanceof int[] && ((int[])eventData).length == TABLE_MODEL_CHANGE_SIZE)) break;
 				tableChange = (int[])eventData;
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID());
 				break;
 			}
 			case ACC.EVENT_TEXT_CHANGED: {
@@ -1110,11 +1212,11 @@ public class Accessible {
 				switch (type) {
 					case ACC.DELETE:
 						textDeleted = (Object[])eventData;
-						COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_REMOVED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+						COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_REMOVED, control.handle, COM.OBJID_CLIENT, eventChildID());
 						break;
 					case ACC.INSERT:
 						textInserted = (Object[])eventData;
-						COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_INSERTED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+						COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_INSERTED, control.handle, COM.OBJID_CLIENT, eventChildID());
 						break;
 				}
 				break;
@@ -1123,67 +1225,67 @@ public class Accessible {
 				if (!(eventData instanceof Integer)) break;
 	//			int index = ((Integer)eventData).intValue();
 				// TODO: IA2 currently does not use the index, however the plan is to use it in future
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERTEXT_LINK_SELECTED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERTEXT_LINK_SELECTED, control.handle, COM.OBJID_CLIENT, eventChildID());
 				break;
 			}
 			case ACC.EVENT_VALUE_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_STATE_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_STATECHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_STATECHANGE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_SELECTION_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_SELECTIONWITHIN, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_SELECTIONWITHIN, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TEXT_SELECTION_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_TEXTSELECTIONCHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_TEXTSELECTIONCHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_LOCATION_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_LOCATIONCHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_LOCATIONCHANGE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_NAME_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_NAMECHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_NAMECHANGE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_DESCRIPTION_CHANGED:
-				COM.NotifyWinEvent (COM.EVENT_OBJECT_DESCRIPTIONCHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.EVENT_OBJECT_DESCRIPTIONCHANGE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_DOCUMENT_LOAD_COMPLETE:
-				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_LOAD_COMPLETE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_LOAD_COMPLETE, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_DOCUMENT_LOAD_STOPPED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_LOAD_STOPPED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_LOAD_STOPPED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_DOCUMENT_RELOAD:
-				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_RELOAD, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_DOCUMENT_RELOAD, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_PAGE_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_PAGE_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_PAGE_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_SECTION_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_SECTION_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_SECTION_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_ACTION_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_ACTION_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_ACTION_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERLINK_START_INDEX_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_START_INDEX_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_START_INDEX_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERLINK_END_INDEX_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_END_INDEX_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_END_INDEX_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERLINK_SELECTED_LINK_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERLINK_ACTIVATED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_ACTIVATED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERLINK_ACTIVATED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_HYPERTEXT_LINK_COUNT_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERTEXT_LINK_COUNT_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_HYPERTEXT_LINK_COUNT_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_ATTRIBUTE_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_ATTRIBUTE_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_ATTRIBUTE_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_CAPTION_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_CAPTION_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_CAPTION_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_COLUMN_HEADER_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_ROW_DESCRIPTION_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_ROW_HEADER_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_ROW_HEADER_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_ROW_HEADER_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TABLE_SUMMARY_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_SUMMARY_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TABLE_SUMMARY_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TEXT_ATTRIBUTE_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_ATTRIBUTE_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_ATTRIBUTE_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TEXT_CARET_MOVED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_CARET_MOVED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_CARET_MOVED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 			case ACC.EVENT_TEXT_COLUMN_CHANGED:
-				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_COLUMN_CHANGED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF); break;
+				COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_COLUMN_CHANGED, control.handle, COM.OBJID_CLIENT, eventChildID()); break;
 		}
 	}
 
@@ -1200,7 +1302,8 @@ public class Accessible {
 	 */
 	public void selectionChanged () {
 		checkWidget();
-		COM.NotifyWinEvent (COM.EVENT_OBJECT_SELECTIONWITHIN, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+		if (DEBUG) print(this + ".NotifyWinEvent EVENT_OBJECT_SELECTIONWITHIN hwnd=" + control.handle + " childID=" + eventChildID());
+		COM.NotifyWinEvent (COM.EVENT_OBJECT_SELECTIONWITHIN, control.handle, COM.OBJID_CLIENT, eventChildID());
 	}
 
 	/**
@@ -1216,7 +1319,9 @@ public class Accessible {
 	 */
 	public void setFocus(int childID) {
 		checkWidget();
-		COM.NotifyWinEvent (COM.EVENT_OBJECT_FOCUS, control.handle, COM.OBJID_CLIENT, childIDToOs(childID));
+		int osChildID = childID == ACC.CHILDID_SELF ? eventChildID() : childIDToOs(childID);
+		if (DEBUG) print(this + ".NotifyWinEvent EVENT_OBJECT_FOCUS hwnd=" + control.handle + " childID=" + osChildID);
+		COM.NotifyWinEvent (COM.EVENT_OBJECT_FOCUS, control.handle, COM.OBJID_CLIENT, osChildID);
 	}
 
 	/**
@@ -1234,8 +1339,11 @@ public class Accessible {
 	 */
 	public void textCaretMoved (int index) {
 		checkWidget();
-		COM.NotifyWinEvent (COM.EVENT_OBJECT_LOCATIONCHANGE, control.handle, COM.OBJID_CARET, COM.CHILDID_SELF);
-		COM.NotifyWinEvent (ACC.EVENT_TEXT_CARET_MOVED, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+		if (DEBUG) print(this + ".NotifyWinEvent EVENT_OBJECT_LOCATIONCHANGE hwnd=" + control.handle + " childID=" + eventChildID());
+		COM.NotifyWinEvent (COM.EVENT_OBJECT_LOCATIONCHANGE, control.handle, COM.OBJID_CARET, eventChildID());
+		if (!UseIA2) return;
+		if (DEBUG) print(this + ".NotifyWinEvent IA2_EVENT_TEXT_CARET_MOVED hwnd=" + control.handle + " childID=" + eventChildID());
+		COM.NotifyWinEvent (COM.IA2_EVENT_TEXT_CARET_MOVED, control.handle, COM.OBJID_CLIENT, eventChildID());
 	}
 	
 	/**
@@ -1277,7 +1385,8 @@ public class Accessible {
 			sendEvent(ACC.EVENT_TEXT_CHANGED, eventData);
 			return;
 		}
-		COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+		if (DEBUG) print(this + ".NotifyWinEvent EVENT_OBJECT_VALUECHANGE hwnd=" + control.handle + " childID=" + eventChildID());
+		COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, eventChildID());
 	}
 	
 	/**
@@ -1293,7 +1402,8 @@ public class Accessible {
 	 */
 	public void textSelectionChanged () {
 		checkWidget();
-		COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, COM.CHILDID_SELF);
+		if (DEBUG) print(this + ".NotifyWinEvent EVENT_OBJECT_VALUECHANGE hwnd=" + control.handle + " childID=" + eventChildID());
+		COM.NotifyWinEvent (COM.EVENT_OBJECT_VALUECHANGE, control.handle, COM.OBJID_CLIENT, eventChildID());
 	}
 	
 	/* QueryInterface([in] iid, [out] ppvObject)
@@ -1304,11 +1414,11 @@ public class Accessible {
 		COM.MoveMemory(ppvObject, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 		GUID guid = new GUID();
 		COM.MoveMemory(guid, iid, GUID.sizeof);
-		if (DEBUG && interesting(guid)) print("QueryInterface guid=" + guidString(guid));
 
 		if (COM.IsEqualGUID(guid, COM.IIDIUnknown)) {
 			COM.MoveMemory(ppvObject, new int /*long*/[] { getAddress() }, OS.PTR_SIZEOF);
 			AddRef();
+			if (DEBUG) print(this + ".QueryInterface guid=" + guidString(guid) + " returning " + getAddress() + hresult(COM.S_OK));
 			return COM.S_OK;
 		}
 
@@ -1316,6 +1426,7 @@ public class Accessible {
 			if (objIAccessible == null) createIAccessible();
 			COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessible.getAddress() }, OS.PTR_SIZEOF);
 			AddRef();
+			if (DEBUG) print(this + ".QueryInterface guid=" + guidString(guid) + " returning " + objIAccessible.getAddress() + hresult(COM.S_OK));
 			return COM.S_OK;
 		}
 
@@ -1324,27 +1435,42 @@ public class Accessible {
 			COM.MoveMemory(ppvObject, new int /*long*/[] { objIEnumVARIANT.getAddress() }, OS.PTR_SIZEOF);
 			AddRef();
 			enumIndex = 0;
+			if (DEBUG) print(this + ".QueryInterface guid=" + guidString(guid) + " returning " + objIEnumVARIANT.getAddress() + hresult(COM.S_OK));
 			return COM.S_OK;
 		}
 		
 		if (COM.IsEqualGUID(guid, COM.IIDIServiceProvider)) {
-			if (objIServiceProvider == null) createIServiceProvider();
-			COM.MoveMemory(ppvObject, new int /*long*/[] { objIServiceProvider.getAddress() }, OS.PTR_SIZEOF);
-			AddRef();
-			return COM.S_OK;
+			if (!UseIA2) return COM.E_NOINTERFACE;
+			if (accessibleActionListeners.size() > 0 || accessibleAttributeListeners.size() > 0 ||
+				accessibleHyperlinkListeners.size() > 0 || accessibleTableListeners.size() > 0 ||
+				accessibleTableCellListeners.size() > 0 || accessibleTextExtendedListeners.size() > 0 ||
+				accessibleValueListeners.size() > 0 || getRelationCount() > 0) {
+				if (objIServiceProvider == null) createIServiceProvider();
+				COM.MoveMemory(ppvObject, new int /*long*/[] { objIServiceProvider.getAddress() }, OS.PTR_SIZEOF);
+				AddRef();
+				if (DEBUG) print(this + ".QueryInterface guid=" + guidString(guid) + " returning " + objIServiceProvider.getAddress() + hresult(COM.S_OK));
+				return COM.S_OK;
+			}
+			if (DEBUG) if (interesting(guid)) print("QueryInterface guid=" + guidString(guid) + " returning" + hresult(COM.E_NOINTERFACE));
+			return COM.E_NOINTERFACE;
 		}
 
 		int code = queryAccessible2Interfaces(guid, ppvObject);
-		if (code != COM.S_FALSE) return code;
+		if (code != COM.S_FALSE) {
+			if (DEBUG) print(this + ".QueryInterface guid=" + guidString(guid) + " returning" + hresult(code));
+			return code;
+		}
 
 		if (iaccessible != null) {
 			/* Forward any other GUIDs to the OS proxy. */
 			int /*long*/[] ppv = new int /*long*/[1];
 			code = iaccessible.QueryInterface(guid, ppv);
 			COM.MoveMemory(ppvObject, ppv, OS.PTR_SIZEOF);
+			if (DEBUG) if (interesting(guid)) print("QueryInterface guid=" + guidString(guid) + " returning super" + hresult(code));
 			return code;
 		}
 		
+		if (DEBUG) if (interesting(guid)) print("QueryInterface guid=" + guidString(guid) + " returning" + hresult(COM.E_NOINTERFACE));
 		return COM.E_NOINTERFACE;
 	}
 
@@ -1381,9 +1507,10 @@ public class Accessible {
 				objIAccessibleApplication.dispose();
 			objIAccessibleApplication = null;
 
-			if (objIAccessibleComponent != null)
-				objIAccessibleComponent.dispose();
-			objIAccessibleComponent = null;
+			// The following lines are intentionally commented. We are not providing IAccessibleComponent at this time.
+//			if (objIAccessibleComponent != null)
+//				objIAccessibleComponent.dispose();
+//			objIAccessibleComponent = null;
 
 			// The following lines are intentionally commented. We are not providing IAccessibleEditableText at this time.
 //			if (objIAccessibleEditableText != null)
@@ -1398,9 +1525,10 @@ public class Accessible {
 				objIAccessibleHypertext.dispose();
 			objIAccessibleHypertext = null;
 
-			if (objIAccessibleImage != null)
-				objIAccessibleImage.dispose();
-			objIAccessibleImage = null;
+			// The following lines are intentionally commented. We are not providing IAccessibleImage at this time.
+//			if (objIAccessibleImage != null)
+//				objIAccessibleImage.dispose();
+//			objIAccessibleImage = null;
 
 			if (objIAccessibleTable2 != null)
 				objIAccessibleTable2.dispose();
@@ -1433,23 +1561,28 @@ public class Accessible {
 		COM.MoveMemory(service, guidService, GUID.sizeof);
 		GUID guid = new GUID();
 		COM.MoveMemory(guid, riid, GUID.sizeof);
-		if (DEBUG && interesting(service) && interesting(guid))
-			print("QueryService service=" + guidString(service) + " guid=" + guidString(guid));
 
 		if (COM.IsEqualGUID(service, COM.IIDIAccessible)) {
 			if (COM.IsEqualGUID(guid, COM.IIDIUnknown) || COM.IsEqualGUID(guid, COM.IIDIDispatch) | COM.IsEqualGUID(guid, COM.IIDIAccessible)) {
 				if (objIAccessible == null) createIAccessible();
+				if (DEBUG) print(this + ".QueryService service=" + guidString(service) + " guid=" + guidString(guid) + " returning " + objIAccessible.getAddress() + hresult(COM.S_OK));
 				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessible.getAddress() }, OS.PTR_SIZEOF);
 				AddRef();
 				return COM.S_OK;
 			}
 			int code = queryAccessible2Interfaces(guid, ppvObject);
-			if (code != COM.S_FALSE) return code;
+			if (code != COM.S_FALSE) {
+				if (DEBUG) print(this + ".QueryService service=" + guidString(service) + " guid=" + guidString(guid) + " returning" + hresult(code));
+				return code;
+			}
 		}
 
 		if (COM.IsEqualGUID(service, COM.IIDIAccessible2)) {
 			int code = queryAccessible2Interfaces(guid, ppvObject);
-			if (code != COM.S_FALSE) return code;
+			if (code != COM.S_FALSE) {
+				if (DEBUG) print(this + ".*QueryService service=" + guidString(service) + " guid=" + guidString(guid) + " returning" + hresult(code));
+				return code;
+			}
 		}
 
 		if (iaccessible != null) {
@@ -1461,19 +1594,21 @@ public class Accessible {
 				int /*long*/ [] ppvx = new int /*long*/ [1];
 				code = iserviceProvider.QueryService(service, guid, ppvx);
 				COM.MoveMemory(ppvObject, ppvx, OS.PTR_SIZEOF);
+				if (DEBUG) if (interesting(service) && interesting(guid)) print("QueryService service=" + guidString(service) + " guid=" + guidString(guid) + " returning super" + hresult(code));
 				return code;
 			}
 		}
 		
+		if (DEBUG) if (interesting(service) && interesting(guid)) print("QueryService service=" + guidString(service) + " guid=" + guidString(guid) + " returning" + hresult(COM.E_NOINTERFACE));
 		return COM.E_NOINTERFACE;
 	}
 
 	int queryAccessible2Interfaces(GUID guid, int /*long*/ ppvObject) {
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessible2)) {
 			if (accessibleActionListeners.size() > 0 || accessibleAttributeListeners.size() > 0 ||
-					accessibleHyperlinkListeners.size() > 0 || accessibleScrollListeners.size() > 0 ||
-					accessibleTableListeners.size() > 0 || accessibleTableCellListeners.size() > 0 ||
-					accessibleTextExtendedListeners.size() > 0 || accessibleValueListeners.size() > 0 || getRelationCount() > 0) {
+					accessibleHyperlinkListeners.size() > 0 || accessibleTableListeners.size() > 0 ||
+					accessibleTableCellListeners.size() > 0 || accessibleTextExtendedListeners.size() > 0 ||
+					accessibleValueListeners.size() > 0 || getRelationCount() > 0) {
 				if (objIAccessible2 == null) createIAccessible2();
 				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessible2.getAddress() }, OS.PTR_SIZEOF);
 				AddRef();
@@ -1500,12 +1635,13 @@ public class Accessible {
 		}
 		
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleComponent)) {
-			if (accessibleControlListeners.size() > 0) { // TODO: can we reduce the scope of this somehow?
-				if (objIAccessibleComponent == null) createIAccessibleComponent();
-				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleComponent.getAddress() }, OS.PTR_SIZEOF);
-				AddRef();
-				return COM.S_OK;
-			}
+			// The following lines are intentionally commented. We are not supporting IAccessibleComponent at this time.
+//			if (accessibleControlListeners.size() > 0) { // TO DO: can we reduce the scope of this somehow?
+//				if (objIAccessibleComponent == null) createIAccessibleComponent();
+//				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleComponent.getAddress() }, OS.PTR_SIZEOF);
+//				AddRef();
+//				return COM.S_OK;
+//			}
 			return COM.E_NOINTERFACE;
 		}
 		
@@ -1541,12 +1677,13 @@ public class Accessible {
 		}
 		
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleImage)) {
-			if (getRole() == ACC.ROLE_GRAPHIC && (accessibleListeners.size() > 0 || accessibleControlListeners.size() > 0)) {
-				if (objIAccessibleImage == null) createIAccessibleImage();
-				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleImage.getAddress() }, OS.PTR_SIZEOF);
-				AddRef();
-				return COM.S_OK;
-			}
+			// The following lines are intentionally commented. We are not supporting IAccessibleImage at this time.
+//			if (getRole() == ACC.ROLE_GRAPHIC && (accessibleListeners.size() > 0 || accessibleControlListeners.size() > 0)) {
+//				if (objIAccessibleImage == null) createIAccessibleImage();
+//				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleImage.getAddress() }, OS.PTR_SIZEOF);
+//				AddRef();
+//				return COM.S_OK;
+//			}
 			return COM.E_NOINTERFACE;
 		}
 		
@@ -1576,7 +1713,7 @@ public class Accessible {
 		}
 		
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleText)) {
-			if (accessibleTextExtendedListeners.size() > 0 || accessibleAttributeListeners.size() > 0) {
+			if (accessibleTextExtendedListeners.size() > 0 /* || accessibleAttributeListeners.size() > 0*/) {
 				if (objIAccessibleText == null) createIAccessibleText();
 				COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleText.getAddress() }, OS.PTR_SIZEOF);
 				AddRef();
@@ -1598,8 +1735,9 @@ public class Accessible {
 		return COM.S_FALSE;
 	}
 	
-	/* accDoDefaultAction([in] varChild) */
+	/* IAccessible::accDoDefaultAction([in] varChild) */
 	int accDoDefaultAction(int /*long*/ varChild) {
+		if (DEBUG) print(this + ".IAccessible::accDoDefaultAction");
 		if (accessibleActionListeners.size() > 0) {
 			VARIANT v = getVARIANT(varChild);
 			if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -1614,25 +1752,29 @@ public class Accessible {
 		return code;
 	}
 
-	/* accHitTest([in] xLeft, [in] yTop, [out] pvarChild) */
+	/* IAccessible::accHitTest([in] xLeft, [in] yTop, [out] pvarChild) */
 	int accHitTest(int xLeft, int yTop, int /*long*/ pvarChild) {
 		int osChild = ACC.CHILDID_NONE;
 		int /*long*/ osChildObject = 0;
 		if (iaccessible != null) {
 			/* Get the default child at point (left, top) from the OS. */
 			int code = iaccessible.accHitTest(xLeft, yTop, pvarChild);
-			if (accessibleControlListeners.size() == 0) return code;
 			if (code == COM.S_OK) {
 				VARIANT v = getVARIANT(pvarChild);
-				if (v.vt == COM.VT_I4) osChild = osToChildID(v.lVal);
+				if (v.vt == COM.VT_I4) osChild = v.lVal;
 				else if (v.vt == COM.VT_DISPATCH) {
 					osChildObject = v.lVal; // TODO: don't use struct. lVal is an int.
+					if (DEBUG) print(this + ".IAccessible::accHitTest() super returned VT_DISPATCH");
 				}
 			}
+			if (accessibleControlListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::accHitTest returning childID=" + osChild + " from super" + hresult(code));
+				return code;
+			}
 		}
 
 		AccessibleControlEvent event = new AccessibleControlEvent(this);
-		event.childID = osChild;
+		event.childID = osChild == ACC.CHILDID_NONE ? ACC.CHILDID_NONE : osToChildID(osChild);
 		// TODO: event.accessible = Accessible for osChildObject;
 		event.x = xLeft;
 		event.y = yTop;
@@ -1642,21 +1784,27 @@ public class Accessible {
 		}
 		Accessible accessible = event.accessible;
 		if (accessible != null) {
+			if (DEBUG) print(this + ".IAccessible::accHitTest returning " + accessible.getAddress() + hresult(COM.S_OK));
 			accessible.AddRef();
 			setPtrVARIANT(pvarChild, COM.VT_DISPATCH, accessible.getAddress());
 			return COM.S_OK;
 		}
 		int childID = event.childID;
 		if (childID == ACC.CHILDID_NONE) {
-			if (osChildObject != 0) return COM.S_OK;
+			if (osChildObject != 0) {
+				if (DEBUG) print(this + ".IAccessible::accHitTest returning osChildObject " + osChildObject + " from super" + hresult(COM.S_OK));
+				return COM.S_OK;
+			}
+			if (DEBUG) print(this + ".IAccessible::accHitTest returning VT_EMPTY" + hresult(COM.S_FALSE));
 			setIntVARIANT(pvarChild, COM.VT_EMPTY, 0);
 			return COM.S_FALSE;
 		}
+		if (DEBUG) print(this + ".IAccessible::accHitTest returning " + childIDToOs(childID) + hresult(COM.S_OK));
 		setIntVARIANT(pvarChild, COM.VT_I4, childIDToOs(childID));
 		return COM.S_OK;
 	}
 	
-	/* accLocation([out] pxLeft, [out] pyTop, [out] pcxWidth, [out] pcyHeight, [in] varChild) */
+	/* IAccessible::accLocation([out] pxLeft, [out] pyTop, [out] pcxWidth, [out] pcyHeight, [in] varChild) */
 	int accLocation(int /*long*/ pxLeft, int /*long*/ pyTop, int /*long*/ pcxWidth, int /*long*/ pcyHeight, int /*long*/ varChild) {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -1665,7 +1813,10 @@ public class Accessible {
 			/* Get the default location from the OS. */
 			int code = iaccessible.accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
 			if (code == COM.E_INVALIDARG) code = COM.DISP_E_MEMBERNOTFOUND; // proxy doesn't know about app childID
-			if (accessibleControlListeners.size() == 0) return code;
+			if (accessibleControlListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::accLocation returning from super" + hresult(code));
+				return code;
+			}
 			if (code == COM.S_OK) {
 				int[] pLeft = new int[1], pTop = new int[1], pWidth = new int[1], pHeight = new int[1];
 				COM.MoveMemory(pLeft, pxLeft, 4);
@@ -1686,6 +1837,7 @@ public class Accessible {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getLocation(event);
 		}
+		if (DEBUG) print(this + ".IAccessible::accLocation(" + v.lVal + ") returning x=" + event.x + " y=" + event.y + "w=" + event.width + "h=" + event.height + hresult(COM.S_OK));
 		OS.MoveMemory(pxLeft, new int[] { event.x }, 4);
 		OS.MoveMemory(pyTop, new int[] { event.y }, 4);
 		OS.MoveMemory(pcxWidth, new int[] { event.width }, 4);
@@ -1693,8 +1845,9 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* accNavigate([in] navDir, [in] varStart, [out] pvarEndUpAt) */
+	/* IAccessible::accNavigate([in] navDir, [in] varStart, [out] pvarEndUpAt) */
 	int accNavigate(int navDir, int /*long*/ varStart, int /*long*/ pvarEndUpAt) {
+		if (DEBUG) print(this + ".IAccessible::accNavigate");
 		/* MSAA: "The accNavigate method is deprecated and should not be used." */
 		int code = COM.DISP_E_MEMBERNOTFOUND;
 		if (iaccessible != null) {
@@ -1707,7 +1860,7 @@ public class Accessible {
 	}
 	
 	// TODO: Consider supporting this in future.
-	/* accSelect([in] flagsSelect, [in] varChild) */
+	/* IAccessible::accSelect([in] flagsSelect, [in] varChild) */
 	int accSelect(int flagsSelect, int /*long*/ varChild) {
 		int code = COM.DISP_E_MEMBERNOTFOUND;
 		if (iaccessible != null) {
@@ -1715,10 +1868,11 @@ public class Accessible {
 			code = iaccessible.accSelect(flagsSelect, varChild);
 			if (code == COM.E_INVALIDARG) code = COM.DISP_E_MEMBERNOTFOUND; // proxy doesn't know about app childID
 		}
+		if (DEBUG) print(this + ".IAccessible::accSelect(" + flagsSelect + ") returning" + hresult(code));
 		return code;
 	}
 
-	/* get_accChild([in] varChild, [out] ppdispChild)
+	/* IAccessible::get_accChild([in] varChild, [out] ppdispChild)
 	 * Ownership of ppdispChild transfers from callee to caller so reference count on ppdispChild 
 	 * must be incremented before returning.  The caller is responsible for releasing ppdispChild.
 	 */
@@ -1726,6 +1880,7 @@ public class Accessible {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
 		if (v.lVal == COM.CHILDID_SELF) {
+			if (DEBUG) print(this + ".IAccessible::get_accChild(" + v.lVal + ") returning " + getAddress() + hresult(COM.S_OK));
 			AddRef();
 			COM.MoveMemory(ppdispChild, new int /*long*/[] { getAddress() }, OS.PTR_SIZEOF);
 			return COM.S_OK;
@@ -1745,25 +1900,30 @@ public class Accessible {
 		}
 		Accessible accessible = event.accessible;
 		if (accessible != null) {
+			if (DEBUG) print(this + ".IAccessible::get_accChild(" + v.lVal + ") returning " + accessible.getAddress() + hresult(COM.S_OK));
 			accessible.AddRef();
 			COM.MoveMemory(ppdispChild, new int /*long*/[] { accessible.getAddress() }, OS.PTR_SIZEOF);
 			return COM.S_OK;
 		}
+		if (DEBUG) print(this + ".IAccessible::get_accChild(" + v.lVal + ") returning from super" + hresult(code));
 		return code;
 	}
 	
-	/* get_accChildCount([out] pcountChildren) */
+	/* IAccessible::get_accChildCount([out] pcountChildren) */
 	int get_accChildCount(int /*long*/ pcountChildren) {
 		int osChildCount = 0;
 		if (iaccessible != null) {
 			/* Get the default child count from the OS. */
 			int code = iaccessible.get_accChildCount(pcountChildren);
-			if (accessibleControlListeners.size() == 0) return code;
 			if (code == COM.S_OK) {
 				int[] pChildCount = new int[1];
 				COM.MoveMemory(pChildCount, pcountChildren, 4);
 				osChildCount = pChildCount[0];
 			}
+			if (accessibleControlListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::get_accChildCount() returning " + osChildCount + " from super" + hresult(code));
+				return code;
+			}
 		}
 
 		AccessibleControlEvent event = new AccessibleControlEvent(this);
@@ -1773,13 +1933,14 @@ public class Accessible {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getChildCount(event);
 		}
-
+		if (DEBUG) print(this + ".IAccessible::get_accChildCount() returning " + event.detail + hresult(COM.S_OK));
 		COM.MoveMemory(pcountChildren, new int[] { event.detail }, 4);
 		return COM.S_OK;
 	}
 	
-	/* get_accDefaultAction([in] varChild, [out] pszDefaultAction) */
+	/* IAccessible::get_accDefaultAction([in] varChild, [out] pszDefaultAction) */
 	int get_accDefaultAction(int /*long*/ varChild, int /*long*/ pszDefaultAction) {
+		if (DEBUG) print(this + ".IAccessible::get_accDefaultAction");
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
 		int code = COM.DISP_E_MEMBERNOTFOUND;
@@ -1817,14 +1978,16 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* get_accDescription([in] varChild, [out] pszDescription) */
+	/* IAccessible::get_accDescription([in] varChild, [out] pszDescription) */
 	int get_accDescription(int /*long*/ varChild, int /*long*/ pszDescription) {
+		if (DEBUG) print(this + ".IAccessible::get_accDescription");
 		/* 
 		 * MSAA: "The accDescription property is not supported in the transition to
 		 * UI Automation. MSAA servers and applications should not use it."
 		 * 
 		 * TODO: Description was exposed as SWT API. We will need to either deprecate this (?),
 		 * or find a suitable replacement. Also, check description property on other platforms.
+		 * If it is truly deprecated for MSAA, then perhaps it can be reused for IAccessibleImage.
 		 * Note that the trick to expose tree columns (below) was not supported by screen readers,
 		 * so it should be replaced.
 		 */
@@ -1891,7 +2054,7 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* get_accFocus([out] pvarChild)
+	/* IAccessible::get_accFocus([out] pvarChild)
 	 * Ownership of pvarChild transfers from callee to caller so reference count on pvarChild 
 	 * must be incremented before returning.  The caller is responsible for releasing pvarChild.
 	 */
@@ -1900,41 +2063,51 @@ public class Accessible {
 		if (iaccessible != null) {
 			/* Get the default focus child from the OS. */
 			int code = iaccessible.get_accFocus(pvarChild);
-			if (accessibleControlListeners.size() == 0) return code;
 			if (code == COM.S_OK) {
 				VARIANT v = getVARIANT(pvarChild);
-				if (v.vt == COM.VT_I4) osChild = osToChildID(v.lVal);
+				if (v.vt == COM.VT_I4) osChild = v.lVal;
+				// TODO: need to check VT_DISPATCH (don't use struct)
+				if (DEBUG) if (v.vt == COM.VT_DISPATCH) print("IAccessible::get_accFocus() super returned VT_DISPATCH"); 
+			}
+			if (accessibleControlListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::get_accFocus() returning childID=" + osChild + " from super" + hresult(code));
+				return code;
 			}
 		}
 
 		AccessibleControlEvent event = new AccessibleControlEvent(this);
-		event.childID = osChild;
+		event.childID = osChild == ACC.CHILDID_NONE ? ACC.CHILDID_NONE : osToChildID(osChild);
 		for (int i = 0; i < accessibleControlListeners.size(); i++) {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getFocus(event);
 		}
 		Accessible accessible = event.accessible;
 		if (accessible != null) {
+			if (DEBUG) print(this + ".IAccessible::get_accFocus() returning accessible " + accessible.getAddress() + hresult(COM.S_OK));
 			accessible.AddRef();
 			setPtrVARIANT(pvarChild, COM.VT_DISPATCH, accessible.getAddress());
 			return COM.S_OK;
 		}
 		int childID = event.childID;
 		if (childID == ACC.CHILDID_NONE) {
+			if (DEBUG) print(this + ".IAccessible::get_accFocus() returning VT_EMPTY" + hresult(COM.S_FALSE));
 			setIntVARIANT(pvarChild, COM.VT_EMPTY, 0);
 			return COM.S_FALSE;
 		}
 		if (childID == ACC.CHILDID_SELF) {
+			if (DEBUG) print(this + ".IAccessible::get_accFocus() returning accessible " + getAddress() + hresult(COM.S_OK));
 			AddRef();
 			setPtrVARIANT(pvarChild, COM.VT_DISPATCH, getAddress());
 			return COM.S_OK;
 		}
+		if (DEBUG) print(this + ".IAccessible::get_accFocus() returning childID " + childIDToOs(childID) + hresult(COM.S_OK));
 		setIntVARIANT(pvarChild, COM.VT_I4, childIDToOs(childID));
 		return COM.S_OK;
 	}
 	
-	/* get_accHelp([in] varChild, [out] pszHelp) */
+	/* IAccessible::get_accHelp([in] varChild, [out] pszHelp) */
 	int get_accHelp(int /*long*/ varChild, int /*long*/ pszHelp) {
+		if (DEBUG) print(this + ".IAccessible::get_accHelp");
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
 		int code = COM.DISP_E_MEMBERNOTFOUND;
@@ -1969,8 +2142,9 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* get_accHelpTopic([out] pszHelpFile, [in] varChild, [out] pidTopic) */
+	/* IAccessible::get_accHelpTopic([out] pszHelpFile, [in] varChild, [out] pidTopic) */
 	int get_accHelpTopic(int /*long*/ pszHelpFile, int /*long*/ varChild, int /*long*/ pidTopic) {
+		if (DEBUG) print(this + ".IAccessible::get_accHelpTopic");
 		/* MSAA: "The accHelpTopic property is deprecated and should not be used." */
 		int code = COM.DISP_E_MEMBERNOTFOUND;
 		if (iaccessible != null) {
@@ -1982,8 +2156,9 @@ public class Accessible {
 		return code;
 	}
 
-	/* get_accKeyboardShortcut([in] varChild, [out] pszKeyboardShortcut) */
+	/* IAccessible::get_accKeyboardShortcut([in] varChild, [out] pszKeyboardShortcut) */
 	int get_accKeyboardShortcut(int /*long*/ varChild, int /*long*/ pszKeyboardShortcut) {
+		if (DEBUG) print(this + ".IAccessible::get_accKeyboardShortcut");
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
 		int code = COM.DISP_E_MEMBERNOTFOUND;
@@ -2018,7 +2193,7 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* get_accName([in] varChild, [out] pszName) */
+	/* IAccessible::get_accName([in] varChild, [out] pszName) */
 	int get_accName(int /*long*/ varChild, int /*long*/ pszName) {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -2027,8 +2202,6 @@ public class Accessible {
 		if (iaccessible != null) {
 			/* Get the default name from the OS. */
 			code = iaccessible.get_accName(varChild, pszName);
-			if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID
-			if (accessibleListeners.size() == 0) return code;
 			if (code == COM.S_OK) {
 				int /*long*/[] pName = new int /*long*/[1];
 				COM.MoveMemory(pName, pszName, OS.PTR_SIZEOF);
@@ -2039,6 +2212,11 @@ public class Accessible {
 					osName = new String(buffer);
 				}
 			}
+			if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID
+			if (accessibleListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::get_accName(" + v.lVal + ") returning name=" + osName + " from super" + hresult(code));
+				return code;
+			}
 		}
 
 		AccessibleEvent event = new AccessibleEvent(this);
@@ -2048,18 +2226,18 @@ public class Accessible {
 			AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i);
 			listener.getName(event);
 		}
+		if (DEBUG) print(this + ".IAccessible::get_accName(" + v.lVal + ") returning " + event.result + hresult(event.result == null ? code : event.result.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		if (event.result == null) return code;
 		if (event.result.length() == 0) return COM.S_FALSE;
 		setString(pszName, event.result);
 		return COM.S_OK;
 	}
 	
-	/* get_accParent([out] ppdispParent)
+	/* IAccessible::get_accParent([out] ppdispParent)
 	 * Ownership of ppdispParent transfers from callee to caller so reference count on ppdispParent 
 	 * must be incremented before returning.  The caller is responsible for releasing ppdispParent.
 	 */
 	int get_accParent(int /*long*/ ppdispParent) {
-		if (DEBUG) System.out.println("get_accParent");
 		int code = COM.DISP_E_MEMBERNOTFOUND;
 		if (iaccessible != null) {
 			/* Currently, we don't expose this as API. Forward to the proxy. */
@@ -2071,10 +2249,11 @@ public class Accessible {
 			COM.MoveMemory(ppdispParent, new int /*long*/[] { parent.getAddress() }, OS.PTR_SIZEOF);
 			code = COM.S_OK;
 		}
+		if (DEBUG) print(this + ".IAccessible::get_accParent() returning" + (parent != null ? " " + parent.getAddress() : " from super") + hresult(code));
 		return code;
 	}
 	
-	/* get_accRole([in] varChild, [out] pvarRole) */
+	/* IAccessible::get_accRole([in] varChild, [out] pvarRole) */
 	int get_accRole(int /*long*/ varChild, int /*long*/ pvarRole) {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -2101,17 +2280,17 @@ public class Accessible {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getRole(event);
 		}
-		if (DEBUG) print("IAccessible::get_accRole(" + v.lVal + ") returning " + getRoleString(roleToOs(event.detail)));
+		if (DEBUG) print(this + ".IAccessible::get_accRole(" + v.lVal + ") returning " + getRoleString(roleToOs(event.detail)) + hresult(COM.S_OK));
 		setIntVARIANT(pvarRole, COM.VT_I4, roleToOs(event.detail));
 		return COM.S_OK;
 	}
 	
-	/* get_accSelection([out] pvarChildren)
+	/* IAccessible::get_accSelection([out] pvarChildren)
 	 * Ownership of pvarChildren transfers from callee to caller so reference count on pvarChildren 
 	 * must be incremented before returning.  The caller is responsible for releasing pvarChildren.
 	 */
 	int get_accSelection(int /*long*/ pvarChildren) {
-		if (DEBUG) System.out.println("get_accSelection");
+		if (DEBUG) print(this + ".IAccessible::get_accSelection");
 		int osChild = ACC.CHILDID_NONE;
 		int /*long*/ osChildObject = 0;
 		if (iaccessible != null) {
@@ -2164,7 +2343,7 @@ public class Accessible {
 		return COM.S_OK;
 	}
 	
-	/* get_accState([in] varChild, [out] pvarState) */
+	/* IAccessible::get_accState([in] varChild, [out] pvarState) */
 	int get_accState(int /*long*/ varChild, int /*long*/ pvarState) {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -2219,12 +2398,12 @@ public class Accessible {
 			state &= ~ COM.STATE_SYSTEM_CHECKED;
 			state |= COM.STATE_SYSTEM_MIXED;
 		}
-		if (DEBUG) print("IAccessible::get_accState(" + v.lVal + ") returning " + getStateString(state));
+		if (DEBUG) print(this + ".IAccessible::get_accState(" + v.lVal + ") returning" + getStateString(state) + hresult(COM.S_OK));
 		setIntVARIANT(pvarState, COM.VT_I4, state);
 		return COM.S_OK;
 	}
 
-	/* get_accValue([in] varChild, [out] pszValue) */
+	/* IAccessible::get_accValue([in] varChild, [out] pszValue) */
 	int get_accValue(int /*long*/ varChild, int /*long*/ pszValue) {
 		VARIANT v = getVARIANT(varChild);
 		if (v.vt != COM.VT_I4) return COM.E_INVALIDARG;
@@ -2233,8 +2412,6 @@ public class Accessible {
 		if (iaccessible != null) {
 			/* Get the default value string from the OS. */
 			code = iaccessible.get_accValue(varChild, pszValue);
-			if (code == COM.E_INVALIDARG) code = COM.DISP_E_MEMBERNOTFOUND; // proxy doesn't know about app childID
-			if (accessibleControlListeners.size() == 0) return code;
 			if (code == COM.S_OK) {
 				int /*long*/[] pValue = new int /*long*/[1];
 				COM.MoveMemory(pValue, pszValue, OS.PTR_SIZEOF);
@@ -2245,6 +2422,11 @@ public class Accessible {
 					osValue = new String(buffer);
 				}
 			}
+			if (code == COM.E_INVALIDARG) code = COM.DISP_E_MEMBERNOTFOUND; // proxy doesn't know about app childID
+			if (accessibleControlListeners.size() == 0) {
+				if (DEBUG) print(this + ".IAccessible::get_accValue(" + v.lVal + ") returning value=" + osValue + " from super" + hresult(code));
+				return code;
+			}
 		}
 
 		AccessibleControlEvent event = new AccessibleControlEvent(this);
@@ -2254,7 +2436,7 @@ public class Accessible {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getValue(event);
 		}
-		if (DEBUG) print("IAccessible::get_accValue(" + v.lVal + ") returning " + event.result);
+		if (DEBUG) print(this + ".IAccessible::get_accValue(" + v.lVal + ") returning " + event.result + hresult(event.result == null ? code : COM.S_OK));
 		if (event.result == null) return code;
 		// empty string is a valid value, so do not test for it
 		setString(pszValue, event.result);
@@ -2293,6 +2475,7 @@ public class Accessible {
 	 * must be incremented before returning.  The caller is responsible for releasing rgvar.
 	 */
 	int Next(int celt, int /*long*/ rgvar, int /*long*/ pceltFetched) {
+		if (DEBUG) print(this + ".IEnumVARIANT::Next");
 		/* If there are no listeners, query the proxy for
 		 * its IEnumVariant, and get the Next items from it.
 		 */
@@ -2357,9 +2540,10 @@ public class Accessible {
 		}
 		return COM.S_FALSE;
 	}
-	
+
 	/* IEnumVARIANT::Skip([in] celt) over the specified number of elements in the enumeration sequence. */
 	int Skip(int celt) {
+		if (DEBUG) print(this + ".IEnumVARIANT::Skip");
 		/* If there are no listeners, query the proxy
 		 * for its IEnumVariant, and tell it to Skip.
 		 */
@@ -2384,6 +2568,7 @@ public class Accessible {
 	
 	/* IEnumVARIANT::Reset() the enumeration sequence to the beginning. */
 	int Reset() {
+		if (DEBUG) print(this + ".IEnumVARIANT::Reset");
 		/* If there are no listeners, query the proxy
 		 * for its IEnumVariant, and tell it to Reset.
 		 */
@@ -2406,6 +2591,7 @@ public class Accessible {
 	 * must be incremented before returning.  The caller is responsible for releasing ppEnum.
 	 */
 	int Clone(int /*long*/ ppEnum) {
+		if (DEBUG) print(this + ".IEnumVARIANT::Clone");
 		/* If there are no listeners, query the proxy for
 		 * its IEnumVariant, and get the Clone from it.
 		 */
@@ -2430,6 +2616,7 @@ public class Accessible {
 	/* IAccessible2::get_nRelations([out] pNRelations) */
 	int get_nRelations(int /*long*/ pNRelations) {
 		int count = getRelationCount();
+		if (DEBUG) print(this + ".IAccessible2::get_nRelations returning " + count + hresult(COM.S_OK));
 		COM.MoveMemory(pNRelations, new int [] { count }, 4);
 		return COM.S_OK;
 	}
@@ -2441,11 +2628,13 @@ public class Accessible {
 			Relation relation = (Relation)relations[type];
 			if (relation != null) i++;
 			if (i == relationIndex) {
+				if (DEBUG) print(this + ".IAccessible2::get_relation(" + relationIndex + ") returning " + relation.getAddress() + hresult(COM.S_OK));
 				relation.AddRef();
-				COM.MoveMemory(ppRelation, new int /*long*/[] { relation.objIAccessibleRelation.getAddress() }, OS.PTR_SIZEOF);
+				COM.MoveMemory(ppRelation, new int /*long*/[] { relation.getAddress() }, OS.PTR_SIZEOF);
 				return COM.S_OK;
 			}
 		}
+		if (DEBUG) print(this + ".IAccessible2::get_relation(" + relationIndex + ") returning" + hresult(COM.E_INVALIDARG));
 		return COM.E_INVALIDARG;
 	}
 
@@ -2457,10 +2646,11 @@ public class Accessible {
 			Relation relation = (Relation)relations[type];
 			if (relation != null) {
 				relation.AddRef();
-				COM.MoveMemory(ppRelations + count * OS.PTR_SIZEOF, new int /*long*/[] { relation.objIAccessibleRelation.getAddress() }, OS.PTR_SIZEOF);
+				COM.MoveMemory(ppRelations + count * OS.PTR_SIZEOF, new int /*long*/[] { relation.getAddress() }, OS.PTR_SIZEOF);
 				count++;
 			}
 		}
+		if (DEBUG) print(this + ".IAccessible2::get_relations(" + maxRelations + ") returning " + count + hresult(COM.S_OK));
 		COM.MoveMemory(pNRelations, new int [] { count }, 4);
 		return COM.S_OK;
 	}
@@ -2468,19 +2658,22 @@ public class Accessible {
 	/* IAccessible2::get_role([out] pRole) */
 	int get_role(int /*long*/ pRole) {
 		int role = getRole();
-		if (DEBUG) print("IAccessible::get_accRole() returning " + getRoleString(role));
+		if (role == 0) role = getDefaultRole();
+		if (DEBUG) print(this + ".IAccessible2::get_role() returning " + getRoleString(role) + hresult(COM.S_OK));
 		COM.MoveMemory(pRole, new int [] { role }, 4);
 		return COM.S_OK;
 	}
 
 	/* IAccessible2::scrollTo([in] scrollType) */
 	int scrollTo(int scrollType) {
+		if (DEBUG) print(this + ".IAccessible2::scrollTo");
 		if (scrollType < ACC.SCROLL_TYPE_LEFT_EDGE || scrollType > ACC.SCROLL_TYPE_ANYWHERE) return COM.E_INVALIDARG;
 		return COM.E_NOTIMPL;
 	}
 
 	/* IAccessible2::scrollToPoint([in] coordinateType, [in] x, [in] y) */
 	int scrollToPoint(int coordinateType, int x, int y) {
+		if (DEBUG) print(this + ".IAccessible2::scrollToPoint");
 		if (coordinateType != COM.IA2_COORDTYPE_SCREEN_RELATIVE) return COM.E_INVALIDARG;
 		return COM.E_NOTIMPL;
 	}
@@ -2499,6 +2692,7 @@ public class Accessible {
 		//find this guy's 1-based index in the children of the parent (0 for N/A)
 		int positionInGroup = 0;
 		COM.MoveMemory(pPositionInGroup, new int [] { positionInGroup }, 4);
+		if (DEBUG) print(this + ".IAccessible2::get_groupPosition() returning" + hresult(groupLevel == 0 && similarItemsInGroup == 0 && positionInGroup == 0 ? COM.S_FALSE : COM.S_OK));
 		if (groupLevel == 0 && similarItemsInGroup == 0 && positionInGroup == 0) return COM.S_FALSE;
 		return COM.S_OK;
 	}
@@ -2527,7 +2721,7 @@ public class Accessible {
 		if (getRole() == ACC.ROLE_TEXT && accessibleTextExtendedListeners.size() > 0) {
 			ia2States |= COM.IA2_STATE_EDITABLE;
 		}
-		if (DEBUG) print("IAccessible2::get_states returning " + getIA2StatesString(ia2States));
+		if (DEBUG) print(this + ".IAccessible2::get_states returning" + getIA2StatesString(ia2States) + hresult(COM.S_OK));
 		COM.MoveMemory(pStates, new int [] { ia2States }, 4);
 		return COM.S_OK;
 	}
@@ -2571,13 +2765,15 @@ public class Accessible {
 
 	/* IAccessible2::get_uniqueID([out] pUniqueID) */
 	int get_uniqueID(int /*long*/ pUniqueID) {
-		if (uniqueID == 0) uniqueID = UniqueID++;
+		if (uniqueID == -1) uniqueID = UniqueID--;
+		if (DEBUG) print(this + ".IAccessible2::get_uniqueID returning " + uniqueID + hresult(COM.S_OK));
 		COM.MoveMemory(pUniqueID, new int /*long*/ [] { uniqueID }, 4);
 		return COM.S_OK;
 	}
 
 	/* IAccessible2::get_windowHandle([out] pWindowHandle) */
 	int get_windowHandle(int /*long*/ pWindowHandle) {
+		if (DEBUG) print(this + ".IAccessible2::get_windowHandle returning " + control.handle + hresult(COM.S_OK));
 		COM.MoveMemory(pWindowHandle, new int /*long*/ [] { control.handle }, OS.PTR_SIZEOF);
 		return COM.S_OK;
 	}
@@ -2637,6 +2833,7 @@ public class Accessible {
 //			}
 		}
 
+		if (DEBUG) print(this + ".IAccessible2::get_indexInParent returning " + indexInParent + hresult(indexInParent == -1 ? COM.S_FALSE : COM.S_OK));
 		COM.MoveMemory(pIndexInParent, new int [] { indexInParent }, 4);
 		return indexInParent == -1 ? COM.S_FALSE : COM.S_OK;
 	}
@@ -2658,6 +2855,7 @@ public class Accessible {
 		ptr = COM.SysAllocString(data);
 		COM.MoveMemory(pLocale + 2 * OS.PTR_SIZEOF, new int /*long*/[] {ptr}, OS.PTR_SIZEOF);
 		
+		if (DEBUG) print(this + ".IAccessible2::get_locale() returning" + hresult(COM.S_OK));
 		return COM.S_OK;
 	}
 
@@ -2691,6 +2889,7 @@ public class Accessible {
 		if (getRole() == ACC.ROLE_TEXT) {
 			attributes += "text-model:a1;";
 		}
+		if (DEBUG) print(this + ".IAccessible2::get_attributes() returning " + attributes + hresult(attributes.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		setString(pbstrAttributes, attributes);
 		if (attributes.length() == 0) return COM.S_FALSE;
 		return COM.S_OK;
@@ -2703,6 +2902,7 @@ public class Accessible {
 			AccessibleActionListener listener = (AccessibleActionListener) accessibleActionListeners.elementAt(i);
 			listener.getActionCount(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleAction::get_nActions() returning " + event.count + hresult(COM.S_OK));
 		COM.MoveMemory(pNActions, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -2715,6 +2915,7 @@ public class Accessible {
 			AccessibleActionListener listener = (AccessibleActionListener) accessibleActionListeners.elementAt(i);
 			listener.doAction(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleAction::doAction(" + actionIndex + ") returning" + hresult(event.result == null || !event.result.equals(ACC.OK) ? COM.E_INVALIDARG : COM.S_OK));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
@@ -2727,6 +2928,7 @@ public class Accessible {
 			AccessibleActionListener listener = (AccessibleActionListener) accessibleActionListeners.elementAt(i);
 			listener.getDescription(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleAction::get_description(" + actionIndex + ") returning " + event.result + hresult(event.result == null || event.result.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		setString(pbstrDescription, event.result);
 		if (event.result == null || event.result.length() == 0) return COM.S_FALSE;
 		return COM.S_OK;
@@ -2755,7 +2957,7 @@ public class Accessible {
 			}
 			i = j + 1;
 		}
-		if (DEBUG) print("IAccessibleAction::get_keyBinding(index=" + actionIndex + ",max=" + nMaxBindings+ ") returning count=" + count);
+		if (DEBUG) print(this + ".IAccessibleAction::get_keyBinding(index=" + actionIndex + " max=" + nMaxBindings + ") returning count=" + count + hresult(count == 0 ? COM.S_FALSE : COM.S_OK));
 		COM.MoveMemory(pNBindings, new int [] { count }, 4);
 		if (count == 0) {
 			setString(ppbstrKeyBindings, null);
@@ -2773,6 +2975,7 @@ public class Accessible {
 			AccessibleActionListener listener = (AccessibleActionListener) accessibleActionListeners.elementAt(i);
 			listener.getName(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleAction::get_name(" + actionIndex + ") returning " + event.result + hresult(event.result == null || event.result.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		if (event.result == null || event.result.length() == 0) {
 			setString(pbstrName, null);
 			return COM.S_FALSE;
@@ -2790,6 +2993,7 @@ public class Accessible {
 			AccessibleActionListener listener = (AccessibleActionListener) accessibleActionListeners.elementAt(i);
 			listener.getName(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleAction::get_localizedName(" + actionIndex + ") returning " + event.result + hresult(event.result == null || event.result.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		if (event.result == null || event.result.length() == 0) {
 			setString(pbstrLocalizedName, null);
 			return COM.S_FALSE;
@@ -2801,6 +3005,7 @@ public class Accessible {
 	/* IAccessibleApplication::get_appName([out] pbstrName) */
 	int get_appName(int /*long*/ pbstrName) {
 		String appName = Display.getAppName();
+		if (DEBUG) print(this + ".IAccessibleApplication::get_appName() returning " + appName + hresult(appName == null || appName.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		if (appName == null || appName.length() == 0) {
 			setString(pbstrName, null);
 			return COM.S_FALSE;
@@ -2812,6 +3017,7 @@ public class Accessible {
 	/* IAccessibleApplication::get_appVersion([out] pbstrVersion) */
 	int get_appVersion(int /*long*/ pbstrVersion) {
 		String appVersion = Display.getAppVersion();
+		if (DEBUG) print(this + ".IAccessibleApplication::get_appVersion() returning" + appVersion + hresult(appVersion == null || appVersion.length() == 0 ? COM.S_FALSE : COM.S_OK));
 		if (appVersion == null || appVersion.length() == 0) {
 			setString(pbstrVersion, null);
 			return COM.S_FALSE;
@@ -2823,6 +3029,7 @@ public class Accessible {
 	/* IAccessibleApplication::get_toolkitName([out] pbstrName) */
 	int get_toolkitName(int /*long*/ pbstrName) {
 		String toolkitName = "SWT";
+		if (DEBUG) print(this + ".IAccessibleApplication::get_toolkitName() returning" + toolkitName + hresult(COM.S_OK));
 		setString(pbstrName, toolkitName);
 		return COM.S_OK;
 	}
@@ -2830,42 +3037,46 @@ public class Accessible {
 	/* IAccessibleApplication::get_toolkitVersion([out] pbstrVersion) */
 	int get_toolkitVersion(int /*long*/ pbstrVersion) {
 		String toolkitVersion = "" + SWT.getVersion(); //$NON-NLS-1$
+		if (DEBUG) print(this + ".IAccessibleApplication::get_toolkitVersion() returning" + toolkitVersion + hresult(COM.S_OK));
 		setString(pbstrVersion, toolkitVersion);
 		return COM.S_OK;
 	}
 
-	/* IAccessibleComponent::get_locationInParent([out] pX, [out] pY) */
-	int get_locationInParent(int /*long*/ pX, int /*long*/ pY) {
-		// TODO: support transparently (hard for fake parents - screen vs. parent coords)
-		AccessibleControlEvent event = new AccessibleControlEvent(this);
-		for (int i = 0; i < accessibleControlListeners.size(); i++) {
-			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
-			listener.getLocation (event);
-		}
-		COM.MoveMemory(pX, new int [] { event.x }, 4);
-		COM.MoveMemory(pY, new int [] { event.y }, 4);
-		return COM.S_OK;
-	}
-
-	/* IAccessibleComponent::get_foreground([out] pForeground) */
-	int get_foreground(int /*long*/ pForeground) {
-		Color color = control.getForeground();
-		COM.MoveMemory(pForeground, new int [] { color.handle }, 4);
-		if (DEBUG) print("IAccessibleComponent::get_foreground returning " + color.handle);
-		return COM.S_OK;
-	}
-
-	/* IAccessibleComponent::get_background([out] pBackground) */
-	int get_background(int /*long*/ pBackground) {
-		Color color = control.getBackground();
-		COM.MoveMemory(pBackground, new int [] { color.handle }, 4);
-		if (DEBUG) print("IAccessibleComponent::get_background returning " + color.handle);
-		return COM.S_OK;
-	}
+	// The following 3 method are intentionally commented. We are not providing IAccessibleComponent at this time.
+//	/* IAccessibleComponent::get_locationInParent([out] pX, [out] pY) */
+//	int get_locationInParent(int /*long*/ pX, int /*long*/ pY) {
+//		if (DEBUG) print(this + ".IAccessibleComponent::get_locationInParent");
+//		// TO DO: support transparently (hard for lightweight parents - screen vs. parent coords)
+//		AccessibleControlEvent event = new AccessibleControlEvent(this);
+//		for (int i = 0; i < accessibleControlListeners.size(); i++) {
+//			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
+//			listener.getLocation (event);
+//		}
+//		COM.MoveMemory(pX, new int [] { event.x }, 4);
+//		COM.MoveMemory(pY, new int [] { event.y }, 4);
+//		return COM.S_OK;
+//	}
+//
+//	/* IAccessibleComponent::get_foreground([out] pForeground) */
+//	int get_foreground(int /*long*/ pForeground) {
+//		Color color = control.getForeground();
+//		if (DEBUG) print(this + ".IAccessibleComponent::get_foreground returning " + color.handle);
+//		COM.MoveMemory(pForeground, new int [] { color.handle }, 4);
+//		return COM.S_OK;
+//	}
+//
+//	/* IAccessibleComponent::get_background([out] pBackground) */
+//	int get_background(int /*long*/ pBackground) {
+//		Color color = control.getBackground();
+//		if (DEBUG) print(this + ".IAccessibleComponent::get_background returning " + color.handle);
+//		COM.MoveMemory(pBackground, new int [] { color.handle }, 4);
+//		return COM.S_OK;
+//	}
 
 	// The following 7 method are intentionally commented. We are not providing IAccessibleEditableText at this time.
-	/* IAccessibleEditableText::copyText([in] startOffset, [in] endOffset) */
+//	/* IAccessibleEditableText::copyText([in] startOffset, [in] endOffset) */
 //	int copyText(int startOffset, int endOffset) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::copyText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.start = startOffset;
 //		event.end = endOffset;
@@ -2879,6 +3090,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::deleteText([in] startOffset, [in] endOffset) */
 //	int deleteText(int startOffset, int endOffset) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::deleteText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.start = startOffset;
 //		event.end = endOffset;
@@ -2892,6 +3104,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::insertText([in] offset, [in] pbstrText) */
 //	int insertText(int offset, int /*long*/ pbstrText) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::insertText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.offset = offset;
 //		event.string = pbstrText;
@@ -2905,6 +3118,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::cutText([in] startOffset, [in] endOffset) */
 //	int cutText(int startOffset, int endOffset) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::cutText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.start = startOffset;
 //		event.end = endOffset;
@@ -2918,6 +3132,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::pasteText([in] offset) */
 //	int pasteText(int offset) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::pasteText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.offset = offset;
 //		for (int i = 0; i < accessibleEditableTextListeners.size(); i++) {
@@ -2930,6 +3145,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::replaceText([in] startOffset, [in] endOffset, [in] pbstrText) */
 //	int replaceText(int startOffset, int endOffset, int /*long*/ pbstrText) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::replaceText");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.start = startOffset;
 //		event.end = endOffset;
@@ -2944,6 +3160,7 @@ public class Accessible {
 //
 //	/* IAccessibleEditableText::setAttributes([in] startOffset, [in] endOffset, [in] pbstrAttributes) */
 //	int setAttributes(int startOffset, int endOffset, int /*long*/ pbstrAttributes) {
+//		if (DEBUG) print(this + ".IAccessibleEditableText::setAttributes");
 //		AccessibleEditableTextEvent event = new AccessibleEditableTextEvent(this);
 //		event.start = startOffset;
 //		event.end = endOffset;
@@ -2958,6 +3175,7 @@ public class Accessible {
 
 	/* IAccessibleHyperlink::get_anchor([in] index, [out] pAnchor) */
 	int get_anchor(int index, int /*long*/ pAnchor) {
+		if (DEBUG) print(this + ".IAccessibleHyperlink::get_anchor");
 		AccessibleHyperlinkEvent event = new AccessibleHyperlinkEvent(this);
 		event.index = index;
 		for (int i = 0; i < accessibleHyperlinkListeners.size(); i++) {
@@ -2977,6 +3195,7 @@ public class Accessible {
 
 	/* IAccessibleHyperlink::get_anchorTarget([in] index, [out] pAnchorTarget) */
 	int get_anchorTarget(int index, int /*long*/ pAnchorTarget) {
+		if (DEBUG) print(this + ".IAccessibleHyperlink::get_anchorTarget");
 		AccessibleHyperlinkEvent event = new AccessibleHyperlinkEvent(this);
 		event.index = index;
 		for (int i = 0; i < accessibleHyperlinkListeners.size(); i++) {
@@ -2996,6 +3215,7 @@ public class Accessible {
 
 	/* IAccessibleHyperlink::get_startIndex([out] pIndex) */
 	int get_startIndex(int /*long*/ pIndex) {
+		if (DEBUG) print(this + ".IAccessibleHyperlink::get_startIndex");
 		AccessibleHyperlinkEvent event = new AccessibleHyperlinkEvent(this);
 		for (int i = 0; i < accessibleHyperlinkListeners.size(); i++) {
 			AccessibleHyperlinkListener listener = (AccessibleHyperlinkListener) accessibleHyperlinkListeners.elementAt(i);
@@ -3007,6 +3227,7 @@ public class Accessible {
 
 	/* IAccessibleHyperlink::get_endIndex([out] pIndex) */
 	int get_endIndex(int /*long*/ pIndex) {
+		if (DEBUG) print(this + ".IAccessibleHyperlink::get_endIndex");
 		AccessibleHyperlinkEvent event = new AccessibleHyperlinkEvent(this);
 		for (int i = 0; i < accessibleHyperlinkListeners.size(); i++) {
 			AccessibleHyperlinkListener listener = (AccessibleHyperlinkListener) accessibleHyperlinkListeners.elementAt(i);
@@ -3024,6 +3245,7 @@ public class Accessible {
 
 	/* IAccessibleHypertext::get_nHyperlinks([out] pHyperlinkCount) */
 	int get_nHyperlinks(int /*long*/ pHyperlinkCount) {
+		if (DEBUG) print(this + ".IAccessibleHypertext::get_nHyperlinks");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
@@ -3035,6 +3257,7 @@ public class Accessible {
 
 	/* IAccessibleHypertext::get_hyperlink([in] index, [out] ppHyperlink) */
 	int get_hyperlink(int index, int /*long*/ ppHyperlink) {
+		if (DEBUG) print(this + ".IAccessibleHypertext::get_hyperlink");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		event.index = index;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
@@ -3053,6 +3276,7 @@ public class Accessible {
 
 	/* IAccessibleHypertext::get_hyperlinkIndex([in] charIndex, [out] pHyperlinkIndex) */
 	int get_hyperlinkIndex(int charIndex, int /*long*/ pHyperlinkIndex) {
+		if (DEBUG) print(this + ".IAccessibleHypertext::get_hyperlinkIndex");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		event.offset = charIndex;
 		event.index = -1;
@@ -3065,46 +3289,50 @@ public class Accessible {
 		return COM.S_OK;
 	}
 
-	/* IAccessibleImage::get_description([out] pbstrDescription) */
-	int get_description(int /*long*/ pbstrDescription) {
-		// TODO: Does it make sense to just reuse description?
-		AccessibleEvent event = new AccessibleEvent(this);
-		event.childID = ACC.CHILDID_SELF;
-		for (int i = 0; i < accessibleListeners.size(); i++) {
-			AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i);
-			listener.getDescription(event);
-		}
-		setString(pbstrDescription, event.result);
-		if (event.result == null) return COM.S_FALSE;
-		return COM.S_OK;
-	}
-
-	/* IAccessibleImage::get_imagePosition([in] coordinateType, [out] pX, [out] pY) */
-	int get_imagePosition(int coordinateType, int /*long*/ pX, int /*long*/ pY) {
-		// TODO: does it make sense to just reuse getLocation?
-		AccessibleControlEvent event = new AccessibleControlEvent(this);
-		event.childID = ACC.CHILDID_SELF;
-		for (int i = 0; i < accessibleControlListeners.size(); i++) {
-			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
-			listener.getLocation(event);
-		}
-		COM.MoveMemory(pX, new int [] { event.x }, 4);
-		COM.MoveMemory(pY, new int [] { event.y }, 4);
-		return COM.S_OK;
-	}
-
-	/* IAccessibleImage::get_imageSize([out] pHeight, [out] pWidth) */
-	int get_imageSize(int /*long*/ pHeight, int /*long*/ pWidth) {
-		// TODO: does it make sense to just reuse getLocation?
-		AccessibleControlEvent event = new AccessibleControlEvent(this);
-		for (int i = 0; i < accessibleControlListeners.size(); i++) {
-			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
-			listener.getLocation(event);
-		}
-		COM.MoveMemory(pHeight, new int [] { event.height }, 4);
-		COM.MoveMemory(pWidth, new int [] { event.width }, 4);
-		return COM.S_OK;
-	}
+	// The following 3 method are intentionally commented. We are not providing IAccessibleImage at this time.
+//	/* IAccessibleImage::get_description([out] pbstrDescription) */
+//	int get_description(int /*long*/ pbstrDescription) {
+//		if (DEBUG) print(this + ".IAccessibleImage::get_description");
+//		// TO DO: Does it make sense to just reuse description?
+//		AccessibleEvent event = new AccessibleEvent(this);
+//		event.childID = ACC.CHILDID_SELF;
+//		for (int i = 0; i < accessibleListeners.size(); i++) {
+//			AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i);
+//			listener.getDescription(event);
+//		}
+//		setString(pbstrDescription, event.result);
+//		if (event.result == null) return COM.S_FALSE;
+//		return COM.S_OK;
+//	}
+//
+//	/* IAccessibleImage::get_imagePosition([in] coordinateType, [out] pX, [out] pY) */
+//	int get_imagePosition(int coordinateType, int /*long*/ pX, int /*long*/ pY) {
+//		if (DEBUG) print(this + ".IAccessibleImage::get_imagePosition");
+//		// TO DO: does it make sense to just reuse getLocation?
+//		AccessibleControlEvent event = new AccessibleControlEvent(this);
+//		event.childID = ACC.CHILDID_SELF;
+//		for (int i = 0; i < accessibleControlListeners.size(); i++) {
+//			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
+//			listener.getLocation(event);
+//		}
+//		COM.MoveMemory(pX, new int [] { event.x }, 4);
+//		COM.MoveMemory(pY, new int [] { event.y }, 4);
+//		return COM.S_OK;
+//	}
+//
+//	/* IAccessibleImage::get_imageSize([out] pHeight, [out] pWidth) */
+//	int get_imageSize(int /*long*/ pHeight, int /*long*/ pWidth) {
+//		if (DEBUG) print(this + ".IAccessibleImage::get_imageSize");
+//		// TO DO: does it make sense to just reuse getLocation?
+//		AccessibleControlEvent event = new AccessibleControlEvent(this);
+//		for (int i = 0; i < accessibleControlListeners.size(); i++) {
+//			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
+//			listener.getLocation(event);
+//		}
+//		COM.MoveMemory(pHeight, new int [] { event.height }, 4);
+//		COM.MoveMemory(pWidth, new int [] { event.width }, 4);
+//		return COM.S_OK;
+//	}
 
 	/* IAccessibleTable2::get_cellAt([in] row, [in] column, [out] ppCell) */
 	int get_cellAt(int row, int column, int /*long*/ ppCell) {
@@ -3116,7 +3344,7 @@ public class Accessible {
 			listener.getCell(event);
 		}
 		Accessible accessible = event.accessible;
-		if (DEBUG) print("IAccessibleTable2::get_cellAt(row=" + row + ", column=" + column + ") returning " + accessible);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_cellAt(row=" + row + ", column=" + column + ") returning " + accessible);
 		if (accessible == null) return COM.E_INVALIDARG;
 		accessible.AddRef();
 		COM.MoveMemory(ppCell, new int /*long*/[] { accessible.getAddress() }, OS.PTR_SIZEOF);
@@ -3131,7 +3359,7 @@ public class Accessible {
 			listener.getCaption(event);
 		}
 		Accessible accessible = event.accessible;
-		if (DEBUG) print("IAccessibleTable2::get_caption() returning " + accessible);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_caption() returning " + accessible);
 		if (accessible == null) {
 			COM.MoveMemory(ppAccessible, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			return COM.S_FALSE;
@@ -3149,8 +3377,8 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getColumnDescription(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleTable2::get_columnDescription(column=" + column + ") returning " + event.result);
 		setString(pbstrDescription, event.result);
-		if (DEBUG) print("IAccessibleTable2::get_columnDescription(column=" + column + ") returning " + event.result);
 		if (event.result == null) return COM.S_FALSE;
 		return COM.S_OK;
 	}
@@ -3162,7 +3390,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getColumnCount(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_nColumns() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_nColumns() returning " + event.count);
 		COM.MoveMemory(pColumnCount, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3174,7 +3402,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getRowCount(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_nRows() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_nRows() returning " + event.count);
 		COM.MoveMemory(pRowCount, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3186,7 +3414,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getSelectedCellCount(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_nSelectedCells() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_nSelectedCells() returning " + event.count);
 		COM.MoveMemory(pCellCount, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3198,7 +3426,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getSelectedColumnCount(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_nSelectedColumns() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_nSelectedColumns() returning " + event.count);
 		COM.MoveMemory(pColumnCount, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3210,7 +3438,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getSelectedRowCount(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_nSelectedRows() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_nSelectedRows() returning " + event.count);
 		COM.MoveMemory(pRowCount, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3223,8 +3451,8 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getRowDescription(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleTable2::get_rowDescription(row=" + row + ") returning " + event.result);
 		setString(pbstrDescription, event.result);
-		if (DEBUG) print("IAccessibleTable2::get_rowDescription(row=" + row + ") returning " + event.result);
 		if (event.result == null) return COM.S_FALSE;
 		return COM.S_OK;
 	}
@@ -3236,7 +3464,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.getSelectedCells(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_selectedCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
+		if (DEBUG) print(this + ".IAccessibleTable2::get_selectedCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
 		if (event.accessibles == null || event.accessibles.length == 0) {
 			COM.MoveMemory(ppCells, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			COM.MoveMemory(pNSelectedCells, new int [] { 0 }, 4);
@@ -3266,7 +3494,7 @@ public class Accessible {
 			listener.getSelectedColumns(event);
 		}
 		int count = event.selected == null ? 0 : event.selected.length;
-		if (DEBUG) print("IAccessibleTable2::get_selectedColumns() returning " + (count == 0 ? "null" : "selected[" + count + "]"));
+		if (DEBUG) print(this + ".IAccessibleTable2::get_selectedColumns() returning " + (count == 0 ? "null" : "selected[" + count + "]"));
 		if (count == 0) {
 			COM.MoveMemory(ppSelectedColumns, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			COM.MoveMemory(pNColumns, new int [] { 0 }, 4);
@@ -3287,7 +3515,7 @@ public class Accessible {
 			listener.getSelectedRows(event);
 		}
 		int count = event.selected == null ? 0 : event.selected.length;
-		if (DEBUG) print("IAccessibleTable2::get_selectedRows() returning " + (count == 0 ? "null" : "selected[" + count + "]"));
+		if (DEBUG) print(this + ".IAccessibleTable2::get_selectedRows() returning " + (count == 0 ? "null" : "selected[" + count + "]"));
 		if (count == 0) {
 			COM.MoveMemory(ppSelectedRows, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			COM.MoveMemory(pNRows, new int [] { 0 }, 4);
@@ -3308,7 +3536,7 @@ public class Accessible {
 			listener.getSummary(event);
 		}
 		Accessible accessible = event.accessible;
-		if (DEBUG) print("IAccessibleTable2::get_summary() returning " + accessible);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_summary() returning " + accessible);
 		if (accessible == null) {
 			COM.MoveMemory(ppAccessible, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			return COM.S_FALSE;
@@ -3326,7 +3554,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.isColumnSelected(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_isColumnSelected() returning " + event.isSelected);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_isColumnSelected() returning " + event.isSelected);
 		COM.MoveMemory(pIsSelected, new int [] {event.isSelected ? 1 : 0}, 4);
 		return COM.S_OK;
 	}
@@ -3339,7 +3567,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.isRowSelected(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::get_isRowSelected() returning " + event.isSelected);
+		if (DEBUG) print(this + ".IAccessibleTable2::get_isRowSelected() returning " + event.isSelected);
 		COM.MoveMemory(pIsSelected, new int [] {event.isSelected ? 1 : 0}, 4);
 		return COM.S_OK;
 	}
@@ -3352,7 +3580,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.setSelectedRow(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::selectRow() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
+		if (DEBUG) print(this + ".IAccessibleTable2::selectRow() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
@@ -3365,7 +3593,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.setSelectedColumn(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::selectColumn() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
+		if (DEBUG) print(this + ".IAccessibleTable2::selectColumn() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
@@ -3378,7 +3606,7 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.deselectRow(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::unselectRow() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
+		if (DEBUG) print(this + ".IAccessibleTable2::unselectRow() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
@@ -3391,14 +3619,14 @@ public class Accessible {
 			AccessibleTableListener listener = (AccessibleTableListener) accessibleTableListeners.elementAt(i);
 			listener.deselectColumn(event);
 		}
-		if (DEBUG) print("IAccessibleTable2::unselectColumn() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
+		if (DEBUG) print(this + ".IAccessibleTable2::unselectColumn() returning " + (event.result == null ? "E_INVALIDARG" : event.result));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
 
 	/* IAccessibleTable2::get_modelChange([out] pModelChange) */
 	int get_modelChange(int /*long*/ pModelChange) {
-		if (DEBUG) print("IAccessibleTable2::get_modelChange() returning " + (tableChange == null ? "null" : "tableChange=" + tableChange[0] + ", " + tableChange[1] + ", " + tableChange[2] + ", " + tableChange[3]));
+		if (DEBUG) print(this + ".IAccessibleTable2::get_modelChange() returning " + (tableChange == null ? "null" : "tableChange=" + tableChange[0] + ", " + tableChange[1] + ", " + tableChange[2] + ", " + tableChange[3]));
 		if (tableChange == null) {
 			COM.MoveMemory(pModelChange, new int /*long*/ [] { 0 }, OS.PTR_SIZEOF);
 			return COM.S_FALSE;
@@ -3414,7 +3642,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getColumnSpan(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_columnExtent() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_columnExtent() returning " + event.count);
 		COM.MoveMemory(pNColumnsSpanned, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3426,7 +3654,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getColumnHeaders(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_columnHeaderCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_columnHeaderCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
 		if (event.accessibles == null || event.accessibles.length == 0) {
 			COM.MoveMemory(ppCellAccessibles, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			COM.MoveMemory(pNColumnHeaderCells, new int [] { 0 }, 4);
@@ -3455,7 +3683,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getColumnIndex(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_columnIndex() returning " + event.index);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_columnIndex() returning " + event.index);
 		COM.MoveMemory(pColumnIndex, new int [] { event.index }, 4);
 		return COM.S_OK;
 	}
@@ -3467,7 +3695,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getRowSpan(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_rowExtent() returning " + event.count);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_rowExtent() returning " + event.count);
 		COM.MoveMemory(pNRowsSpanned, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3479,7 +3707,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getRowHeaders(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_rowHeaderCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_rowHeaderCells() returning " + (event.accessibles == null ? "null" : "accessibles[" + event.accessibles.length + "]"));
 		if (event.accessibles == null || event.accessibles.length == 0) {
 			COM.MoveMemory(ppCellAccessibles, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
 			COM.MoveMemory(pNRowHeaderCells, new int [] { 0 }, 4);
@@ -3508,7 +3736,7 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.getRowIndex(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_rowIndex() returning " + event.index);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_rowIndex() returning " + event.index);
 		COM.MoveMemory(pRowIndex, new int [] { event.index }, 4);
 		return COM.S_OK;
 	}
@@ -3520,13 +3748,14 @@ public class Accessible {
 			AccessibleTableCellListener listener = (AccessibleTableCellListener) accessibleTableCellListeners.elementAt(i);
 			listener.isSelected(event);
 		}
-		if (DEBUG) print("IAccessibleTableCell::get_isSelected() returning " + event.isSelected);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_isSelected() returning " + event.isSelected);
 		COM.MoveMemory(pIsSelected, new int [] {event.isSelected ? 1 : 0}, 4);
 		return COM.S_OK;
 	}
 
 	/* IAccessibleTableCell::get_rowColumnExtents([out] pRow, [out] pColumn, [out] pRowExtents, [out] pColumnExtents, [out] pIsSelected) */
 	int get_rowColumnExtents(int /*long*/ pRow, int /*long*/ pColumn, int /*long*/ pRowExtents, int /*long*/ pColumnExtents, int /*long*/ pIsSelected) {
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_rowColumnExtents");
 		// TODO: should we implement this? It is just a convenience function.
 		return COM.DISP_E_MEMBERNOTFOUND;
 //		AccessibleTableCellEvent event = new AccessibleTableCellEvent(this);
@@ -3549,7 +3778,7 @@ public class Accessible {
 			listener.getTable(event);
 		}
 		Accessible accessible = event.accessible;
-		if (DEBUG) print("IAccessibleTableCell::get_table() returning " + accessible);
+		if (DEBUG) print(this + ".IAccessibleTableCell::get_table() returning " + accessible);
 		if (accessible == null) {
 			// TODO: This is not supposed to return S_FALSE. We need to lookup the table role parent and return that.
 			COM.MoveMemory(ppTable, new int /*long*/[] { 0 }, OS.PTR_SIZEOF);
@@ -3562,9 +3791,10 @@ public class Accessible {
 
 	/* IAccessibleText::addSelection([in] startOffset, [in] endOffset) */
 	int addSelection(int startOffset, int endOffset) {
+		if (DEBUG) print(this + ".IAccessibleText::addSelection(" + startOffset + ", " + endOffset + ")");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.start = startOffset;
-		event.end = endOffset;
+		event.start = startOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : startOffset;
+		event.end = endOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : endOffset;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.addSelection(event);
@@ -3576,7 +3806,7 @@ public class Accessible {
 	/* IAccessibleText::get_attributes([in] offset, [out] pStartOffset, [out] pEndOffset, [out] pbstrTextAttributes) */
 	int get_attributes(int offset, int /*long*/ pStartOffset, int /*long*/ pEndOffset, int /*long*/ pbstrTextAttributes) {
 		AccessibleTextAttributeEvent event = new AccessibleTextAttributeEvent(this);
-		event.offset = offset;
+		event.offset = offset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : offset;
 		for (int i = 0; i < accessibleAttributeListeners.size(); i++) {
 			AccessibleAttributeListener listener = (AccessibleAttributeListener) accessibleAttributeListeners.elementAt(i);
 			listener.getTextAttributes(event);
@@ -3626,7 +3856,7 @@ public class Accessible {
 				textAttributes += event.attributes[i] + ":" + event.attributes[i+1] + ";";
 			}
 		}
-		if (DEBUG) print("IAccessibleText::get_attributes(" + offset + ") returning start = " + event.start + ", end = " + event.end + ", attributes = " + textAttributes);
+		if (DEBUG) print(this + ".IAccessibleText::get_attributes(" + offset + ") returning start = " + event.start + ", end = " + event.end + ", attributes = " + textAttributes);
 		COM.MoveMemory(pStartOffset, new int [] { event.start }, 4);
 		COM.MoveMemory(pEndOffset, new int [] { event.end }, 4);
 		setString(pbstrTextAttributes, textAttributes);
@@ -3636,41 +3866,24 @@ public class Accessible {
 
 	/* IAccessibleText::get_caretOffset([out] pOffset) */
 	int get_caretOffset(int /*long*/ pOffset) {
-		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.offset = -1;
-		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
-			AccessibleTextListener listener = (AccessibleTextListener) accessibleTextExtendedListeners.elementAt(i);
-			listener.getCaretOffset (event);
-		}
-		if (event.offset == -1) {
-			for (int i = 0; i < accessibleTextListeners.size(); i++) {
-				event.childID = ACC.CHILDID_SELF;
-				AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i);
-				listener.getCaretOffset (event);
-			}
-		}
-		if (DEBUG) print("IAccessibleText::get_caretOffset returning " + event.offset);
-		COM.MoveMemory(pOffset, new int [] { event.offset }, 4);
-		if (event.offset == -1) return COM.S_FALSE;
+		int offset = getCaretOffset();
+		if (DEBUG) print(this + ".IAccessibleText::get_caretOffset returning " + offset + hresult(offset == -1 ? COM.S_FALSE : COM.S_OK));
+		COM.MoveMemory(pOffset, new int [] { offset }, 4);
+		if (offset == -1) return COM.S_FALSE;
 		return COM.S_OK;
 	}
 
-	/* IAccessibleText::get_characterExtents([in] offset, [in] coordType, [out] pX, [out] pY, [out] pWidth, [out] pHeight) */
 	int get_characterExtents(int offset, int coordType, int /*long*/ pX, int /*long*/ pY, int /*long*/ pWidth, int /*long*/ pHeight) {
+		int length = getCharacterCount();
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
-			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
-			listener.getCharacterCount(event);
-		}
-		int length = event.count;
-		event.count = 0;
-		event.start = offset < 0 ? 0 : offset;
-		event.end = offset >= length ? length : offset + 1;
+		event.start = offset == COM.IA2_TEXT_OFFSET_LENGTH ? length : offset < 0 ? 0 : offset;
+		event.end = offset == COM.IA2_TEXT_OFFSET_LENGTH || offset >= length ? length : offset + 1;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.getTextBounds(event);
 		}
 		/* Note: event.rectangles is not used here, because IAccessibleText::get_characterExtents is just for one character. */
+		if (DEBUG) print(this + ".IAccessibleText::get_characterExtents(" + offset + ") returning " + event.x + ", " + event.y + ", " + event.width + ", " + event.height);
 		COM.MoveMemory(pX, new int [] { event.x }, 4);
 		COM.MoveMemory(pY, new int [] { event.y }, 4);
 		COM.MoveMemory(pWidth, new int [] { event.width }, 4);
@@ -3697,6 +3910,7 @@ public class Accessible {
 			}
 			event.count = event.offset != -1 && event.length > 0 ? 1 : 0;
 		}
+		if (DEBUG) print(this + ".IAccessibleText::get_nSelections returning " + event.count);
 		COM.MoveMemory(pNSelections, new int [] { event.count }, 4);
 		return COM.S_OK;
 	}
@@ -3711,11 +3925,12 @@ public class Accessible {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.getOffsetAtPoint(event);
 		}
-		COM.MoveMemory(pOffset, new int [] { event.offset }, 4);
+		if (DEBUG) print(this + ".IAccessibleText::get_offsetAtPoint(" + x + ", " + y + ") returning " + event.offset + hresult(event.offset == -1 ? COM.S_FALSE : COM.S_OK));
 		/*
 		 * Note that the current IA2 spec says to return 0 when there's nothing to return,
 		 * but since 0 is a valid return value, the spec is going to be updated to return -1.
 		 */
+		COM.MoveMemory(pOffset, new int [] { event.offset }, 4);
 		if (event.offset == -1) return COM.S_FALSE;
 		return COM.S_OK;
 	}
@@ -3741,7 +3956,7 @@ public class Accessible {
 			event.start = event.offset;
 			event.end = event.offset + event.length;
 		}
-		if (DEBUG) print("IAccessibleText::get_selection(" + selectionIndex + ") returning " + event.start + ", " + event.end);
+		if (DEBUG) print(this + ".IAccessibleText::get_selection(" + selectionIndex + ") returning " + event.start + ", " + event.end);
 		COM.MoveMemory(pStartOffset, new int [] { event.start }, 4);
 		COM.MoveMemory(pEndOffset, new int [] { event.end }, 4);
 		/*
@@ -3755,8 +3970,14 @@ public class Accessible {
 	/* IAccessibleText::get_text([in] startOffset, [in] endOffset, [out] pbstrText) */
 	int get_text(int startOffset, int endOffset, int /*long*/ pbstrText) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.start = startOffset;
-		event.end = endOffset;
+		event.start = startOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : startOffset;
+		event.end = endOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : endOffset;
+		if (event.start > event.end) {
+			/* IA2 spec says that indices can be exchanged. */
+			int temp = event.start;
+			event.start = event.end;
+			event.end = temp;
+		}
 		event.count = 0;
 		event.type = ACC.TEXT_BOUNDARY_ALL;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
@@ -3776,7 +3997,7 @@ public class Accessible {
 				event.result = e.result;
 			}
 		}
-		if (DEBUG) print("IAccessibleText::get_text(" + startOffset + ", " + endOffset + ") returning " + event.result);
+		if (DEBUG) print(this + ".IAccessibleText::get_text(" + startOffset + ", " + endOffset + ") returning " + event.result + hresult(event.result == null ? COM.E_INVALIDARG : COM.S_OK));
 		setString(pbstrText, event.result);
 		if (event.result == null) return COM.E_INVALIDARG;
 		return COM.S_OK;
@@ -3785,8 +4006,9 @@ public class Accessible {
 	/* IAccessibleText::get_textBeforeOffset([in] offset, [in] boundaryType, [out] pStartOffset, [out] pEndOffset, [out] pbstrText) */
 	int get_textBeforeOffset(int offset, int boundaryType, int /*long*/ pStartOffset, int /*long*/ pEndOffset, int /*long*/ pbstrText) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.start = offset;
-		event.end = offset;
+		int charCount = getCharacterCount();
+		event.start = offset == COM.IA2_TEXT_OFFSET_LENGTH ? charCount : offset == COM.IA2_TEXT_OFFSET_CARET ? getCaretOffset() : offset;
+		event.end = event.start;
 		event.count = -1;
 		switch (boundaryType) {
 			case COM.IA2_TEXT_BOUNDARY_CHAR: event.type = ACC.TEXT_BOUNDARY_CHAR; break;
@@ -3796,10 +4018,37 @@ public class Accessible {
 			case COM.IA2_TEXT_BOUNDARY_LINE: event.type = ACC.TEXT_BOUNDARY_LINE; break;
 			default: return COM.E_INVALIDARG;
 		}
+		int eventStart = event.start;
+		int eventEnd = event.end;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.getText(event);
 		}
+		if (event.end < charCount) {
+			switch (boundaryType) {
+				case COM.IA2_TEXT_BOUNDARY_WORD:
+				case COM.IA2_TEXT_BOUNDARY_SENTENCE:
+				case COM.IA2_TEXT_BOUNDARY_PARAGRAPH:
+				case COM.IA2_TEXT_BOUNDARY_LINE:
+					int start = event.start;
+					event.start = eventStart;
+					event.end = eventEnd;
+					event.count = 0;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+					event.end = event.start;
+					event.start = start;
+					event.type = ACC.TEXT_BOUNDARY_ALL;
+					event.count = 0;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+			}
+		}
+		if (DEBUG) print(this + ".IAccessibleText::get_textBeforeOffset(" + offset + ") returning start=" + event.start + ", end=" + event.end + " " + event.result + hresult(event.result == null ? COM.S_FALSE : COM.S_OK));
 		COM.MoveMemory(pStartOffset, new int [] { event.start }, 4);
 		COM.MoveMemory(pEndOffset, new int [] { event.end }, 4);
 		setString(pbstrText, event.result);
@@ -3810,8 +4059,9 @@ public class Accessible {
 	/* IAccessibleText::get_textAfterOffset([in] offset, [in] boundaryType, [out] pStartOffset, [out] pEndOffset, [out] pbstrText) */
 	int get_textAfterOffset(int offset, int boundaryType, int /*long*/ pStartOffset, int /*long*/ pEndOffset, int /*long*/ pbstrText) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.start = offset;
-		event.end = offset;
+		int charCount = getCharacterCount();
+		event.start = offset == COM.IA2_TEXT_OFFSET_LENGTH ? charCount : offset == COM.IA2_TEXT_OFFSET_CARET ? getCaretOffset() : offset;
+		event.end = event.start;
 		event.count = 1;
 		switch (boundaryType) {
 			case COM.IA2_TEXT_BOUNDARY_CHAR: event.type = ACC.TEXT_BOUNDARY_CHAR; break;
@@ -3821,10 +4071,37 @@ public class Accessible {
 			case COM.IA2_TEXT_BOUNDARY_LINE: event.type = ACC.TEXT_BOUNDARY_LINE; break;
 			default: return COM.E_INVALIDARG;
 		}
+		int eventStart = event.start;
+		int eventEnd = event.end;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.getText(event);
 		}
+		if (event.end < charCount) {
+			switch (boundaryType) {
+				case COM.IA2_TEXT_BOUNDARY_WORD:
+				case COM.IA2_TEXT_BOUNDARY_SENTENCE:
+				case COM.IA2_TEXT_BOUNDARY_PARAGRAPH:
+				case COM.IA2_TEXT_BOUNDARY_LINE:
+					int start = event.start;
+					event.start = eventStart;
+					event.end = eventEnd;
+					event.count = 2;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+					event.end = event.start;
+					event.start = start;
+					event.type = ACC.TEXT_BOUNDARY_ALL;
+					event.count = 0;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+			}
+		}
+		if (DEBUG) print(this + ".IAccessibleText::get_textAfterOffset(" + offset + ") returning start=" + event.start + ", end=" + event.end + " " + event.result + hresult(event.result == null ? COM.S_FALSE : COM.S_OK));
 		COM.MoveMemory(pStartOffset, new int [] { event.start }, 4);
 		COM.MoveMemory(pEndOffset, new int [] { event.end }, 4);
 		setString(pbstrText, event.result);
@@ -3835,8 +4112,9 @@ public class Accessible {
 	/* IAccessibleText::get_textAtOffset([in] offset, [in] boundaryType, [out] pStartOffset, [out] pEndOffset, [out] pbstrText) */
 	int get_textAtOffset(int offset, int boundaryType, int /*long*/ pStartOffset, int /*long*/ pEndOffset, int /*long*/ pbstrText) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.start = offset;
-		event.end = offset;
+		int charCount = getCharacterCount();
+		event.start = offset == COM.IA2_TEXT_OFFSET_LENGTH ? charCount : offset == COM.IA2_TEXT_OFFSET_CARET ? getCaretOffset() : offset;
+		event.end = event.start;
 		event.count = 0;
 		switch (boundaryType) {
 			case COM.IA2_TEXT_BOUNDARY_CHAR: event.type = ACC.TEXT_BOUNDARY_CHAR; break;
@@ -3847,20 +4125,43 @@ public class Accessible {
 			case COM.IA2_TEXT_BOUNDARY_ALL: {
 				event.type = ACC.TEXT_BOUNDARY_ALL;
 				event.start = 0;
-				for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
-					AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
-					listener.getCharacterCount(event);
-				}
-				event.end = event.count;
+				event.end = charCount;
 				event.count = 0;
 				break;
 			}
 			default: return COM.E_INVALIDARG;
 		}
+		int eventStart = event.start;
+		int eventEnd = event.end;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.getText(event);
 		}
+		if (event.end < charCount) {
+			switch (boundaryType) {
+				case COM.IA2_TEXT_BOUNDARY_WORD:
+				case COM.IA2_TEXT_BOUNDARY_SENTENCE:
+				case COM.IA2_TEXT_BOUNDARY_PARAGRAPH:
+				case COM.IA2_TEXT_BOUNDARY_LINE:
+					int start = event.start;
+					event.start = eventStart;
+					event.end = eventEnd;
+					event.count = 1;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+					event.end = event.start;
+					event.start = start;
+					event.type = ACC.TEXT_BOUNDARY_ALL;
+					event.count = 0;
+					for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+						AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+						listener.getText(event);
+					}
+			}
+		}
+		if (DEBUG) print(this + ".IAccessibleText::get_textAtOffset(" + offset + ") returning start=" + event.start + ", end=" + event.end + " " + event.result + hresult(event.result == null ? COM.S_FALSE : COM.S_OK));
 		COM.MoveMemory(pStartOffset, new int [] { event.start }, 4);
 		COM.MoveMemory(pEndOffset, new int [] { event.end }, 4);
 		setString(pbstrText, event.result);
@@ -3876,6 +4177,7 @@ public class Accessible {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.removeSelection(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleText::removeSelection(" + selectionIndex + ") returning" + hresult(event.result == null || !event.result.equals(ACC.OK) ? COM.E_INVALIDARG : COM.S_OK));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
@@ -3883,11 +4185,12 @@ public class Accessible {
 	/* IAccessibleText::setCaretOffset([in] offset) */
 	int setCaretOffset(int offset) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.offset = offset;
+		event.offset = offset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : offset;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.setCaretOffset(event);
 		}
+		if (DEBUG) print(this + ".IAccessibleText::setCaretOffset(" + offset + ") returning" + hresult(event.result == null || !event.result.equals(ACC.OK) ? COM.E_INVALIDARG : COM.S_OK));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; // TODO: @retval E_FAIL if the caret cannot be set ?
 		return COM.S_OK;
 	}
@@ -3896,42 +4199,28 @@ public class Accessible {
 	int setSelection(int selectionIndex, int startOffset, int endOffset) {
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		event.index = selectionIndex;
-		event.start = startOffset;
-		event.end = endOffset;
+		event.start = startOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : startOffset;
+		event.end = endOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : endOffset;
 		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
 			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
 			listener.setSelection(event);
 		}
-		if (DEBUG) print("IAccessibleText::setSelection(index=" + selectionIndex + ", start=" + event.start + ", end=" + event.end + ") returning " + (event.result.equals(ACC.OK) ? "OK" : "INVALIDARG"));
+		if (DEBUG) print(this + ".IAccessibleText::setSelection(index=" + selectionIndex + ", start=" + event.start + ", end=" + event.end + ") returning " + (event.result.equals(ACC.OK) ? "OK" : "INVALIDARG"));
 		if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG;
 		return COM.S_OK;
 	}
 
 	/* IAccessibleText::get_nCharacters([out] pNCharacters) */
 	int get_nCharacters(int /*long*/ pNCharacters) {
-		AccessibleTextEvent event = new AccessibleTextEvent(this);
-		event.count = -1;
-		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
-			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
-			listener.getCharacterCount(event);
-		}
-		if (event.count == -1) {
-			AccessibleControlEvent e = new AccessibleControlEvent(this);
-			e.childID = ACC.CHILDID_SELF;
-			for (int i = 0; i < accessibleControlListeners.size(); i++) {
-				AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
-				listener.getRole(e);
-				listener.getValue(e);
-			}
-			// TODO: Consider passing the value through for other roles as well (i.e. combo, etc). Keep in sync with get_text.
-			event.count = e.detail == ACC.ROLE_TEXT && e.result != null ? e.result.length() : 0;
-		}
-		COM.MoveMemory(pNCharacters, new int [] { event.count }, 4);
+		int count = getCharacterCount();
+		COM.MoveMemory(pNCharacters, new int [] { count }, 4);
+		if (DEBUG) print(this + ".IAccessibleText::get_nCharacters returning " + count);
 		return COM.S_OK;
 	}
 
 	/* IAccessibleText::scrollSubstringTo([in] startIndex, [in] endIndex, [in] scrollType) */
 	int scrollSubstringTo(int startIndex, int endIndex, int scrollType) {
+		if (DEBUG) print(this + ".IAccessibleText::scrollSubstringTo");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		event.start = startIndex;
 		event.end = endIndex;
@@ -3954,6 +4243,7 @@ public class Accessible {
 
 	/* IAccessibleText::scrollSubstringToPoint([in] startIndex, [in] endIndex, [in] coordinateType, [in] x, [in] y) */
 	int scrollSubstringToPoint(int startIndex, int endIndex, int coordinateType, int x, int y) {
+		if (DEBUG) print(this + ".IAccessibleText::scrollSubstringToPoint");
 		AccessibleTextEvent event = new AccessibleTextEvent(this);
 		event.start = startIndex;
 		event.end = endIndex;
@@ -3970,6 +4260,7 @@ public class Accessible {
 
 	/* IAccessibleText::get_newText([out] pNewText) */
 	int get_newText(int /*long*/ pNewText) {
+		if (DEBUG) print(this + ".IAccessibleText::get_newText");
 		String text = null;
 		int start = 0;
 		int end = 0;
@@ -3987,6 +4278,7 @@ public class Accessible {
 
 	/* IAccessibleText::get_oldText([out] pOldText) */
 	int get_oldText(int /*long*/ pOldText) {
+		if (DEBUG) print(this + ".IAccessibleText::get_oldText");
 		String text = null;
 		int start = 0;
 		int end = 0;
@@ -4009,20 +4301,21 @@ public class Accessible {
 			AccessibleValueListener listener = (AccessibleValueListener) accessibleValueListeners.elementAt(i);
 			listener.getCurrentValue(event);
 		}
-		if (event.value == null) return COM.S_FALSE;
+		if (DEBUG) print(this + ".IAccessibleValue::get_currentValue returning " + event.value + hresult(event.value == null ? COM.S_FALSE : COM.S_OK));
 		setNumberVARIANT(pCurrentValue, event.value);
 		return COM.S_OK;
 	}
 
 	/* IAccessibleValue::setCurrentValue([in] value) */
 	int setCurrentValue(int /*long*/ value) {
+		if (DEBUG) print(this + ".IAccessibleValue::setCurrentValue");
 		AccessibleValueEvent event = new AccessibleValueEvent(this);
 		event.value = getNumberVARIANT(value);
-		// TODO: clip to min/max? See IA2 doc.
 		for (int i = 0; i < accessibleValueListeners.size(); i++) {
 			AccessibleValueListener listener = (AccessibleValueListener) accessibleValueListeners.elementAt(i);
 			listener.setCurrentValue(event);
 		}
+		//if (event.value == null) return COM.S_FALSE;
 		return COM.S_OK;
 	}
 
@@ -4033,7 +4326,7 @@ public class Accessible {
 			AccessibleValueListener listener = (AccessibleValueListener) accessibleValueListeners.elementAt(i);
 			listener.getMaximumValue(event);
 		}
-		if (event.value == null) return COM.S_FALSE;
+		if (DEBUG) print(this + ".IAccessibleValue::get_maximumValue returning " + event.value + hresult(event.value == null ? COM.S_FALSE : COM.S_OK));
 		setNumberVARIANT(pMaximumValue, event.value);
 		return COM.S_OK;
 	}
@@ -4045,33 +4338,63 @@ public class Accessible {
 			AccessibleValueListener listener = (AccessibleValueListener) accessibleValueListeners.elementAt(i);
 			listener.getMinimumValue(event);
 		}
-		if (event.value == null) return COM.S_FALSE;
+		if (DEBUG) print(this + ".IAccessibleValue::get_minimumValue returning " + event.value + hresult(event.value == null ? COM.S_FALSE : COM.S_OK));
 		setNumberVARIANT(pMinimumValue, event.value);
 		return COM.S_OK;
 	}
 
+	int eventChildID() {
+		if (parent == null) return COM.CHILDID_SELF;
+		if (uniqueID == -1) uniqueID = UniqueID--;
+		return uniqueID;
+	}
+
+	void checkUniqueID(int childID) {
+		/* If the application is using child ids, check whether there's a corresponding
+		 * accessible, and if so, use the child id as that accessible's unique id. */
+		AccessibleControlEvent event = new AccessibleControlEvent(this);
+		event.childID = childID;
+		for (int l = 0; l < accessibleControlListeners.size(); l++) {
+			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(l);
+			listener.getChild(event);
+		}
+		Accessible accessible = event.accessible;
+		if (accessible != null && accessible.uniqueID == -1) {
+			accessible.uniqueID = childID;
+		}
+	}
+	
 	int childIDToOs(int childID) {
 		if (childID == ACC.CHILDID_SELF) return COM.CHILDID_SELF;
-		/*
-		* Feature of Windows:
-		* In Windows XP, tree item ids are 1-based indices. Previous versions
-		* of Windows use the tree item handle for the accessible child ID.
-		* For backward compatibility, we still take a handle childID for tree
-		* items on XP. All other childIDs are 1-based indices.
-		*/
-		if (!(control instanceof Tree)) return childID + 1;
-		if (OS.COMCTL32_MAJOR < 6) return childID;
-		return (int)/*64*/OS.SendMessage (control.handle, OS.TVM_MAPHTREEITEMTOACCID, childID, 0);
+		/* ChildIDs are 1-based indices. */
+		int osChildID = childID + 1;
+		if (control instanceof Tree) {
+			/*
+			* Feature of Windows:
+			* Before Windows XP, tree item ids were 1-based indices.
+			* Windows XP and later use the tree item handle for the
+			* accessible child ID. For backward compatibility, we still
+			* take 1-based childIDs for tree items prior to Windows XP.
+			*/
+			if (OS.COMCTL32_MAJOR < 6) {
+				osChildID = childID;
+			} else {
+				osChildID = (int)/*64*/OS.SendMessage (control.handle, OS.TVM_MAPHTREEITEMTOACCID, childID, 0);
+			}
+		}
+		checkUniqueID(osChildID);
+		return osChildID;
 	}
 
 	int osToChildID(int osChildID) {
 		if (osChildID == COM.CHILDID_SELF) return ACC.CHILDID_SELF;
 		/*
 		* Feature of Windows:
-		* In Windows XP, tree item ids are 1-based indices. Previous versions
-		* of Windows use the tree item handle for the accessible child ID.
-		* For backward compatibility, we still take a handle childID for tree
-		* items on XP. All other childIDs are 1-based indices.
+		* Before Windows XP, tree item ids were 1-based indices.
+		* Windows XP and later use the tree item handle for the
+		* accessible child ID. For backward compatibility, we still
+		* take 1-based childIDs for tree items prior to Windows XP.
+		* All other childIDs are 1-based indices.
 		*/
 		if (!(control instanceof Tree)) return osChildID - 1;
 		if (OS.COMCTL32_MAJOR < 6) return osChildID;
@@ -4229,6 +4552,45 @@ public class Accessible {
 		return ACC.ROLE_CLIENT_AREA;
 	}
 
+	int getCaretOffset() {
+		AccessibleTextEvent event = new AccessibleTextEvent(this);
+		event.offset = -1;
+		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+			AccessibleTextListener listener = (AccessibleTextListener) accessibleTextExtendedListeners.elementAt(i);
+			listener.getCaretOffset (event);
+		}
+		if (event.offset == -1) {
+			for (int i = 0; i < accessibleTextListeners.size(); i++) {
+				event.childID = ACC.CHILDID_SELF;
+				AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i);
+				listener.getCaretOffset (event);
+			}
+		}
+		return event.offset;
+	}
+
+	/* IAccessibleText::get_characterExtents([in] offset, [in] coordType, [out] pX, [out] pY, [out] pWidth, [out] pHeight) */
+	int getCharacterCount() {
+		AccessibleTextEvent event = new AccessibleTextEvent(this);
+		event.count = -1;
+		for (int i = 0; i < accessibleTextExtendedListeners.size(); i++) {
+			AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i);
+			listener.getCharacterCount(event);
+		}
+		if (event.count == -1) {
+			AccessibleControlEvent e = new AccessibleControlEvent(this);
+			e.childID = ACC.CHILDID_SELF;
+			for (int i = 0; i < accessibleControlListeners.size(); i++) {
+				AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
+				listener.getRole(e);
+				listener.getValue(e);
+			}
+			// TODO: Consider passing the value through for other roles as well (i.e. combo, etc). Keep in sync with get_text.
+			event.count = e.detail == ACC.ROLE_TEXT && e.result != null ? e.result.length() : 0;
+		}
+		return event.count;
+	}
+
 	int getRelationCount() {
 		int count = 0;
 		for (int type = 0; type < MAX_RELATION_TYPES; type++) {
@@ -4244,7 +4606,25 @@ public class Accessible {
 			AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i);
 			listener.getRole(event);
 		}
-		int role = event.detail;
+		return event.detail;
+	}
+
+	int getDefaultRole() {
+		int role;
+		role = COM.ROLE_SYSTEM_CLIENT;
+		if (iaccessible != null) {
+			/* Get the default role from the OS. */
+			int /*long*/ varChild = OS.GlobalAlloc (OS.GMEM_FIXED | OS.GMEM_ZEROINIT, VARIANT.sizeof);
+			setIntVARIANT(varChild, COM.VT_I4, COM.CHILDID_SELF);
+			int /*long*/ pvarRole = OS.GlobalAlloc (OS.GMEM_FIXED | OS.GMEM_ZEROINIT, VARIANT.sizeof);
+			int code = iaccessible.get_accRole(varChild, pvarRole);
+			if (code == COM.S_OK) {
+				VARIANT v = getVARIANT(pvarRole);
+				if (v.vt == COM.VT_I4) role = v.lVal;
+			}
+			OS.GlobalFree(varChild);
+			OS.GlobalFree(pvarRole);
+		}
 		return role;
 	}
 
@@ -4276,7 +4656,10 @@ public class Accessible {
 	}
 	
 	void setNumberVARIANT(int /*long*/ variant, Number number) {
-		if (number instanceof Double) {
+		if (number == null) {
+			COM.MoveMemory(variant, new short[] { COM.VT_EMPTY }, 2);
+			COM.MoveMemory(variant + 8, new int[] { 0 }, 4);
+		} else if (number instanceof Double) {
 			COM.MoveMemory(variant, new short[] { COM.VT_R8 }, 2);
 			COM.MoveMemory(variant + 8, new double[] { number.doubleValue() }, 8);
 		} else if (number instanceof Float) {
@@ -4323,34 +4706,10 @@ public class Accessible {
 	
 	// START DEBUG CODE
 	static void print (String str) {
-		System.out.println (str);
+		if (DEBUG) System.out.println (str);
 	}
-	
-	String getStateString(int state) {
-		StringBuffer stateString = new StringBuffer();
-		if ((state & COM.STATE_SYSTEM_SELECTED) != 0) stateString.append(" STATE_SYSTEM_SELECTED");
-		if ((state & COM.STATE_SYSTEM_SELECTABLE) != 0) stateString.append(" STATE_SYSTEM_SELECTABLE");
-		if ((state & COM.STATE_SYSTEM_MULTISELECTABLE) != 0) stateString.append(" STATE_SYSTEM_MULTISELECTABLE");
-		if ((state & COM.STATE_SYSTEM_FOCUSED) != 0) stateString.append(" STATE_SYSTEM_FOCUSED");
-		if ((state & COM.STATE_SYSTEM_FOCUSABLE) != 0) stateString.append(" STATE_SYSTEM_FOCUSABLE");
-		if ((state & COM.STATE_SYSTEM_PRESSED) != 0) stateString.append(" STATE_SYSTEM_PRESSED");
-		if ((state & COM.STATE_SYSTEM_CHECKED) != 0) stateString.append(" STATE_SYSTEM_CHECKED");
-		if ((state & COM.STATE_SYSTEM_EXPANDED) != 0) stateString.append(" STATE_SYSTEM_EXPANDED");
-		if ((state & COM.STATE_SYSTEM_COLLAPSED) != 0) stateString.append(" STATE_SYSTEM_COLLAPSED");
-		if ((state & COM.STATE_SYSTEM_HOTTRACKED) != 0) stateString.append(" STATE_SYSTEM_HOTTRACKED");
-		if ((state & COM.STATE_SYSTEM_BUSY) != 0) stateString.append(" STATE_SYSTEM_BUSY");
-		if ((state & COM.STATE_SYSTEM_READONLY) != 0) stateString.append(" STATE_SYSTEM_READONLY");
-		if ((state & COM.STATE_SYSTEM_INVISIBLE) != 0) stateString.append(" STATE_SYSTEM_INVISIBLE");
-		if ((state & COM.STATE_SYSTEM_OFFSCREEN) != 0) stateString.append(" STATE_SYSTEM_OFFSCREEN");
-		if ((state & COM.STATE_SYSTEM_SIZEABLE) != 0) stateString.append(" STATE_SYSTEM_SIZEABLE");
-		if ((state & COM.STATE_SYSTEM_LINKED) != 0) stateString.append(" STATE_SYSTEM_LINKED");
-		if ((state & COM.STATE_SYSTEM_UNAVAILABLE) != 0) stateString.append(" STATE_SYSTEM_UNAVAILABLE");
-		stateString.append("Unknown state[s] (" + Integer.toHexString(state) + ")");
-		return stateString.toString();
-	}
-	
 	String getRoleString(int role) {
-		switch (role) {
+		if (DEBUG) switch (role) {
 			case COM.ROLE_SYSTEM_CLIENT: return "ROLE_SYSTEM_CLIENT";
 			case COM.ROLE_SYSTEM_WINDOW: return "ROLE_SYSTEM_WINDOW";
 			case COM.ROLE_SYSTEM_MENUBAR: return "ROLE_SYSTEM_MENUBAR";
@@ -4407,9 +4766,35 @@ public class Accessible {
 		}
 		return "Unknown role (" + role + ")";
 	}
-	
+	String getStateString(int state) {
+		if (state == 0) return " no state bits set";
+		StringBuffer stateString = new StringBuffer();
+		if (DEBUG) {
+		if ((state & COM.STATE_SYSTEM_SELECTED) != 0) stateString.append(" STATE_SYSTEM_SELECTED");
+		if ((state & COM.STATE_SYSTEM_SELECTABLE) != 0) stateString.append(" STATE_SYSTEM_SELECTABLE");
+		if ((state & COM.STATE_SYSTEM_MULTISELECTABLE) != 0) stateString.append(" STATE_SYSTEM_MULTISELECTABLE");
+		if ((state & COM.STATE_SYSTEM_FOCUSED) != 0) stateString.append(" STATE_SYSTEM_FOCUSED");
+		if ((state & COM.STATE_SYSTEM_FOCUSABLE) != 0) stateString.append(" STATE_SYSTEM_FOCUSABLE");
+		if ((state & COM.STATE_SYSTEM_PRESSED) != 0) stateString.append(" STATE_SYSTEM_PRESSED");
+		if ((state & COM.STATE_SYSTEM_CHECKED) != 0) stateString.append(" STATE_SYSTEM_CHECKED");
+		if ((state & COM.STATE_SYSTEM_EXPANDED) != 0) stateString.append(" STATE_SYSTEM_EXPANDED");
+		if ((state & COM.STATE_SYSTEM_COLLAPSED) != 0) stateString.append(" STATE_SYSTEM_COLLAPSED");
+		if ((state & COM.STATE_SYSTEM_HOTTRACKED) != 0) stateString.append(" STATE_SYSTEM_HOTTRACKED");
+		if ((state & COM.STATE_SYSTEM_BUSY) != 0) stateString.append(" STATE_SYSTEM_BUSY");
+		if ((state & COM.STATE_SYSTEM_READONLY) != 0) stateString.append(" STATE_SYSTEM_READONLY");
+		if ((state & COM.STATE_SYSTEM_INVISIBLE) != 0) stateString.append(" STATE_SYSTEM_INVISIBLE");
+		if ((state & COM.STATE_SYSTEM_OFFSCREEN) != 0) stateString.append(" STATE_SYSTEM_OFFSCREEN");
+		if ((state & COM.STATE_SYSTEM_SIZEABLE) != 0) stateString.append(" STATE_SYSTEM_SIZEABLE");
+		if ((state & COM.STATE_SYSTEM_LINKED) != 0) stateString.append(" STATE_SYSTEM_LINKED");
+		if ((state & COM.STATE_SYSTEM_UNAVAILABLE) != 0) stateString.append(" STATE_SYSTEM_UNAVAILABLE");
+		if (stateString.length() == 0) stateString.append(" Unknown state[s] (" + Integer.toHexString(state) + ")");
+		}
+		return stateString.toString();
+	}
 	String getIA2StatesString(int ia2States) {
+		if (ia2States == 0) return " no state bits set";
 		StringBuffer stateString = new StringBuffer();
+		if (DEBUG) {
 		if ((ia2States & COM.IA2_STATE_ACTIVE) != 0) stateString.append(" IA2_STATE_ACTIVE");
 		if ((ia2States & COM.IA2_STATE_EDITABLE) != 0) stateString.append(" IA2_STATE_EDITABLE");
 		if ((ia2States & COM.IA2_STATE_SINGLE_LINE) != 0) stateString.append(" IA2_STATE_SINGLE_LINE");
@@ -4417,11 +4802,68 @@ public class Accessible {
 		if ((ia2States & COM.IA2_STATE_REQUIRED) != 0) stateString.append(" IA2_STATE_REQUIRED");
 		if ((ia2States & COM.IA2_STATE_INVALID_ENTRY) != 0) stateString.append(" IA2_STATE_INVALID_ENTRY");
 		if ((ia2States & COM.IA2_STATE_SUPPORTS_AUTOCOMPLETION) != 0) stateString.append(" IA2_STATE_SUPPORTS_AUTOCOMPLETION");
-		stateString.append("Unknown IA2 state[s] (" + ia2States + ")");
+		if (stateString.length() == 0) stateString.append(" Unknown IA2 state[s] (" + ia2States + ")");
+		}
 		return stateString.toString();
 	}
-
+	String getEventString(int event) {
+		if (DEBUG) switch (event) {
+			case ACC.EVENT_TABLE_CHANGED: return "IA2_EVENT_TABLE_CHANGED";
+			case ACC.EVENT_TEXT_CHANGED: return "IA2_EVENT_TEXT_REMOVED or IA2_EVENT_TEXT_INSERTED";
+			case ACC.EVENT_HYPERTEXT_LINK_SELECTED: return "IA2_EVENT_HYPERTEXT_LINK_SELECTED";
+			case ACC.EVENT_VALUE_CHANGED: return "EVENT_OBJECT_VALUECHANGE";
+			case ACC.EVENT_STATE_CHANGED: return "EVENT_OBJECT_STATECHANGE";
+			case ACC.EVENT_SELECTION_CHANGED: return "EVENT_OBJECT_SELECTIONWITHIN";
+			case ACC.EVENT_TEXT_SELECTION_CHANGED: return "EVENT_OBJECT_TEXTSELECTIONCHANGED";
+			case ACC.EVENT_LOCATION_CHANGED: return "EVENT_OBJECT_LOCATIONCHANGE";
+			case ACC.EVENT_NAME_CHANGED: return "EVENT_OBJECT_NAMECHANGE";
+			case ACC.EVENT_DESCRIPTION_CHANGED: return "EVENT_OBJECT_DESCRIPTIONCHANGE";
+			case ACC.EVENT_DOCUMENT_LOAD_COMPLETE: return "IA2_EVENT_DOCUMENT_LOAD_COMPLETE";
+			case ACC.EVENT_DOCUMENT_LOAD_STOPPED: return "IA2_EVENT_DOCUMENT_LOAD_STOPPED";
+			case ACC.EVENT_DOCUMENT_RELOAD: return "IA2_EVENT_DOCUMENT_RELOAD";
+			case ACC.EVENT_PAGE_CHANGED: return "IA2_EVENT_PAGE_CHANGED";
+			case ACC.EVENT_SECTION_CHANGED: return "IA2_EVENT_SECTION_CHANGED";
+			case ACC.EVENT_ACTION_CHANGED: return "IA2_EVENT_ACTION_CHANGED";
+			case ACC.EVENT_HYPERLINK_START_INDEX_CHANGED: return "IA2_EVENT_HYPERLINK_START_INDEX_CHANGED";
+			case ACC.EVENT_HYPERLINK_END_INDEX_CHANGED: return "IA2_EVENT_HYPERLINK_END_INDEX_CHANGED";
+			case ACC.EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED: return "IA2_EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED";
+			case ACC.EVENT_HYPERLINK_SELECTED_LINK_CHANGED: return "IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED";
+			case ACC.EVENT_HYPERLINK_ACTIVATED: return "IA2_EVENT_HYPERLINK_ACTIVATED";
+			case ACC.EVENT_HYPERTEXT_LINK_COUNT_CHANGED: return "IA2_EVENT_HYPERTEXT_LINK_COUNT_CHANGED";
+			case ACC.EVENT_ATTRIBUTE_CHANGED: return "IA2_EVENT_ATTRIBUTE_CHANGED";
+			case ACC.EVENT_TABLE_CAPTION_CHANGED: return "IA2_EVENT_TABLE_CAPTION_CHANGED";
+			case ACC.EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED: return "IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED";
+			case ACC.EVENT_TABLE_COLUMN_HEADER_CHANGED: return "IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED";
+			case ACC.EVENT_TABLE_ROW_DESCRIPTION_CHANGED: return "IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED";
+			case ACC.EVENT_TABLE_ROW_HEADER_CHANGED: return "IA2_EVENT_TABLE_ROW_HEADER_CHANGED";
+			case ACC.EVENT_TABLE_SUMMARY_CHANGED: return "IA2_EVENT_TABLE_SUMMARY_CHANGED";
+			case ACC.EVENT_TEXT_ATTRIBUTE_CHANGED: return "IA2_EVENT_TEXT_ATTRIBUTE_CHANGED";
+			case ACC.EVENT_TEXT_CARET_MOVED: return "IA2_EVENT_TEXT_CARET_MOVED";
+			case ACC.EVENT_TEXT_COLUMN_CHANGED: return "IA2_EVENT_TEXT_COLUMN_CHANGED";
+		}
+		return "Unknown event (" + event + ")";
+	}
+	private String hresult(int code) {
+		if (DEBUG) switch (code) {
+			case COM.S_OK: return " S_OK";
+			case COM.S_FALSE: return " S_FALSE";
+			case COM.E_ACCESSDENIED: return " E_ACCESSDENIED";
+			case COM.E_FAIL: return " E_FAIL";
+			case COM.E_INVALIDARG: return " E_INVALIDARG";
+			case COM.E_NOINTERFACE: return " E_NOINTERFACE";
+			case COM.E_NOTIMPL: return " E_NOTIMPL";
+			case COM.E_NOTSUPPORTED: return " E_NOTSUPPORTED";
+			case COM.E_OUTOFMEMORY: return " E_OUTOFMEMORY";
+			case COM.E_POINTER: return " E_POINTER";
+			case COM.DISP_E_EXCEPTION: return " DISP_E_EXCEPTION";
+			case COM.DISP_E_MEMBERNOTFOUND: return " DISP_E_MEMBERNOTFOUND";
+			case COM.DISP_E_UNKNOWNINTERFACE: return " DISP_E_UNKNOWNINTERFACE";
+			case COM.DISP_E_UNKNOWNNAME: return " DISP_E_UNKNOWNNAME";
+		}
+		return " HRESULT=" + code;
+	}
 	boolean interesting(GUID guid) {
+		if (DEBUG) {
 		if (COM.IsEqualGUID(guid, COM.IIDIUnknown)) return true;
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessible)) return true;
 		if (COM.IsEqualGUID(guid, COM.IIDIEnumVARIANT)) return true;
@@ -4441,9 +4883,11 @@ public class Accessible {
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleImage)) return true;
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleApplication)) return true;
 		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleContext)) return true;
+		}
 		return false;
 	}
 	String guidString(GUID guid) {
+		if (DEBUG) {
 		final GUID IIDIAccessibleHandler = IIDFromString("{03022430-ABC4-11D0-BDE2-00AA001A1953}"); //$NON-NLS-1$
 		final GUID IIDIAccessor = IIDFromString("{0C733A8C-2A1C-11CE-ADE5-00AA0044773D}"); //$NON-NLS-1$
 		final GUID IIDIAdviseSink2 = IIDFromString("{00000125-0000-0000-C000-000000000046}"); //$NON-NLS-1$
@@ -4641,14 +5085,17 @@ public class Accessible {
 		if (COM.IsEqualGUID(guid, IIDIAccIdentity)) return "IIDIAccIdentity";
 		if (COM.IsEqualGUID(guid, IIDIAccPropServer)) return "IIDIAccPropServer";
 		if (COM.IsEqualGUID(guid, IIDIAccPropServices)) return "IIDIAccPropServices";
+		}
 		return StringFromIID(guid);
 	}
 	static GUID IIDFromString(String lpsz) {
+		if (DEBUG) {
 		int length = lpsz.length();
 		char[] buffer = new char[length + 1];
 		lpsz.getChars(0, length, buffer, 0);
 		GUID lpiid = new GUID();
 		if (COM.IIDFromString(buffer, lpiid) == COM.S_OK) return lpiid;
+		}
 		return null;
 	}
 	static String StringFromIID(GUID guid) {
@@ -4667,5 +5114,14 @@ public class Accessible {
 		}
 		return zeros.substring(0, Math.max(0, length - tlen)) + t;
 	}
+	public String toString () {
+		String toString = super.toString();
+		if (DEBUG) {
+			int role = getRole();
+			if (role == 0) role = getDefaultRole();
+			return toString.substring(toString.lastIndexOf('.') + 1) + "(" + getRoleString(role) + ")";
+		}
+		return toString;
+	}
 	// END DEBUG CODE
 }
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Relation.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Relation.java
index fe13546..1e72c7a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Relation.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Relation.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,12 +10,13 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
+import org.eclipse.swt.*;
 import org.eclipse.swt.internal.win32.*;
 import org.eclipse.swt.internal.ole.win32.*;
 
 class Relation {
 	Accessible accessible;
-	COMObject objIAccessibleRelation = null;
+	COMObject objIAccessibleRelation;
 	int refCount;
 	int type;
 	Accessible[] targets;
@@ -37,45 +38,59 @@ class Relation {
 		"subwindowOf",		//$NON-NLS-1$
 	};
 	static final String[] localizedRelationTypeString = {
-		"controlled by",
-		"controller for",
-		"described by",
-		"description for",
-		"embedded by",
-		"embeds",
-		"flows from",
-		"flows to",
-		"label for",
-		"labelled by",
-		"member of",
-		"node child of",
-		"parent window of",
-		"popup for",
-		"subwindow of",
+		SWT.getMessage("SWT_Controlled_By"),	//$NON-NLS-1$
+		SWT.getMessage("SWT_Controller_For"),	//$NON-NLS-1$
+		SWT.getMessage("SWT_Described_By"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Description_For"),	//$NON-NLS-1$
+		SWT.getMessage("SWT_Embedded_By"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Embeds"),			//$NON-NLS-1$
+		SWT.getMessage("SWT_Flows_From"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Flows_To"),			//$NON-NLS-1$
+		SWT.getMessage("SWT_Label_For"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Labelled_By"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Member_Of"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Node_Child_Of"),	//$NON-NLS-1$
+		SWT.getMessage("SWT_Parent_Window_Of"),	//$NON-NLS-1$
+		SWT.getMessage("SWT_Popup_For"),		//$NON-NLS-1$
+		SWT.getMessage("SWT_Subwindow_Of"),		//$NON-NLS-1$
 	};
 
 	Relation(Accessible accessible, int type) {
 		this.accessible = accessible;
 		this.type = type;
 		this.targets = new Accessible[0];
+		AddRef();
 	}
 	
+	int /*long*/ getAddress() {
+		/* The address of a Relation is the address of its IAccessibleRelation COMObject. */
+		if (objIAccessibleRelation == null) createIAccessibleRelation();
+		return objIAccessibleRelation.getAddress();
+	}
+	
+	void createIAccessibleRelation() {
+		objIAccessibleRelation = new COMObject(new int[] {2,0,0,1,1,1,2,3}) {
+			public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(args[0], args[1]);}
+			public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
+			public int /*long*/ method2(int /*long*/[] args) {return Release();}
+			public int /*long*/ method3(int /*long*/[] args) {return get_relationType(args[0]);}
+			public int /*long*/ method4(int /*long*/[] args) {return get_localizedRelationType(args[0]);}
+			public int /*long*/ method5(int /*long*/[] args) {return get_nTargets(args[0]);}
+			public int /*long*/ method6(int /*long*/[] args) {return get_target((int)/*64*/args[0], args[1]);}
+			public int /*long*/ method7(int /*long*/[] args) {return get_targets((int)/*64*/args[0], args[1], args[2]);}
+		};
+	}
+
 	/* QueryInterface([in] iid, [out] ppvObject)
 	 * Ownership of ppvObject transfers from callee to caller so reference count on ppvObject 
 	 * must be incremented before returning.  Caller is responsible for releasing ppvObject.
 	 */
-	int QueryInterface(COMObject comObject, int /*long*/ iid, int /*long*/ ppvObject) {
+	int QueryInterface(int /*long*/ iid, int /*long*/ ppvObject) {
 		GUID guid = new GUID();
 		COM.MoveMemory(guid, iid, GUID.sizeof);
 
-		if (COM.IsEqualGUID(guid, COM.IIDIUnknown)) {
-			COM.MoveMemory(ppvObject, new int /*long*/[] { comObject.getAddress() }, OS.PTR_SIZEOF);
-			AddRef();
-			return COM.S_OK;
-		}
-
-		if (COM.IsEqualGUID(guid, COM.IIDIAccessibleRelation)) {
-			COM.MoveMemory(ppvObject, new int /*long*/[] { objIAccessibleRelation.getAddress() }, OS.PTR_SIZEOF);
+		if (COM.IsEqualGUID(guid, COM.IIDIUnknown) || COM.IsEqualGUID(guid, COM.IIDIAccessibleRelation)) {
+			COM.MoveMemory(ppvObject, new int /*long*/[] { getAddress() }, OS.PTR_SIZEOF);
 			AddRef();
 			return COM.S_OK;
 		}
@@ -84,19 +99,6 @@ class Relation {
 	}
 
 	int AddRef() {
-		if (refCount == 0) {
-			/* Create the COMObject on the first AddRef. */
-			objIAccessibleRelation = new COMObject(new int[] {2,0,0,1,1,1,2,3}) {
-				public int /*long*/ method0(int /*long*/[] args) {return QueryInterface(objIAccessibleRelation, args[0], args[1]);}
-				public int /*long*/ method1(int /*long*/[] args) {return AddRef();}
-				public int /*long*/ method2(int /*long*/[] args) {return Release();}
-				public int /*long*/ method3(int /*long*/[] args) {return get_relationType(args[0]);}
-				public int /*long*/ method4(int /*long*/[] args) {return get_localizedRelationType(args[0]);}
-				public int /*long*/ method5(int /*long*/[] args) {return get_nTargets(args[0]);}
-				public int /*long*/ method6(int /*long*/[] args) {return get_target((int)/*64*/args[0], args[1]);}
-				public int /*long*/ method7(int /*long*/[] args) {return get_targets((int)/*64*/args[0], args[1], args[2]);}
-			};
-		}
 		refCount++;
 		return refCount;
 	}
@@ -135,7 +137,7 @@ class Relation {
 		if (targetIndex < 0 || targetIndex >= targets.length) return COM.E_INVALIDARG;
 		Accessible target = targets[targetIndex];
 		target.AddRef();
-		COM.MoveMemory(ppTarget, new int /*long*/[] { target.objIAccessible.getAddress() }, OS.PTR_SIZEOF);
+		COM.MoveMemory(ppTarget, new int /*long*/[] { target.getAddress() }, OS.PTR_SIZEOF);
 		return COM.S_OK;
 	}
 
@@ -145,20 +147,29 @@ class Relation {
 		for (int i = 0; i < count; i++) {
 			Accessible target = targets[i];
 			target.AddRef();
-			COM.MoveMemory(ppTargets + i * OS.PTR_SIZEOF, new int /*long*/[] { target.objIAccessible.getAddress() }, OS.PTR_SIZEOF);
+			COM.MoveMemory(ppTargets + i * OS.PTR_SIZEOF, new int /*long*/[] { target.getAddress() }, OS.PTR_SIZEOF);
 		}
 		COM.MoveMemory(pNTargets, new int [] { count }, 4);
 		return COM.S_OK;
 	}
 
 	void addTarget(Accessible target) {
+		if (containsTarget(target)) return;
 		Accessible[] newTargets = new Accessible[targets.length + 1];
 		System.arraycopy(targets, 0, newTargets, 0, targets.length);
 		newTargets[targets.length] = target;
 		targets = newTargets;
 	}
 
+	boolean containsTarget(Accessible target) {
+		for (int i = 0; i < targets.length; i++) {
+			if (targets[i] == target) return true;
+		}
+		return false;
+	}
+
 	void removeTarget(Accessible target) {
+		if (!containsTarget(target)) return;
 		Accessible[] newTargets = new Accessible[targets.length - 1];
 		int j = 0;
 		for (int i = 0; i < targets.length; i++) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
index efe73ba..21fe561 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -502,7 +502,7 @@ public boolean forward() {
 }
 
 public String getBrowserType () {
-	return "safari"; //$NON-NLS-1$
+	return "webkit"; //$NON-NLS-1$
 }
 
 public String getText() {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java
index bb03ce9..90ecf69 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -493,7 +493,7 @@ public boolean forward () {
 }
 
 public String getBrowserType () {
-	return "safari"; //$NON-NLS-1$
+	return "webkit"; //$NON-NLS-1$
 }
 
 public String getText() {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java
index 68b803c..88c8297 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -510,7 +510,7 @@ public boolean execute (String script) {
  *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
  * </ul>
  *
- * @see #dispose
+ * @see #dispose()
  * 
  * @since 3.6
  */
@@ -595,7 +595,7 @@ public boolean forward () {
 
 /**
  * Returns the type of native browser being used by this instance.
- * Examples: "mozilla", "ie", "safari", "voyager"
+ * Examples: "ie", "mozilla", "voyager", "webkit"
  *
  * @return the type of the native browser
  * 
@@ -989,11 +989,11 @@ public boolean setText (String html) {
  * Renders a string containing HTML.  The rendering of the content occurs asynchronously.
  * The rendered page can be given either trusted or untrusted permissions. 
  * <p>
- * The html parameter is Unicode-encoded since it is a java <code>String</code>.
+ * The <code>html</code> parameter is Unicode-encoded since it is a java <code>String</code>.
  * As a result, the HTML meta tag charset should not be set. The charset is implied
  * by the <code>String</code> itself.
  * <p>
- * The trusted parameter affects the permissions that will be granted to the rendered
+ * The <code>trusted</code> parameter affects the permissions that will be granted to the rendered
  * page.  Specifying <code>true</code> for trusted gives the page permissions equivalent
  * to a page on the local file system, while specifying <code>false</code> for trusted
  * gives the page permissions equivalent to a page from the internet.  Page content should
@@ -1005,7 +1005,7 @@ public boolean setText (String html) {
  * @param trusted <code>false</code> if the rendered page should be granted restricted
  * permissions and <code>true</code> otherwise
  *
- * @return true if the operation was successful and false otherwise.
+ * @return <code>true</code> if the operation was successful and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_NULL_ARGUMENT - if the html is null</li>
@@ -1066,7 +1066,7 @@ public boolean setUrl (String url) {
  * @param postData post data to be sent with the request, or <code>null</code>
  * @param headers header lines to be sent with the request, or <code>null</code> 
  *
- * @return true if the operation was successful and false otherwise.
+ * @return <code>true</code> if the operation was successful and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_NULL_ARGUMENT - if the url is null</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java
index b6f3df7..8b93b11 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/forms/org/eclipse/swt/browser/IE.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/forms/org/eclipse/swt/browser/IE.java
index 4556ee4..30f73eb 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/forms/org/eclipse/swt/browser/IE.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/forms/org/eclipse/swt/browser/IE.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java
index 32cf5ca..6be7a97 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java
index 0f955cd..1fb993c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,7 +29,7 @@ class IE extends WebBrowser {
 	OleAutomation[] documents = new OleAutomation[0];
 
 	boolean back, forward, delaySetText, ignoreDispose, ignoreTraverse, performingInitialNavigate;
-	boolean installFunctionsOnDocumentComplete, untrustedText;
+	boolean installFunctionsOnDocumentComplete, untrustedText, isRefresh;
 	Point location;
 	Point size;
 	boolean addressBar = true, menuBar = true, statusBar = true, toolBar = true;
@@ -45,6 +45,7 @@ class IE extends WebBrowser {
 	static final int BeforeNavigate2 = 0xfa;
 	static final int CommandStateChange = 0x69;
 	static final int DocumentComplete = 0x103;
+	static final int DownloadComplete = 0x68;
 	static final int NavigateComplete2 = 0xfc;
 	static final int NewWindow2 = 0xfb;
 	static final int OnMenuBar = 0x100;
@@ -77,6 +78,7 @@ class IE extends WebBrowser {
 	static final int URLACTION_ACTIVEX_MIN = 0x00001200;
 	static final int URLACTION_ACTIVEX_MAX = 0x000013ff;
 	static final int URLACTION_ACTIVEX_RUN = 0x00001200;
+	static final int URLACTION_FEATURE_ZONE_ELEVATION = 0x00002101;
 	static final int URLACTION_JAVA_MIN = 0x00001C00;
 	static final int URLACTION_JAVA_MAX = 0x00001Cff;
 	static final int URLACTION_SCRIPT_RUN = 0x00001400;
@@ -377,6 +379,8 @@ public boolean create(Composite parent, int style) {
 			if (auto != null) {
 				switch (event.type) {
 					case BeforeNavigate2: {
+						isRefresh = false; /* refreshes do not come through here */
+
 						/* don't send client events if the initial navigate to about:blank has not completed */
 						if (performingInitialNavigate) break;
 
@@ -571,6 +575,40 @@ public boolean create(Composite parent, int style) {
 						//dispatch.Release();
 						break;
 					}
+					case DownloadComplete: {
+						/*
+						 * IE feature.  Some events that swt relies on are not sent when
+						 * a page is refreshed as opposed to being navigated to.  The
+						 * workaround is to use DownloadComplete as an indication that a
+						 * refresh has completed.   
+						 */
+						if (!isRefresh) break;
+						isRefresh = false;
+
+						/*
+						* NavigateComplete is not received for refreshes, so re-hook
+						* BrowserFunctions here. 
+						*/
+						Enumeration elements = functions.elements ();
+						while (elements.hasMoreElements ()) {
+							BrowserFunction function = (BrowserFunction)elements.nextElement ();
+							execute (function.functionString);
+						}
+
+						/*
+						 * DocumentComplete is not received for refreshes, but clients may rely
+						 * on this event for tasks like hooking javascript listeners, so send the
+						 * event here.
+						 */
+						ProgressEvent progressEvent = new ProgressEvent(browser);
+						progressEvent.display = browser.getDisplay();
+						progressEvent.widget = browser;
+						for (int i = 0; i < progressListeners.length; i++) {
+							progressListeners[i].completed(progressEvent);
+						}						
+
+						break;
+					}
 					case NavigateComplete2: {
 						Variant varResult = event.arguments[1];
 						String url = varResult.getString();
@@ -904,6 +942,7 @@ public boolean create(Composite parent, int style) {
 	site.addEventListener(BeforeNavigate2, oleListener);
 	site.addEventListener(CommandStateChange, oleListener);
 	site.addEventListener(DocumentComplete, oleListener);
+	site.addEventListener(DownloadComplete, oleListener);
 	site.addEventListener(NavigateComplete2, oleListener);
 	site.addEventListener(NavigateError, oleListener);
 	site.addEventListener(NewWindow2, oleListener);
@@ -1221,6 +1260,7 @@ public void refresh() {
 		}
 	}
 
+	isRefresh = true;
 	int[] rgdispid = auto.getIDsOfNames(new String[] { "Refresh" }); //$NON-NLS-1$
 	auto.invoke(rgdispid[0]);
 }
@@ -1334,38 +1374,6 @@ public boolean setText(final String html, boolean trusted) {
 		auto.invoke(rgdispid[0]);
 	}
 
-	/*
-	* Feature in IE.  If the current page is about:blank then a DocumentComplete
-	* callback will not be received by re-navigating to about:blank, and the new
-	* content will not be set.  The workaround is to skip this re-navigation and
-	* just set the content here if not vetoed by a LocationListener.  
-	*/
-	if (_getUrl().equals(ABOUT_BLANK)) {
-		Runnable runnable = new Runnable() {
-			public void run() {
-				if (browser.isDisposed()) return;
-				LocationEvent newEvent = new LocationEvent(browser);
-				newEvent.display = browser.getDisplay();
-				newEvent.widget = browser;
-				newEvent.location = ABOUT_BLANK;
-				newEvent.doit = true;
-				for (int i = 0; i < locationListeners.length; i++) {
-					locationListeners[i].changing(newEvent);
-				}
-				boolean doit = newEvent.doit && !browser.isDisposed();
-				if (doit) setHTML(html);
-			}
-		};
-
-		if (delaySetText) {
-			delaySetText = false;
-			browser.getDisplay().asyncExec(runnable);
-		} else {
-			runnable.run();
-		}
-		return true;
-	}
-
 	int[] rgdispid = auto.getIDsOfNames(new String[] { "Navigate", "URL" }); //$NON-NLS-1$ //$NON-NLS-2$
 	Variant[] rgvarg = new Variant[1];
 	rgvarg[0] = new Variant(ABOUT_BLANK);
@@ -1534,6 +1542,7 @@ void handleDOMEvent (OleEvent e) {
 			case SWT.DEL: lastCharCode = keyEvent.character = SWT.DEL; break;
 			case SWT.TAB: lastCharCode = keyEvent.character = SWT.TAB; break;
 		}
+
 		if (!sendKeyEvent(keyEvent)) {
 			rgdispid = event.getIDsOfNames(new String[] { PROPERTY_RETURNVALUE });
 			dispIdMember = rgdispid[0];
@@ -1542,6 +1551,13 @@ void handleDOMEvent (OleEvent e) {
 			pVarFalse.dispose();
 		}
 
+		/*
+		* Pressing F5 refreshes the current page.  If this is about to happen
+		* then set isRefresh to true so that received IE events will be treated
+		* accordingly.
+		*/
+		if (lastKeyCode == SWT.F5) isRefresh = true;
+
 		event.dispose();
 		return;
 	}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java
index b763cea..a62a9a1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -510,6 +510,18 @@ int GetSecurityId(int /*long*/ pwszUrl, int /*long*/ pbSecurityId, int /*long*/
 int ProcessUrlAction(int /*long*/ pwszUrl, int dwAction, int /*long*/ pPolicy, int cbPolicy, int /*long*/ pContext, int cbContext, int dwFlags, int dwReserved) {
 	ignoreNextMessage = false;
 
+	/*
+	* If the current page is about:blank and is trusted then
+	* override default zone elevation settings to allow the action.  
+	*/
+	if (dwAction == IE.URLACTION_FEATURE_ZONE_ELEVATION) {
+	    IE ie = (IE)((Browser)getParent().getParent()).webBrowser;
+	    if (ie.auto != null && ie._getUrl().startsWith(IE.ABOUT_BLANK) && !ie.untrustedText) {
+			if (cbPolicy >= 4) COM.MoveMemory(pPolicy, new int[] {IE.URLPOLICY_ALLOW}, 4);
+			return COM.S_OK;
+	    }
+	}
+
 	int policy = IE.INET_E_DEFAULT_ACTION;
 
 	if (dwAction >= IE.URLACTION_JAVA_MIN && dwAction <= IE.URLACTION_JAVA_MAX) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/wpf/org/eclipse/swt/browser/IE.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/wpf/org/eclipse/swt/browser/IE.java
index 0defaa7..72ac7de 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/wpf/org/eclipse/swt/browser/IE.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/wpf/org/eclipse/swt/browser/IE.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java
index 6f3b1ef..d632d41 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -93,7 +93,7 @@ public class BidiSegmentEvent extends TypedEvent {
 	/** 
 	 * characters to be used in the segment boundaries (optional)
 	 * 
-	 * since 3.6
+	 * @since 3.6
 	 */
 	public char[] segmentsChars;
 		
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java
index 26a7ba2..73266ea 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -136,6 +136,12 @@ public CCombo (Composite parent, int style) {
 	filter = new Listener() {
 		public void handleEvent(Event event) {
 			if (isDisposed ()) return;
+			if (event.type == SWT.Selection) {
+				if (event.widget instanceof ScrollBar) {
+					handleScroll(event);
+				}
+				return;
+			}
 			Shell shell = ((Control)event.widget).getShell ();
 			if (shell == CCombo.this.getShell ()) {
 				handleFocus (SWT.FocusOut);
@@ -532,7 +538,9 @@ public void deselectAll () {
 }
 void dropDown (boolean drop) {
 	if (drop == isDropped ()) return;
+	Display display = getDisplay ();
 	if (!drop) {
+		display.removeFilter (SWT.Selection, filter);
 		popup.setVisible (false);
 		if (!isDisposed () && isFocusControl()) {
 			text.setFocus();
@@ -559,7 +567,6 @@ void dropDown (boolean drop) {
 	
 	int index = list.getSelectionIndex ();
 	if (index != -1) list.setTopIndex (index);
-	Display display = getDisplay ();
 	Rectangle listRect = list.getBounds ();
 	Rectangle parentRect = display.map (getParent (), null, getBounds ());
 	Point comboSize = getSize ();
@@ -573,6 +580,14 @@ void dropDown (boolean drop) {
 	popup.setBounds (x, y, width, height);
 	popup.setVisible (true);
 	if (isFocusControl()) list.setFocus ();
+	
+	/*
+	 * Add a filter to listen to scrolling of the parent composite, when the
+	 * drop-down is visible. Remove the filter when drop-down is not
+	 * visible.
+	 */
+	display.removeFilter (SWT.Selection, filter);
+	display.addFilter (SWT.Selection, filter);
 }
 /*
  * Return the lowercase of the first non-'&' character following
@@ -865,6 +880,12 @@ void handleFocus (int type) {
 		}
 	}
 }
+void handleScroll(Event event) {
+	ScrollBar scrollBar = (ScrollBar)event.widget;
+	Control scrollableParent = scrollBar.getParent();
+	if (scrollableParent.equals(list)) return;
+	if (isParentScrolling(scrollableParent)) dropDown(false);
+}
 /**
  * Searches the receiver's list starting at the first item
  * (index 0) until an item is found that is equal to the 
@@ -1023,6 +1044,15 @@ public boolean isFocusControl () {
 	} 
 	return super.isFocusControl ();
 }
+boolean isParentScrolling(Control scrollableParent) {
+	Control parent = this.getParent();
+	while (parent != null) {
+		if (parent.equals(scrollableParent))
+			return true;
+		parent = parent.getParent();
+	}
+	return false;
+}
 void internalLayout (boolean changed) {
 	if (isDropped ()) dropDown (false);
 	Rectangle rect = getClientArea ();
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java
index e8b8ebd..b45797e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java
index 74f29c4..6549c46 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -756,12 +756,17 @@ public boolean getMRUVisible() {
 }
 /**
  * Returns the receiver's renderer.
+ * 
+ * @return the receiver's renderer
  *
  * @exception SWTException <ul>
  *		<li>ERROR_THREAD_INVALID_ACCESS when called from the wrong thread</li>
  *		<li>ERROR_WIDGET_DISPOSED when the widget has been disposed</li>
  *	</ul>
  *
+ * @see #setRenderer(CTabFolderRenderer)
+ * @see CTabFolderRenderer
+ * 
  * @since 3.6
  */
 public CTabFolderRenderer getRenderer() {
@@ -1360,6 +1365,10 @@ void onMouse(Event event) {
 					item.closeImageState = SWT.BACKGROUND;
 					redraw(item.closeRect.x, item.closeRect.y, item.closeRect.width, item.closeRect.height, false);
 				}
+				if ((item.state & SWT.HOT) != 0) {
+					item.state &= ~SWT.HOT;
+					redraw(item.x, item.y, item.width, item.height, false);
+				}
 				if (i == selectedIndex && item.closeImageState != SWT.NONE) {
 					item.closeImageState = SWT.NONE;
 					redraw(item.closeRect.x, item.closeRect.y, item.closeRect.width, item.closeRect.height, false);
@@ -1479,11 +1488,19 @@ void onMouse(Event event) {
 							redraw(item.closeRect.x, item.closeRect.y, item.closeRect.width, item.closeRect.height, false);
 						}
 					}
-				} 
+					if ((item.state & SWT.HOT) == 0) {
+						item.state |= SWT.HOT;
+						redraw(item.x, item.y, item.width, item.height, false);
+					}
+				}
 				if (i != selectedIndex && item.closeImageState != SWT.BACKGROUND && !close) {
 					item.closeImageState = SWT.BACKGROUND;
 					redraw(item.closeRect.x, item.closeRect.y, item.closeRect.width, item.closeRect.height, false);
 				}
+				if ((item.state & SWT.HOT) != 0 && !close) {
+					item.state &= ~SWT.HOT;
+					redraw(item.x, item.y, item.width, item.height, false);
+				}
 				if (i == selectedIndex && item.closeImageState != SWT.NONE && !close) {
 					item.closeImageState = SWT.NONE;
 					redraw(item.closeRect.x, item.closeRect.y, item.closeRect.width, item.closeRect.height, false);
@@ -1694,7 +1711,7 @@ void onPaint(Event event) {
 		for (int i=0; i < items.length; i++) {
 			Rectangle itemBounds = items[i].getBounds();
 			if (i != selectedIndex && event.getBounds().intersects(itemBounds)) {
-				renderer.draw(i, SWT.BACKGROUND | SWT.FOREGROUND, itemBounds, gc);
+				renderer.draw(i, SWT.BACKGROUND | SWT.FOREGROUND | items[i].state , itemBounds, gc);
 			}
 		}
 	}
@@ -1704,7 +1721,7 @@ void onPaint(Event event) {
 	gc.setBackground(gcBackground);	
 	
 	if (selectedIndex != -1) { 
-		renderer.draw(selectedIndex, SWT.SELECTED | SWT.BACKGROUND | SWT.FOREGROUND, items[selectedIndex].getBounds(), gc);
+		renderer.draw(selectedIndex, items[selectedIndex].state | SWT.BACKGROUND | SWT.FOREGROUND, items[selectedIndex].getBounds(), gc);
 	}
 	
 	gc.setFont(gcFont);
@@ -1905,7 +1922,7 @@ public void setBackground (Color color) {
 	redraw();
 }
 /**
- * Specify a gradient of colours to be drawn in the background of the unselected tabs.
+ * Specify a gradient of colors to be drawn in the background of the unselected tabs.
  * For example to draw a gradient that varies from dark blue to blue and then to
  * white, use the following call to setBackground:
  * <pre>
@@ -1921,8 +1938,8 @@ public void setBackground (Color color) {
  *               background gradient. The value <code>null</code> can be used inside the array of 
  *               Color to specify the background color.
  * @param percents an array of integers between 0 and 100 specifying the percent of the width 
- *                 of the widget at which the color should change.  The size of the percents array must be one 
- *                 less than the size of the colors array.
+ *                 of the widget at which the color should change.  The size of the <code>percents</code>
+ *                 array must be one less than the size of the <code>colors</code> array.
  * 
  * @exception SWTException <ul>
  *		<li>ERROR_THREAD_INVALID_ACCESS when called from the wrong thread</li>
@@ -1935,7 +1952,7 @@ public void setBackground(Color[] colors, int[] percents) {
 	setBackground(colors, percents, false);
 }
 /**
- * Specify a gradient of colours to be drawn in the background of the unselected tab.
+ * Specify a gradient of colors to be drawn in the background of the unselected tab.
  * For example to draw a vertical gradient that varies from dark blue to blue and then to
  * white, use the following call to setBackground:
  * <pre>
@@ -1951,10 +1968,10 @@ public void setBackground(Color[] colors, int[] percents) {
  *               background gradient. The value <code>null</code> can be used inside the array of 
  *               Color to specify the background color.
  * @param percents an array of integers between 0 and 100 specifying the percent of the width 
- *                 of the widget at which the color should change.  The size of the percents array must be one 
- *                 less than the size of the colors array.
+ *                 of the widget at which the color should change.  The size of the <code>percents</code>
+ *                 array must be one less than the size of the <code>colors</code> array.
  * 
- * @param vertical indicate the direction of the gradient.  True is vertical and false is horizontal. 
+ * @param vertical indicate the direction of the gradient. <code>True</code> is vertical and <code>false</code> is horizontal. 
  * 
  * @exception SWTException <ul>
  *		<li>ERROR_THREAD_INVALID_ACCESS when called from the wrong thread</li>
@@ -2631,6 +2648,8 @@ public void setMRUVisible(boolean show) {
  *		<li>ERROR_WIDGET_DISPOSED when the widget has been disposed</li>
  *	</ul>
  *
+ * @see CTabFolderRenderer
+ * 
  * @since 3.6
  */
 public void setRenderer(CTabFolderRenderer renderer) {
@@ -2691,9 +2710,11 @@ public void setSelection(int index) {
 	selectedIndex = index;
 	if (oldIndex != -1) {
 		items[oldIndex].closeImageState = SWT.BACKGROUND;
+		items[oldIndex].state &= ~SWT.SELECTED;
 	}
 	selection.closeImageState = SWT.NONE;
 	selection.showing = false;
+	selection.state |= SWT.SELECTED;
 
 	Control newControl = selection.control;
 	Control oldControl = null;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java
index 02b09c5..a9fbf02 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java
index 13c7ee3..1a05182 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java	
@@ -193,7 +193,7 @@ public class CTabFolderRenderer {
 	 * </ul>
 	 * </p>
 	 * <p>
-	 * The state parameter may be one of the following: 
+	 * The <code>state</code> parameter may be one of the following: 
 	 * <ul>
 	 * <li>SWT.NONE</li>
 	 * <li>SWT.SELECTED - whether the part is selected</li>
@@ -479,8 +479,8 @@ public class CTabFolderRenderer {
 	}
 	
 	/**
-	 * Draw a specified part of the CTabFolder using the provided bounds and GC. 
-	 * <p>The valid CTabFolder part constants are:
+	 * Draw a specified <code>part</code> of the CTabFolder using the provided <code>bounds</code> and <code>GC</code>. 
+	 * <p>The valid CTabFolder <code>part</code> constants are:
 	 * <ul>
 	 * <li>PART_BODY - the entire body of the CTabFolder</li>
 	 * <li>PART_HEADER - the upper tab area of the CTabFolder</li>
@@ -494,7 +494,7 @@ public class CTabFolderRenderer {
 	 * </ul>
 	 * </p>
 	 * <p>
-	 * The state parameter may be a combination of: 
+	 * The <code>state</code> parameter may be a combination of: 
 	 * <ul>
 	 * <li>SWT.BACKGROUND - whether the background should be drawn</li>
 	 * <li>SWT.FOREGROUND - whether the foreground should be drawn</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java
index d32dece..1d1185d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,6 +48,7 @@ public class CTabItem extends Item {
 	
 	Rectangle closeRect = new Rectangle(0, 0, 0, 0);
 	int closeImageState = SWT.BACKGROUND;
+	int state = SWT.NONE;
 	boolean showClose = false;
 	boolean showing = false;
 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java
index 2bf38c9..bfa853e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java
index 8749173..afa0ad5 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java
index c683675..0bb24e7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -4230,7 +4230,7 @@ public int getLineIndex(int y) {
 	return line;
 }
 /**
- * Returns the tab stops of the line at the given index.
+ * Returns the tab stops of the line at the given <code>index</code>.
  * 
  * @param index the index of the line
  * 
@@ -4262,7 +4262,7 @@ public int[] getLineTabStops(int index) {
 	return result;
 }
 /**
- * Returns the wrap indentation of the line at the given index.
+ * Returns the wrap indentation of the line at the given <code>index</code>.
  * 
  * @param index the index of the line
  * 
@@ -5331,6 +5331,9 @@ int getWrapWidth () {
 	return -1;
 }
 int getWordNext (int offset, int movement) {
+	return getWordNext(offset, movement, false);
+}
+int getWordNext (int offset, int movement, boolean ignoreListener) {
 	int newOffset, lineOffset;
 	String lineText;
 	if (offset >= getCharCount()) {
@@ -5343,7 +5346,7 @@ int getWordNext (int offset, int movement) {
 		lineOffset = content.getOffsetAtLine(lineIndex);
 		lineText = content.getLine(lineIndex);
 		int lineLength = lineText.length();
-		if (offset == lineOffset + lineLength) {
+		if (offset >= lineOffset + lineLength) {
 			newOffset = content.getOffsetAtLine(lineIndex + 1);
 		} else {
 			TextLayout layout = renderer.getTextLayout(lineIndex);
@@ -5351,9 +5354,13 @@ int getWordNext (int offset, int movement) {
 			renderer.disposeTextLayout(layout);
 		}
 	}
+	if (ignoreListener) return newOffset; 
 	return sendWordBoundaryEvent(WordNext, movement, offset, newOffset, lineText, lineOffset);
 }
 int getWordPrevious(int offset, int movement) {
+	return getWordPrevious(offset, movement, false); 
+}
+int getWordPrevious(int offset, int movement, boolean ignoreListener) {
 	int newOffset, lineOffset;
 	String lineText;
 	if (offset <= 0) {
@@ -5370,11 +5377,13 @@ int getWordPrevious(int offset, int movement) {
 			int nextLineOffset = content.getOffsetAtLine(lineIndex - 1); 
 			newOffset = nextLineOffset + nextLineText.length();
 		} else {
+			int layoutOffset = Math.min(offset - lineOffset, lineText.length());
 			TextLayout layout = renderer.getTextLayout(lineIndex);
-			newOffset = lineOffset + layout.getPreviousOffset(offset - lineOffset, movement);
+			newOffset = lineOffset + layout.getPreviousOffset(layoutOffset, movement);
 			renderer.disposeTextLayout(layout); 
 		}
 	}
+	if (ignoreListener) return newOffset;
 	return sendWordBoundaryEvent(WordPrevious, movement, offset, newOffset, lineText, lineOffset);
 }
 /**
@@ -6577,22 +6586,30 @@ void initializeAccessible() {
 					int newCount = 0;
 					if (count > 0) {
 						while (count-- > 0) { 
-							int newEnd = st.getWordNext(end, SWT.MOVEMENT_WORD_START);
-							if (newEnd == contentLength) break;
+							int newEnd = st.getWordNext(end, SWT.MOVEMENT_WORD_START, true);
 							if (newEnd == end) break;
 							newCount++;
 							end = newEnd;
 						}
 						start = end;
-						end = st.getWordNext(start, SWT.MOVEMENT_WORD_END);
+						end = st.getWordNext(start, SWT.MOVEMENT_WORD_END, true);
 					} else {
-						while (count++ <= 0) {
-							int newStart = st.getWordPrevious(start, SWT.MOVEMENT_WORD_START);
+						if (st.getWordPrevious(Math.min(start + 1, contentLength), SWT.MOVEMENT_WORD_START, true) == start) {
+							//start is a word start already
+							count++;
+						}
+						while (count <= 0) {
+							int newStart = st.getWordPrevious(start, SWT.MOVEMENT_WORD_START, true);
 							if (newStart == start) break;
+							count++;
 							start = newStart;
 							if (count != 0) newCount--;
 						}
-						end = st.getWordNext(start, SWT.MOVEMENT_WORD_END);
+						if (count <= 0 && start == 0) {
+							end = start;
+						} else {
+							end = st.getWordNext(start, SWT.MOVEMENT_WORD_END, true);
+						}
 					}
 					count = newCount;
 					break;
@@ -6685,31 +6702,26 @@ void initializeAccessible() {
 			if (!isListening(LineGetStyle) && st.renderer.styleCount == 0) {
 				e.start = 0;
 				e.end = contentLength;
+				e.textStyle = new TextStyle(st.getFont(), st.foreground, st.background);
 				return;
 			}
 			int offset = Math.max(0, Math.min(e.offset, contentLength - 1));
 			int lineIndex = st.getLineAtOffset(offset);
 			int lineOffset = st.getOffsetAtLine(lineIndex);
-			int lineLength = st.getContent().getLine(lineIndex).length();
 			int lineCount = st.getLineCount();
 			offset = offset - lineOffset;
-			if (offset >= lineLength) {
-				e.start = lineOffset + lineLength;
-				if (lineIndex + 1 < lineCount) {
-					e.end = st.getOffsetAtLine(lineIndex + 1);
-				} else  {
-					e.end = contentLength;
-				}
-				return;
-			}
+			
 			TextLayout layout = st.renderer.getTextLayout(lineIndex);
-			e.textStyle = layout.getStyle(offset);
+			int lineLength = layout.getText().length();
+			if (lineLength > 0) {
+				e.textStyle = layout.getStyle(Math.max(0, Math.min(offset, lineLength - 1)));
+			}
 			
 			// If no override info available, use defaults. Don't supply default colors, though.
 			if (e.textStyle == null) {
 				e.textStyle = new TextStyle(st.getFont(), st.foreground, st.background);
 			} else {
-				if (e.textStyle.foreground == null || e.textStyle.background == null) {
+				if (e.textStyle.foreground == null || e.textStyle.background == null || e.textStyle.font == null) {
 					TextStyle textStyle = new TextStyle(e.textStyle);
 					if (textStyle.foreground == null) textStyle.foreground = st.foreground;
 					if (textStyle.background == null) textStyle.background = st.background;
@@ -6718,6 +6730,17 @@ void initializeAccessible() {
 				}
 			}
 			
+			//offset at line delimiter case
+			if (offset >= lineLength) {
+				e.start = lineOffset + lineLength;
+				if (lineIndex + 1 < lineCount) {
+					e.end = st.getOffsetAtLine(lineIndex + 1);
+				} else  {
+					e.end = contentLength;
+				}
+				return;
+			}
+			
 			int[] ranges = layout.getRanges();
 			st.renderer.disposeTextLayout(layout);
 			int index = 0;
@@ -8343,7 +8366,6 @@ void setCaretLocation(Point location, int direction) {
 		} else {
 			caret.setLocation(location);
 		}
-		getAccessible().textCaretMoved(getCaretOffset());
 		if (direction != caretDirection) {
 			caretDirection = direction;
 			if (isDefaultCaret) {
@@ -8412,6 +8434,7 @@ void setCaretOffset(int offset, int alignment) {
 			event.end = caretOffset;
 			notifyListeners(CaretMoved, event);
 		}
+		getAccessible().textCaretMoved(caretOffset);
 	}
 	if (alignment != SWT.DEFAULT) {
 		caretAlignment = alignment;
@@ -9027,7 +9050,7 @@ public void setLineSpacing(int lineSpacing) {
 /**
  * Sets the tab stops of the specified lines.
  * <p>
- * Should not be called if a LineStyleListener has been set since the listener 
+ * Should not be called if a <code>LineStyleListener</code> has been set since the listener 
  * maintains the line attributes.
  * </p><p>
  * All line attributes are maintained relative to the line text, not the 
@@ -9084,7 +9107,7 @@ public void setLineTabStops(int startLine, int lineCount, int[] tabStops) {
 /**
  * Sets the wrap indent of the specified lines.
  * <p>
- * Should not be called if a LineStyleListener has been set since the listener 
+ * Should not be called if a <code>LineStyleListener</code> has been set since the listener 
  * maintains the line attributes.
  * </p><p>
  * All line attributes are maintained relative to the line text, not the 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java
index dae3334..98ee4ef 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java
index a8dd75e..d9f026b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextRenderer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextRenderer.java
index 6afdea9..f1e2fba 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextRenderer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextRenderer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/DragSource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/DragSource.java
index 88e6f83..f1f8ff4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/DragSource.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/DragSource.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TextTransfer.java
index f9c17e8..6ad9d48 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TextTransfer.java	
@@ -25,6 +25,12 @@ import org.eclipse.swt.internal.carbon.OS;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TransferData.java
index d1845e5..bd4dc37 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DragSource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DragSource.java
index 0030764..28d0696 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DragSource.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DragSource.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DropTarget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DropTarget.java
index 59e85f7..46b5e46 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DropTarget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/DropTarget.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TextTransfer.java
index ac7ab05..e69e101 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TextTransfer.java	
@@ -24,6 +24,12 @@ import org.eclipse.swt.internal.cocoa.*;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TransferData.java
index 2ffa344..2b3ee68 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/cocoa/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java
index 732438c..0cfec0a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java
index a4ba990..9f30c84 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TextTransfer.java
index 21ef001..2ab0e06 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TextTransfer.java	
@@ -23,6 +23,12 @@ package org.eclipse.swt.dnd;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TransferData.java
index 8620206..7a0dd5f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/emulated/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java
index bdc2d39..1c53f72 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TableDropTargetEffect.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TableDropTargetEffect.java
index a00e53b..dc81136 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TableDropTargetEffect.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TableDropTargetEffect.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java
index 6a6dabc..63ce761 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java	
@@ -25,6 +25,12 @@ import org.eclipse.swt.internal.gtk.*;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java
index 086332b..dc8fcfb 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java
index da99125..f61960f 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java	
@@ -27,6 +27,12 @@ import org.eclipse.swt.internal.motif.XTextProperty;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java
index e10c9e1..60d6bef 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java
index 568f1e5..056d74a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java	
@@ -26,6 +26,12 @@ import org.eclipse.swt.internal.photon.OS;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java
index bf5c759..03766a9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java
index bfe4acb..b4f06ff 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TableDropTargetEffect.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TableDropTargetEffect.java
index 7bc1db5..c53d8e5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TableDropTargetEffect.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TableDropTargetEffect.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java
index ece5a37..97b3a17 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java
index 1a1354c..aa9fbe7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TextTransfer.java
index 3dfc44c..8fef1f9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TextTransfer.java	
@@ -25,6 +25,12 @@ import org.eclipse.swt.internal.wpf.*;
  *     String textData = "Hello World";
  * </code></pre>
  * 
+ * <p>Note the <code>TextTransfer</code> does not change the content of the text
+ * data. For a better integration with the platform, the application should convert
+ * the line delimiters used in the text data to the standard line delimiter used by the
+ * platform.
+ * </p>
+ * 
  * @see Transfer
  */
 public class TextTransfer extends ByteArrayTransfer {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TransferData.java
index b3a88b9..50c909b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TransferData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/wpf/org/eclipse/swt/dnd/TransferData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
index f93a92e..83933ff 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
index d91ba3e..3f1848c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/swt_xpcom.rc b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/swt_xpcom.rc
index 045e1d2..f5598d4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/swt_xpcom.rc	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/swt_xpcom.rc	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,9 +11,6 @@
  
 #include "windows.h"
 
-#define MANIFEST_RESOURCE_ID 2
-MANIFEST_RESOURCE_ID RT_MANIFEST "xpcom.manifest"
-
 VS_VERSION_INFO VERSIONINFO
  FILEVERSION SWT_COMMA_VERSION
  PRODUCTVERSION 0,0,0,0
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.manifest b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.manifest
deleted file mode 100644
index bfd2e0a..0000000
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.manifest	
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SWTmozilla.javaw" type="win32"/><description>Standard Widget Toolkit</description><dependency><dependentAssembly><assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='*' publicKeyToken='1fc8b3b9a1e18e3b'/></dependentAssembly></dependency></assembly>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java
index 5514fb0..ecb412a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java
index 4340c70..3114c9a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java
index 3ad4903..3ec20e7 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java
index 3a5e3ad..8a5d967 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
index eb2532f..e02e7f2 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,7 @@ class Mozilla extends WebBrowser {
 	XPCOMObject tooltipListener;
 	XPCOMObject domEventListener;
 	XPCOMObject badCertListener;
+
 	int chromeFlags = nsIWebBrowserChrome.CHROME_DEFAULT;
 	int registerFunctionsOnState = 0;
 	int refCount, lastKeyCode, lastCharCode, authCount;
@@ -62,6 +63,8 @@ class Mozilla extends WebBrowser {
 	static Hashtable AllFunctions = new Hashtable ();
 	static Listener DisplayListener;
 	static boolean Initialized, IsPre_1_8, IsPre_1_9, PerformedVersionCheck, XPCOMWasGlued, XPCOMInitWasGlued;
+	static String oldProxyHostFTP, oldProxyHostHTTP, oldProxyHostSSL;
+	static int oldProxyPortFTP = -1, oldProxyPortHTTP = -1, oldProxyPortSSL = -1, oldProxyType = -1;
 
 	/* XULRunner detect constants */
 	static final String GRERANGE_LOWER = "1.8.1.2"; //$NON-NLS-1$
@@ -71,6 +74,7 @@ class Mozilla extends WebBrowser {
 	static final boolean UpperRangeInclusive = true;
 
 	static final int MAX_PORT = 65535;
+	static final String DEFAULTVALUE_STRING = "default"; //$NON-NLS-1$
 	static final String SEPARATOR_OS = System.getProperty ("file.separator"); //$NON-NLS-1$
 	static final String ABOUT_BLANK = "about:blank"; //$NON-NLS-1$
 	static final String DISPOSE_LISTENER_HOOKED = "org.eclipse.swt.browser.Mozilla.disposeListenerHooked"; //$NON-NLS-1$
@@ -158,8 +162,10 @@ class Mozilla extends WebBrowser {
 
 					nsIPrefService prefService = new nsIPrefService (result[0]);
 					result[0] = 0;
+					revertProxySettings (prefService);
 					rc = prefService.SavePrefFile (prefFile.getAddress ());
 					prefService.Release ();
+
 					prefFile.Release ();
 				}
 				serviceManager.Release ();
@@ -201,6 +207,112 @@ class Mozilla extends WebBrowser {
 				}
 				Initialized = false;
 			}
+
+			void revertProxySettings (nsIPrefService prefService) {
+				/* the proxy settings are typically not set, so check for this first */
+				boolean hostSet = oldProxyHostFTP != null || oldProxyHostHTTP != null || oldProxyHostSSL != null;
+				if (!hostSet && oldProxyPortFTP == -1 && oldProxyPortHTTP == -1 && oldProxyPortSSL == -1 && oldProxyType == -1) return;
+
+				int /*long*/[] result = new int /*long*/[1];
+				byte[] buffer = new byte[1];
+				int rc = prefService.GetBranch (buffer, result);	/* empty buffer denotes root preference level */
+				if (rc != XPCOM.NS_OK) error (rc);
+				if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+				nsIPrefBranch prefBranch = new nsIPrefBranch (result[0]);
+				result[0] = 0;
+
+				if (hostSet) {
+					rc = XPCOM.NS_GetComponentManager (result);
+					if (rc != XPCOM.NS_OK) error (rc);
+					if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+					nsIComponentManager componentManager = new nsIComponentManager (result[0]);
+					result[0] = 0;
+
+					byte[] contractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFLOCALIZEDSTRING_CONTRACTID, true);
+					rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+					if (rc != XPCOM.NS_OK) error (rc);
+					if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+					nsIPrefLocalizedString localizedString = new nsIPrefLocalizedString (result[0]);
+					result[0] = 0;
+
+					if (oldProxyHostFTP != null) {
+						buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_FTP, true);
+						if (oldProxyHostFTP.equals (DEFAULTVALUE_STRING)) {
+							rc = prefBranch.ClearUserPref (buffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+						} else {
+							int length = oldProxyHostFTP.length ();
+							char[] charBuffer = new char[length];
+							oldProxyHostFTP.getChars (0, length, charBuffer, 0);
+							rc = localizedString.SetDataWithLength (length, charBuffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+							rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+							if (rc != XPCOM.NS_OK) error (rc);
+						}
+					}
+
+					if (oldProxyHostHTTP != null) {
+						buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_HTTP, true);
+						if (oldProxyHostHTTP.equals (DEFAULTVALUE_STRING)) {
+							rc = prefBranch.ClearUserPref (buffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+						} else {
+							int length = oldProxyHostHTTP.length ();
+							char[] charBuffer = new char[length];
+							oldProxyHostHTTP.getChars (0, length, charBuffer, 0);
+							rc = localizedString.SetDataWithLength (length, charBuffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+							rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+							if (rc != XPCOM.NS_OK) error (rc);
+						}
+					}
+
+					if (oldProxyHostSSL != null) {
+						buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_SSL, true);
+						if (oldProxyHostSSL.equals (DEFAULTVALUE_STRING)) {
+							rc = prefBranch.ClearUserPref (buffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+						} else {
+							int length = oldProxyHostSSL.length ();
+							char[] charBuffer = new char[length];
+							oldProxyHostSSL.getChars (0, length, charBuffer, 0);
+							rc = localizedString.SetDataWithLength (length, charBuffer);
+							if (rc != XPCOM.NS_OK) error (rc);
+							rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+							if (rc != XPCOM.NS_OK) error (rc);
+						}
+					}
+
+					localizedString.Release ();
+					componentManager.Release ();
+				}
+
+				if (oldProxyPortFTP != -1) {
+					buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_FTP, true);
+					rc = prefBranch.SetIntPref (buffer, oldProxyPortFTP);
+					if (rc != XPCOM.NS_OK) error (rc);
+				}
+				if (oldProxyPortHTTP != -1) {
+					buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_HTTP, true);
+					rc = prefBranch.SetIntPref (buffer, oldProxyPortHTTP);
+					if (rc != XPCOM.NS_OK) error (rc);
+				}
+				if (oldProxyPortSSL != -1) {
+					buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_SSL, true);
+					rc = prefBranch.SetIntPref (buffer, oldProxyPortSSL);
+					if (rc != XPCOM.NS_OK) error (rc);
+				}
+				if (oldProxyType != -1) {
+					buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYTYPE, true);
+					rc = prefBranch.SetIntPref (buffer, oldProxyType);
+					if (rc != XPCOM.NS_OK) error (rc);
+				}
+
+				prefBranch.Release ();
+			}
 		};
 
 		MozillaClearSessions = new Runnable () {
@@ -1869,37 +1981,109 @@ void initPreferences (nsIServiceManager serviceManager, nsIComponentManager comp
 
 		localizedString = new nsIPrefLocalizedString (result[0]);
 		result[0] = 0;
+		
 		int length = proxyHost.length ();
-		char[] charBuffer = new char[length + 1];
+		char[] charBuffer = new char[length];
 		proxyHost.getChars (0, length, charBuffer, 0);
 		rc = localizedString.SetDataWithLength (length, charBuffer);
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_FTP, true);
+		rc = prefBranch.GetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+		if (rc == XPCOM.NS_OK && result[0] != 0) {
+			nsIPrefLocalizedString value = new nsIPrefLocalizedString (result[0]);
+			result[0] = 0;
+			rc = value.ToString (result);
+			if (rc != XPCOM.NS_OK) error (rc);
+			if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+			length = XPCOM.strlen_PRUnichar (result[0]);
+			char[] dest = new char[length];
+			XPCOM.memmove (dest, result[0], length * 2);
+			oldProxyHostFTP = new String (dest);
+		} else {
+			/* value is default */
+			oldProxyHostFTP = DEFAULTVALUE_STRING;
+		}
+		result[0] = 0;
 		rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_HTTP, true);
+		rc = prefBranch.GetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+		if (rc == XPCOM.NS_OK && result[0] != 0) {
+			nsIPrefLocalizedString value = new nsIPrefLocalizedString (result[0]);
+			result[0] = 0;
+			rc = value.ToString (result);
+			if (rc != XPCOM.NS_OK) error (rc);
+			if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+			length = XPCOM.strlen_PRUnichar (result[0]);
+			char[] dest = new char[length];
+			XPCOM.memmove (dest, result[0], length * 2);
+			oldProxyHostHTTP = new String (dest);
+		} else {
+			/* value is default */
+			oldProxyHostHTTP = DEFAULTVALUE_STRING;
+		}
+		result[0] = 0;
 		rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_SSL, true);
+		rc = prefBranch.GetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+		if (rc == XPCOM.NS_OK && result[0] != 0) {
+			nsIPrefLocalizedString value = new nsIPrefLocalizedString (result[0]);
+			result[0] = 0;
+			rc = value.ToString (result);
+			if (rc != XPCOM.NS_OK) error (rc);
+			if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+			length = XPCOM.strlen_PRUnichar (result[0]);
+			char[] dest = new char[length];
+			XPCOM.memmove (dest, result[0], length * 2);
+			oldProxyHostSSL = new String (dest);
+		} else {
+			/* value is default */
+			oldProxyHostSSL = DEFAULTVALUE_STRING;
+		}
+		result[0] = 0;
 		rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		localizedString.Release ();
 	}
 
+	int[] intResult = new int[1]; /* C long*/
 	if (port != -1) {
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_FTP, true);
+		rc = prefBranch.GetIntPref (buffer, intResult);
+		if (rc != XPCOM.NS_OK) error (rc);
+		oldProxyPortFTP = intResult[0];
+		intResult[0] = 0;
 		rc = prefBranch.SetIntPref (buffer, port);
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_HTTP, true);
+		rc = prefBranch.GetIntPref (buffer, intResult);
+		if (rc != XPCOM.NS_OK) error (rc);
+		oldProxyPortHTTP = intResult[0];
+		intResult[0] = 0;
 		rc = prefBranch.SetIntPref (buffer, port);
 		if (rc != XPCOM.NS_OK) error (rc);
+
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_SSL, true);
+		rc = prefBranch.GetIntPref (buffer, intResult);
+		if (rc != XPCOM.NS_OK) error (rc);
+		oldProxyPortSSL = intResult[0];
+		intResult[0] = 0;
 		rc = prefBranch.SetIntPref (buffer, port);
 		if (rc != XPCOM.NS_OK) error (rc);
 	}
 
 	if (proxyHost != null || port != -1) {
 		buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYTYPE, true);
+		rc = prefBranch.GetIntPref (buffer, intResult);
+		if (rc != XPCOM.NS_OK) error (rc);
+		oldProxyType = intResult[0];
+		intResult[0] = 0;
 		rc = prefBranch.SetIntPref (buffer, 1);
 		if (rc != XPCOM.NS_OK) error (rc);
 	}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java
index f280e8f..02e0946 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java
index 88d9ee3..7f1d718 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java
index 10257ae..4a176e0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java
index a5fd6d8..716aab3 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java	
@@ -54,24 +54,68 @@ public boolean Equals(nsID other) {
 	return result;
 }
 
-public void Parse (String aIDStr) {
-	if (aIDStr == null) throw new Error ();
+public void Parse(String aIDStr) {
+	if(aIDStr == null) throw new Error ();
 	int i = 0;
-	for (; i < 8; i++) m0 = (m0 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16);
+	for (; i < 8; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m0 = (m0 << 4) + digit;
+	}
 	if (aIDStr.charAt (i++) != '-') throw new Error ();
-	for (; i < 13; i++) m1 = (short)((m1 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+	for (; i < 13; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m1 = (short)((m1 << 4) + digit);
+	}
 	if (aIDStr.charAt (i++) != '-') throw new Error ();
-	for (; i < 18; i++) m2 = (short)((m2 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+	for (; i < 18; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m2 = (short)((m2 << 4) + digit);
+	}
 	if (aIDStr.charAt (i++) != '-') throw new Error ();
-	for (; i < 21; i++) m3[0] = (byte)((m3[0] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 23; i++) m3[1] = (byte)((m3[1] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+	for (; i < 21; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[0] = (byte)((m3[0] << 4) + digit);
+	}
+	for (; i < 23; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[1] = (byte)((m3[1] << 4) + digit);
+	}
 	if (aIDStr.charAt (i++) != '-') throw new Error ();
-	for (; i < 26; i++) m3[2] = (byte)((m3[2] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 28; i++) m3[3] = (byte)((m3[3] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 30; i++) m3[4] = (byte)((m3[4] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 32; i++) m3[5] = (byte)((m3[5] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 34; i++) m3[6] = (byte)((m3[6] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
-	for (; i < 36; i++) m3[7] = (byte)((m3[7] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+	for (; i < 26; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[2] = (byte)((m3[2] << 4) + digit);
+	}
+	for (; i < 28; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[3] = (byte)((m3[3] << 4) + digit);
+	}
+	for (; i < 30; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[4] = (byte)((m3[4] << 4) + digit);
+	}
+	for (; i < 32; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[5] = (byte)((m3[5] << 4) + digit);
+	}
+	for (; i < 34; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[6] = (byte)((m3[6] << 4) + digit);
+	}
+	for (; i < 36; i++) {
+		int digit = Character.digit (aIDStr.charAt (i), 16);
+		if (digit == -1) throw new Error ();
+		m3[7] = (byte)((m3[7] << 4) + digit);
+	}
 }
 
-}
\ No newline at end of file
+}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
index d5ea150..2b5f92e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
index 32acf9b..33a3a91 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
index afb7393..8317a40 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java
index 34a43ad..96856e3 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -127,7 +127,7 @@ public OleAutomation(OleClientSite clientSite) {
 	}
 }
 /**
- * Creates an OleAutomation object for the specified progID.
+ * Creates an OleAutomation object for the specified <code>progID</code>.
  *
  * @param progId the unique program identifier of an OLE Document application; 
  *               the value of the ProgID key or the value of the VersionIndependentProgID key specified
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java
index da112bf..a54b742 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java
index 72623c1..1995dc9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java
index 6b9c55e..0cc4de1 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java
index 47aa833..26c2ec7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c
index 5cc6620..b7b7438 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/make_macosx.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/make_macosx.mak
index 7a41588..bf0cf51 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/make_macosx.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/make_macosx.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c
index bc05218..dd6c2e2 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c	
@@ -9711,6 +9711,25 @@ fail:
 }
 #endif
 
+#ifndef NO_LSCopyItemAttribute
+JNIEXPORT jint JNICALL OS_NATIVE(LSCopyItemAttribute)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jbyte *lparg0=NULL;
+	jint *lparg3=NULL;
+	jint rc = 0;
+	OS_NATIVE_ENTER(env, that, LSCopyItemAttribute_FUNC);
+	if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
+	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
+	rc = (jint)LSCopyItemAttribute((const FSRef *)lparg0, (LSRolesMask)arg1, (CFStringRef)arg2, (CFTypeRef *)lparg3);
+fail:
+	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	OS_NATIVE_EXIT(env, that, LSCopyItemAttribute_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_LSFindApplicationForInfo
 JNIEXPORT jint JNICALL OS_NATIVE(LSFindApplicationForInfo)
 	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3, jintArray arg4)
@@ -13585,6 +13604,18 @@ fail:
 }
 #endif
 
+#ifndef NO_UTTypeConformsTo
+JNIEXPORT jboolean JNICALL OS_NATIVE(UTTypeConformsTo)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc = 0;
+	OS_NATIVE_ENTER(env, that, UTTypeConformsTo_FUNC);
+	rc = (jboolean)UTTypeConformsTo((CFStringRef)arg0, (CFStringRef)arg1);
+	OS_NATIVE_EXIT(env, that, UTTypeConformsTo_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_UTTypeCreateAllIdentifiersForTag
 JNIEXPORT jint JNICALL OS_NATIVE(UTTypeCreateAllIdentifiersForTag)
 	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
@@ -13609,6 +13640,18 @@ JNIEXPORT jint JNICALL OS_NATIVE(UTTypeCreatePreferredIdentifierForTag)
 }
 #endif
 
+#ifndef NO_UTTypeEqual
+JNIEXPORT jboolean JNICALL OS_NATIVE(UTTypeEqual)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc = 0;
+	OS_NATIVE_ENTER(env, that, UTTypeEqual_FUNC);
+	rc = (jboolean)UTTypeEqual((CFStringRef)arg0, (CFStringRef)arg1);
+	OS_NATIVE_EXIT(env, that, UTTypeEqual_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_UnionRect
 JNIEXPORT void JNICALL OS_NATIVE(UnionRect)
 	(JNIEnv *env, jclass that, jobject arg0, jobject arg1, jobject arg2)
@@ -13860,6 +13903,18 @@ JNIEXPORT jint JNICALL OS_NATIVE(kHIViewWindowContentID)
 }
 #endif
 
+#ifndef NO_kLSItemContentType
+JNIEXPORT jint JNICALL OS_NATIVE(kLSItemContentType)
+	(JNIEnv *env, jclass that)
+{
+	jint rc = 0;
+	OS_NATIVE_ENTER(env, that, kLSItemContentType_FUNC);
+	rc = (jint)kLSItemContentType;
+	OS_NATIVE_EXIT(env, that, kLSItemContentType_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_kPMDocumentFormatPDF
 JNIEXPORT jint JNICALL OS_NATIVE(kPMDocumentFormatPDF)
 	(JNIEnv *env, jclass that)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.h
index faae7fa..e8664d0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_custom.c
index 75f4a51..4b2cd36 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_custom.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_custom.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.c
index 2f981e2..be92b38 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.c	
@@ -14,8 +14,8 @@
 
 #ifdef NATIVE_STATS
 
-int OS_nativeFunctionCount = 1006;
-int OS_nativeFunctionCallCount[1006];
+int OS_nativeFunctionCount = 1010;
+int OS_nativeFunctionCallCount[1010];
 char * OS_nativeFunctionNames[] = {
 	"AECoerceDesc",
 	"AECountItems",
@@ -691,6 +691,7 @@ char * OS_nativeFunctionNames[] = {
 	"LMGetKbdType",
 	"LSCopyAllRoleHandlersForContentType",
 	"LSCopyDisplayNameForRef",
+	"LSCopyItemAttribute",
 	"LSFindApplicationForInfo",
 	"LSGetApplicationForInfo",
 	"LSOpenApplication",
@@ -976,8 +977,10 @@ char * OS_nativeFunctionNames[] = {
 	"TrackDrag",
 	"TrackMouseLocationWithOptions",
 	"UCKeyTranslate",
+	"UTTypeConformsTo",
 	"UTTypeCreateAllIdentifiersForTag",
 	"UTTypeCreatePreferredIdentifierForTag",
+	"UTTypeEqual",
 	"UnionRect",
 	"UnionRgn",
 	"UpdateDataBrowserItems",
@@ -998,6 +1001,7 @@ char * OS_nativeFunctionNames[] = {
 	"kFontPanelAttributeValuesKey",
 	"kFontPanelAttributesKey",
 	"kHIViewWindowContentID",
+	"kLSItemContentType",
 	"kPMDocumentFormatPDF",
 	"kPMGraphicsContextCoreGraphics",
 	"kUTTagClassFilenameExtension",
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.h
index 2f941d0..338e659 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/os_stats.h	
@@ -699,6 +699,7 @@ typedef enum {
 	LMGetKbdType_FUNC,
 	LSCopyAllRoleHandlersForContentType_FUNC,
 	LSCopyDisplayNameForRef_FUNC,
+	LSCopyItemAttribute_FUNC,
 	LSFindApplicationForInfo_FUNC,
 	LSGetApplicationForInfo_FUNC,
 	LSOpenApplication_FUNC,
@@ -984,8 +985,10 @@ typedef enum {
 	TrackDrag_FUNC,
 	TrackMouseLocationWithOptions_FUNC,
 	UCKeyTranslate_FUNC,
+	UTTypeConformsTo_FUNC,
 	UTTypeCreateAllIdentifiersForTag_FUNC,
 	UTTypeCreatePreferredIdentifierForTag_FUNC,
+	UTTypeEqual_FUNC,
 	UnionRect_FUNC,
 	UnionRgn_FUNC,
 	UpdateDataBrowserItems_FUNC,
@@ -1006,6 +1009,7 @@ typedef enum {
 	kFontPanelAttributeValuesKey_FUNC,
 	kFontPanelAttributesKey_FUNC,
 	kHIViewWindowContentID_FUNC,
+	kLSItemContentType_FUNC,
 	kPMDocumentFormatPDF_FUNC,
 	kPMGraphicsContextCoreGraphics_FUNC,
 	kUTTagClassFilenameExtension_FUNC,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java
index f83faf8..d48cd8a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java	
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2003, 2009 IBM Corp.
+ * Copyright (c) 2003, 2010 IBM Corp.
  * Portions Copyright (c) 1983-2002, Apple Computer, Inc.
  *
  * All rights reserved.  This program and the accompanying materials
@@ -1092,6 +1092,8 @@ public static final native int kFontPanelAttributeSizesKey();
 /** @method flags=const */
 public static final native int kFontPanelAttributeValuesKey();	
 /** @method flags=const */
+public static final native int kLSItemContentType();
+/** @method flags=const */
 public static final native int kUTTagClassFilenameExtension();
 /** @method flags=const address */
 public static final native int kHIViewWindowContentID();
@@ -3981,6 +3983,13 @@ public static final native int LSFindApplicationForInfo(int inCreator, int inBun
  */
 public static final native int LSCopyAllRoleHandlersForContentType(int inContentType, int inRoleMask);
 /**
+ * @param inItem cast=(const FSRef *)
+ * @param inRoles cast=(LSRolesMask)
+ * @param inAttributeName cast=(CFStringRef)
+ * @param outValue cast=(CFTypeRef *)
+ */
+public static final native int  LSCopyItemAttribute (byte[] inItem, int inRoles, int inAttributeName, int[] outValue);
+/**
  * @param inType cast=(OSType)
  * @param inCreator cast=(OSType)
  * @param inExtension cast=(CFStringRef)
@@ -5339,6 +5348,11 @@ public static final native int TrackDrag(int theDrag, EventRecord theEvent, int
  */
 public static final native int TrackMouseLocationWithOptions(int inPort, int inOptions, double inTime, Point outPt, int [] outModifiers, short[] outResult);
 /**
+ * @param inUTI cast=(CFStringRef)
+ * @param inConformsToUTI cast=(CFStringRef)
+ */
+public static final native boolean UTTypeConformsTo(int inUTI, int inConformsToUTI);
+/**
  * @param inTagClass cast=(CFStringRef)
  * @param inTag cast=(CFStringRef)
  * @param inConformingToUTI cast=(CFStringRef)
@@ -5351,6 +5365,11 @@ public static final native int UTTypeCreatePreferredIdentifierForTag(int inTagCl
  */
 public static final native int UTTypeCreateAllIdentifiersForTag(int inTagClass, int inTag, int inConformingToUTI);
 /**
+ * @param inUTI1 cast=(CFStringRef)
+ * @param inUTI2 cast=(CFStringRef)
+ */
+public static final native boolean UTTypeEqual(int inUTI1, int inUTI2);
+/**
  * @param srcA flags=no_out
  * @param srcB flags=no_out
  * @param dst flags=no_in
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java
index b5b6dde..3239d4d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak
index f7e4ccd..7a2cd69 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.c
index 9b155a5..f35ec12 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.c	
@@ -3392,6 +3392,18 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilityRoleDescriptionForUIElement)
 }
 #endif
 
+#ifndef NO_NSAccessibilityRowCountChangedNotification
+JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilityRowCountChangedNotification)
+	(JNIEnv *env, jclass that)
+{
+	jintLong rc = 0;
+	OS_NATIVE_ENTER(env, that, NSAccessibilityRowCountChangedNotification_FUNC);
+	rc = (jintLong)NSAccessibilityRowCountChangedNotification;
+	OS_NATIVE_EXIT(env, that, NSAccessibilityRowCountChangedNotification_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_NSAccessibilityRowRole
 JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilityRowRole)
 	(JNIEnv *env, jclass that)
@@ -3500,6 +3512,18 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilitySelectedRowsAttribute)
 }
 #endif
 
+#ifndef NO_NSAccessibilitySelectedRowsChangedNotification
+JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilitySelectedRowsChangedNotification)
+	(JNIEnv *env, jclass that)
+{
+	jintLong rc = 0;
+	OS_NATIVE_ENTER(env, that, NSAccessibilitySelectedRowsChangedNotification_FUNC);
+	rc = (jintLong)NSAccessibilitySelectedRowsChangedNotification;
+	OS_NATIVE_EXIT(env, that, NSAccessibilitySelectedRowsChangedNotification_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_NSAccessibilitySelectedTextAttribute
 JNIEXPORT jintLong JNICALL OS_NATIVE(NSAccessibilitySelectedTextAttribute)
 	(JNIEnv *env, jclass that)
@@ -4441,6 +4465,18 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(NSLinkAttributeName)
 }
 #endif
 
+#ifndef NO_NSModalPanelRunLoopMode
+JNIEXPORT jintLong JNICALL OS_NATIVE(NSModalPanelRunLoopMode)
+	(JNIEnv *env, jclass that)
+{
+	jintLong rc = 0;
+	OS_NATIVE_ENTER(env, that, NSModalPanelRunLoopMode_FUNC);
+	rc = (jintLong)NSModalPanelRunLoopMode;
+	OS_NATIVE_EXIT(env, that, NSModalPanelRunLoopMode_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_NSNumberOfColorComponents
 JNIEXPORT jintLong JNICALL OS_NATIVE(NSNumberOfColorComponents)
 	(JNIEnv *env, jclass that, jintLong arg0)
@@ -5364,6 +5400,18 @@ fail:
 }
 #endif
 
+#ifndef NO_UTTypeEqual
+JNIEXPORT jboolean JNICALL OS_NATIVE(UTTypeEqual)
+	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1)
+{
+	jboolean rc = 0;
+	OS_NATIVE_ENTER(env, that, UTTypeEqual_FUNC);
+	rc = (jboolean)UTTypeEqual((CFStringRef)arg0, (CFStringRef)arg1);
+	OS_NATIVE_EXIT(env, that, UTTypeEqual_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_UnionRgn
 JNIEXPORT void JNICALL OS_NATIVE(UnionRgn)
 	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2)
@@ -6540,6 +6588,29 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(objc_1msgSend__JJJJ)(JNIEnv *env, jclass th
 }
 #endif
 
+#if (!defined(NO_objc_1msgSend__IIIIDI) && !defined(JNI64)) || (!defined(NO_objc_1msgSend__JJJJDJ) && defined(JNI64))
+#ifndef JNI64
+JNIEXPORT jintLong JNICALL OS_NATIVE(objc_1msgSend__IIIIDI)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jdouble arg4, jintLong arg5)
+#else
+JNIEXPORT jintLong JNICALL OS_NATIVE(objc_1msgSend__JJJJDJ)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jdouble arg4, jintLong arg5)
+#endif
+{
+	jintLong rc = 0;
+#ifndef JNI64
+	OS_NATIVE_ENTER(env, that, objc_1msgSend__IIIIDI_FUNC);
+#else
+	OS_NATIVE_ENTER(env, that, objc_1msgSend__JJJJDJ_FUNC);
+#endif
+	rc = (jintLong)((jintLong (*)(jintLong, jintLong, jintLong, jintLong, jdouble, jintLong))objc_msgSend)(arg0, arg1, arg2, arg3, arg4, arg5);
+#ifndef JNI64
+	OS_NATIVE_EXIT(env, that, objc_1msgSend__IIIIDI_FUNC);
+#else
+	OS_NATIVE_EXIT(env, that, objc_1msgSend__JJJJDJ_FUNC);
+#endif
+	return rc;
+}
+#endif
+
 #if (!defined(NO_objc_1msgSend__IIIII) && !defined(JNI64)) || (!defined(NO_objc_1msgSend__JJJJJ) && defined(JNI64))
 #ifndef JNI64
 JNIEXPORT jintLong JNICALL OS_NATIVE(objc_1msgSend__IIIII)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h
index c21517e..b3b3770 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c
index bce15be..a51b7fd 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h
index f6925df..2ebf369 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.c
index eed59f7..85afa05 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.c	
@@ -14,8 +14,8 @@
 
 #ifdef NATIVE_STATS
 
-int OS_nativeFunctionCount = 582;
-int OS_nativeFunctionCallCount[582];
+int OS_nativeFunctionCount = 587;
+int OS_nativeFunctionCallCount[587];
 char * OS_nativeFunctionNames[] = {
 	"ATSFontActivateFromFileReference",
 	"AcquireRootMenu",
@@ -256,6 +256,7 @@ char * OS_nativeFunctionNames[] = {
 	"NSAccessibilityRoleDescription",
 	"NSAccessibilityRoleDescriptionAttribute",
 	"NSAccessibilityRoleDescriptionForUIElement",
+	"NSAccessibilityRowCountChangedNotification",
 	"NSAccessibilityRowIndexRangeAttribute",
 	"NSAccessibilityRowRole",
 	"NSAccessibilityRowsAttribute",
@@ -266,6 +267,7 @@ char * OS_nativeFunctionNames[] = {
 	"NSAccessibilitySelectedChildrenChangedNotification",
 	"NSAccessibilitySelectedColumnsAttribute",
 	"NSAccessibilitySelectedRowsAttribute",
+	"NSAccessibilitySelectedRowsChangedNotification",
 	"NSAccessibilitySelectedTextAttribute",
 	"NSAccessibilitySelectedTextChangedNotification",
 	"NSAccessibilitySelectedTextRangeAttribute",
@@ -344,6 +346,7 @@ char * OS_nativeFunctionNames[] = {
 	"NSHTMLPboardType",
 	"NSIntersectionRect",
 	"NSLinkAttributeName",
+	"NSModalPanelRunLoopMode",
 	"NSNumberOfColorComponents",
 	"NSObliquenessAttributeName",
 	"NSOutlineViewColumnDidMoveNotification",
@@ -408,6 +411,7 @@ char * OS_nativeFunctionNames[] = {
 	"TISGetInputSourceProperty",
 	"TransformProcessType",
 	"UCKeyTranslate",
+	"UTTypeEqual",
 	"UnionRgn",
 	"_1_1BIG_1ENDIAN_1_1",
 	"call",
@@ -604,6 +608,11 @@ char * OS_nativeFunctionNames[] = {
 	"objc_1msgSend__JJJJ",
 #endif
 #ifndef JNI64
+	"objc_1msgSend__IIIIDI",
+#else
+	"objc_1msgSend__JJJJDJ",
+#endif
+#ifndef JNI64
 	"objc_1msgSend__IIIII",
 #else
 	"objc_1msgSend__JJJJJ",
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.h
index e91a8be..92409cd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_stats.h	
@@ -264,6 +264,7 @@ typedef enum {
 	NSAccessibilityRoleDescription_FUNC,
 	NSAccessibilityRoleDescriptionAttribute_FUNC,
 	NSAccessibilityRoleDescriptionForUIElement_FUNC,
+	NSAccessibilityRowCountChangedNotification_FUNC,
 	NSAccessibilityRowIndexRangeAttribute_FUNC,
 	NSAccessibilityRowRole_FUNC,
 	NSAccessibilityRowsAttribute_FUNC,
@@ -274,6 +275,7 @@ typedef enum {
 	NSAccessibilitySelectedChildrenChangedNotification_FUNC,
 	NSAccessibilitySelectedColumnsAttribute_FUNC,
 	NSAccessibilitySelectedRowsAttribute_FUNC,
+	NSAccessibilitySelectedRowsChangedNotification_FUNC,
 	NSAccessibilitySelectedTextAttribute_FUNC,
 	NSAccessibilitySelectedTextChangedNotification_FUNC,
 	NSAccessibilitySelectedTextRangeAttribute_FUNC,
@@ -352,6 +354,7 @@ typedef enum {
 	NSHTMLPboardType_FUNC,
 	NSIntersectionRect_FUNC,
 	NSLinkAttributeName_FUNC,
+	NSModalPanelRunLoopMode_FUNC,
 	NSNumberOfColorComponents_FUNC,
 	NSObliquenessAttributeName_FUNC,
 	NSOutlineViewColumnDidMoveNotification_FUNC,
@@ -416,6 +419,7 @@ typedef enum {
 	TISGetInputSourceProperty_FUNC,
 	TransformProcessType_FUNC,
 	UCKeyTranslate_FUNC,
+	UTTypeEqual_FUNC,
 	UnionRgn_FUNC,
 	_1_1BIG_1ENDIAN_1_1_FUNC,
 	call_FUNC,
@@ -612,6 +616,11 @@ typedef enum {
 	objc_1msgSend__JJJJ_FUNC,
 #endif
 #ifndef JNI64
+	objc_1msgSend__IIIIDI_FUNC,
+#else
+	objc_1msgSend__JJJJDJ_FUNC,
+#endif
+#ifndef JNI64
 	objc_1msgSend__IIIII_FUNC,
 #else
 	objc_1msgSend__JJJJJ_FUNC,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras
index 9b6909e..007d326 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras	
@@ -3930,6 +3930,9 @@
 		<method selector="firstResponder" swt_gen="true">
 			<retval swt_gen="true"></retval>
 		</method>
+		<method selector="flushWindowIfNeeded" swt_gen="true">
+			<retval swt_gen="true"></retval>
+		</method>
 		<method selector="frame" swt_gen="true">
 			<retval swt_gen="true"></retval>
 		</method>
@@ -4185,6 +4188,16 @@
 		<method class_method="true" selector="sharedWorkspace" swt_gen="true">
 			<retval swt_gen="true"></retval>
 		</method>
+		<method selector="type:conformsToType:" swt_gen="true">
+			<arg swt_gen="true"></arg>
+			<arg swt_gen="true"></arg>
+			<retval swt_gen="true"></retval>
+		</method>
+		<method selector="typeOfFile:error:" swt_gen="true">
+			<arg swt_gen="true"></arg>
+			<arg swt_gen="true"></arg>
+			<retval swt_gen="true"></retval>
+		</method>
 	</class>
 	<constant name="NSAccessibilityAttributedStringForRangeParameterizedAttribute" swt_gen="true"></constant>
 	<constant name="NSAccessibilityBackgroundColorTextAttribute" swt_gen="true"></constant>
@@ -4256,6 +4269,7 @@
 	<constant name="NSAccessibilityResizedNotification" swt_gen="true"></constant>
 	<constant name="NSAccessibilityRoleAttribute" swt_gen="true"></constant>
 	<constant name="NSAccessibilityRoleDescriptionAttribute" swt_gen="true"></constant>
+	<constant name="NSAccessibilityRowCountChangedNotification" swt_gen="true"></constant>
 	<constant name="NSAccessibilityRowRole" swt_gen="true"></constant>
 	<constant name="NSAccessibilityRowsAttribute" swt_gen="true"></constant>
 	<constant name="NSAccessibilityScrollAreaRole" swt_gen="true"></constant>
@@ -4265,6 +4279,7 @@
 	<constant name="NSAccessibilitySelectedChildrenChangedNotification" swt_gen="true"></constant>
 	<constant name="NSAccessibilitySelectedColumnsAttribute" swt_gen="true"></constant>
 	<constant name="NSAccessibilitySelectedRowsAttribute" swt_gen="true"></constant>
+	<constant name="NSAccessibilitySelectedRowsChangedNotification" swt_gen="true"></constant>
 	<constant name="NSAccessibilitySelectedTextAttribute" swt_gen="true"></constant>
 	<constant name="NSAccessibilitySelectedTextChangedNotification" swt_gen="true"></constant>
 	<constant name="NSAccessibilitySelectedTextRangeAttribute" swt_gen="true"></constant>
@@ -4329,6 +4344,7 @@
 	<constant name="NSForegroundColorAttributeName" swt_gen="true"></constant>
 	<constant name="NSHTMLPboardType" swt_gen="true"></constant>
 	<constant name="NSLinkAttributeName" swt_gen="true"></constant>
+	<constant name="NSModalPanelRunLoopMode" swt_gen="true"></constant>
 	<constant name="NSObliquenessAttributeName" swt_gen="true"></constant>
 	<constant name="NSOutlineViewColumnDidMoveNotification" swt_gen="true"></constant>
 	<constant name="NSParagraphStyleAttributeName" swt_gen="true"></constant>
@@ -4674,6 +4690,9 @@
 		<method selector="comboBoxWillDismiss:" swt_gen="true">
 			<arg swt_gen="true"></arg>
 		</method>
+		<method selector="comboBoxWillPopUp:" swt_gen="true">
+			<arg swt_gen="true"></arg>
+		</method>
 	</informal_protocol>
 	<informal_protocol name="NSDraggingDestination" swt_gen="mixed">
 		<method selector="draggingEnded:" swt_gen="true">
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CFRange.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CFRange.java
index 0c38c38..da171ad 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CFRange.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CFRange.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CGAffineTransform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CGAffineTransform.java
index 7d17d93..520553b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CGAffineTransform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/CGAffineTransform.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/FoundationFull.bridgesupport.extras b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/FoundationFull.bridgesupport.extras
index 913bd8c..e9ff140 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/FoundationFull.bridgesupport.extras	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/FoundationFull.bridgesupport.extras	
@@ -690,6 +690,13 @@
 		<method selector="mutableCopy" swt_gen="true">
 			<retval swt_gen="true"></retval>
 		</method>
+		<method selector="performSelector:withObject:afterDelay:inModes:" swt_gen="true">
+			<arg swt_gen="true"></arg>
+			<arg swt_gen="true"></arg>
+			<arg swt_gen="true"></arg>
+			<arg swt_gen="true"></arg>
+			<retval swt_gen="true"></retval>
+		</method>
 		<method selector="performSelectorOnMainThread:withObject:waitUntilDone:" swt_gen="true">
 			<arg swt_gen="true"></arg>
 			<arg swt_gen="true"></arg>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSObject.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSObject.java
index fde2588..828584c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSObject.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSObject.java	
@@ -112,6 +112,10 @@ public id mutableCopy() {
 	return result != 0 ? new id(result) : null;
 }
 
+public void performSelector(int /*long*/ aSelector, id anArgument, double delay, NSArray modes) {
+	OS.objc_msgSend(this.id, OS.sel_performSelector_withObject_afterDelay_inModes_, aSelector, anArgument != null ? anArgument.id : 0, delay, modes != null ? modes.id : 0);
+}
+
 public void performSelectorOnMainThread(int /*long*/ aSelector, id arg, boolean wait) {
 	OS.objc_msgSend(this.id, OS.sel_performSelectorOnMainThread_withObject_waitUntilDone_, aSelector, arg != null ? arg.id : 0, wait);
 }
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSStatusBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSStatusBar.java
index 739b3ac..6c96f80 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSStatusBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSStatusBar.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWindow.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWindow.java
index 3437b27..538ff89 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWindow.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWindow.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -119,6 +119,10 @@ public NSResponder firstResponder() {
 	return result != 0 ? new NSResponder(result) : null;
 }
 
+public void flushWindowIfNeeded() {
+	OS.objc_msgSend(this.id, OS.sel_flushWindowIfNeeded);
+}
+
 public NSRect frame() {
 	NSRect result = new NSRect();
 	OS.objc_msgSend_stret(result, this.id, OS.sel_frame);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWorkspace.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWorkspace.java
index 647ca08..d769cf0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWorkspace.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSWorkspace.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -64,4 +64,13 @@ public static NSWorkspace sharedWorkspace() {
 	return result != 0 ? new NSWorkspace(result) : null;
 }
 
+public boolean type(NSString firstTypeName, NSString secondTypeName) {
+	return OS.objc_msgSend_bool(this.id, OS.sel_type_conformsToType_, firstTypeName != null ? firstTypeName.id : 0, secondTypeName != null ? secondTypeName.id : 0);
+}
+
+public NSString typeOfFile(NSString absoluteFilePath, int /*long*/ outError) {
+	int /*long*/ result = OS.objc_msgSend(this.id, OS.sel_typeOfFile_error_, absoluteFilePath != null ? absoluteFilePath.id : 0, outError);
+	return result != 0 ? new NSString(result) : null;
+}
+
 }
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java
index 5c2aeae..de69735 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -81,12 +81,16 @@ public class OS extends C {
 	
 	public static final int /*long*/ sel_accessibleHandle = sel_registerName("accessibleHandle");
 
+	public static final int /*long*/ sel_clearDeferFlushing = sel_registerName("clearDeferFlushing");
+
 	/* These are not generated in order to avoid creating static methods on all classes */
 	public static final int /*long*/ sel_isSelectorExcludedFromWebScript_ = sel_registerName("isSelectorExcludedFromWebScript:");
 	public static final int /*long*/ sel_webScriptNameForSelector_ = sel_registerName("webScriptNameForSelector:");
 	
 	public static final int /*long*/ sel_setColor_forAttribute_ = sel_registerName("setColor:forAttribute:");
 	
+	public static final int /*long*/ sel_javaRunLoopMode = sel_registerName("javaRunLoopMode");
+
 	/* NSTextAttachmentCell */
 	/** @method callback_types=NSPoint;id;SEL;,callback_flags=struct;none;none; */
 	public static final native int /*long*/ CALLBACK_cellBaselineOffset(int /*long*/ func);
@@ -175,6 +179,12 @@ public static final native int GetSystemUIMode(int[] outMode, int[] outOptions);
  */
 public static final native int UCKeyTranslate (int /*long*/ keyLayoutPtr, short virtualKeyCode, short keyAction, int modifierKeyState, int keyboardType, int keyTranslateOptions, int[] deadKeyState, int maxStringLength, int[] actualStringLength, char[] unicodeString);
 /**
+ * @param inUTI1 cast=(CFStringRef)
+ * @param inUTI2 cast=(CFStringRef)
+ */
+public static final native boolean UTTypeEqual(int /*long*/ inUTI1, int /*long*/ inUTI2);
+
+/**
  * @method flags=dynamic
  * @param metric cast=(SInt32 *)
 */
@@ -904,6 +914,7 @@ public static final int /*long*/ sel_columnIndexesInRect_ = sel_registerName("co
 public static final int /*long*/ sel_columnWithIdentifier_ = sel_registerName("columnWithIdentifier:");
 public static final int /*long*/ sel_comboBoxSelectionDidChange_ = sel_registerName("comboBoxSelectionDidChange:");
 public static final int /*long*/ sel_comboBoxWillDismiss_ = sel_registerName("comboBoxWillDismiss:");
+public static final int /*long*/ sel_comboBoxWillPopUp_ = sel_registerName("comboBoxWillPopUp:");
 public static final int /*long*/ sel_compare_ = sel_registerName("compare:");
 public static final int /*long*/ sel_concat = sel_registerName("concat");
 public static final int /*long*/ sel_conformsToProtocol_ = sel_registerName("conformsToProtocol:");
@@ -1090,6 +1101,7 @@ public static final int /*long*/ sel_flagsChanged_ = sel_registerName("flagsChan
 public static final int /*long*/ sel_floatValue = sel_registerName("floatValue");
 public static final int /*long*/ sel_flushBuffer = sel_registerName("flushBuffer");
 public static final int /*long*/ sel_flushGraphics = sel_registerName("flushGraphics");
+public static final int /*long*/ sel_flushWindowIfNeeded = sel_registerName("flushWindowIfNeeded");
 public static final int /*long*/ sel_font = sel_registerName("font");
 public static final int /*long*/ sel_fontName = sel_registerName("fontName");
 public static final int /*long*/ sel_fontWithFamily_traits_weight_size_ = sel_registerName("fontWithFamily:traits:weight:size:");
@@ -1398,6 +1410,7 @@ public static final int /*long*/ sel_path = sel_registerName("path");
 public static final int /*long*/ sel_pathExtension = sel_registerName("pathExtension");
 public static final int /*long*/ sel_pathForResource_ofType_ = sel_registerName("pathForResource:ofType:");
 public static final int /*long*/ sel_performDragOperation_ = sel_registerName("performDragOperation:");
+public static final int /*long*/ sel_performSelector_withObject_afterDelay_inModes_ = sel_registerName("performSelector:withObject:afterDelay:inModes:");
 public static final int /*long*/ sel_performSelectorOnMainThread_withObject_waitUntilDone_ = sel_registerName("performSelectorOnMainThread:withObject:waitUntilDone:");
 public static final int /*long*/ sel_pixelsHigh = sel_registerName("pixelsHigh");
 public static final int /*long*/ sel_pixelsWide = sel_registerName("pixelsWide");
@@ -1900,6 +1913,8 @@ public static final int /*long*/ sel_transformStruct = sel_registerName("transfo
 public static final int /*long*/ sel_transformUsingAffineTransform_ = sel_registerName("transformUsingAffineTransform:");
 public static final int /*long*/ sel_translateXBy_yBy_ = sel_registerName("translateXBy:yBy:");
 public static final int /*long*/ sel_type = sel_registerName("type");
+public static final int /*long*/ sel_type_conformsToType_ = sel_registerName("type:conformsToType:");
+public static final int /*long*/ sel_typeOfFile_error_ = sel_registerName("typeOfFile:error:");
 public static final int /*long*/ sel_types = sel_registerName("types");
 public static final int /*long*/ sel_typesetter = sel_registerName("typesetter");
 public static final int /*long*/ sel_unarchiveObjectWithData_ = sel_registerName("unarchiveObjectWithData:");
@@ -2420,6 +2435,9 @@ public static final NSString NSAccessibilityRoleAttribute = new NSString(NSAcces
 public static final native int /*long*/ NSAccessibilityRoleDescriptionAttribute();
 public static final NSString NSAccessibilityRoleDescriptionAttribute = new NSString(NSAccessibilityRoleDescriptionAttribute());
 /** @method flags=const */
+public static final native int /*long*/ NSAccessibilityRowCountChangedNotification();
+public static final NSString NSAccessibilityRowCountChangedNotification = new NSString(NSAccessibilityRowCountChangedNotification());
+/** @method flags=const */
 public static final native int /*long*/ NSAccessibilityRowRole();
 public static final NSString NSAccessibilityRowRole = new NSString(NSAccessibilityRowRole());
 /** @method flags=const */
@@ -2447,6 +2465,9 @@ public static final NSString NSAccessibilitySelectedColumnsAttribute = new NSStr
 public static final native int /*long*/ NSAccessibilitySelectedRowsAttribute();
 public static final NSString NSAccessibilitySelectedRowsAttribute = new NSString(NSAccessibilitySelectedRowsAttribute());
 /** @method flags=const */
+public static final native int /*long*/ NSAccessibilitySelectedRowsChangedNotification();
+public static final NSString NSAccessibilitySelectedRowsChangedNotification = new NSString(NSAccessibilitySelectedRowsChangedNotification());
+/** @method flags=const */
 public static final native int /*long*/ NSAccessibilitySelectedTextAttribute();
 public static final NSString NSAccessibilitySelectedTextAttribute = new NSString(NSAccessibilitySelectedTextAttribute());
 /** @method flags=const */
@@ -2639,6 +2660,9 @@ public static final NSString NSHTMLPboardType = new NSString(NSHTMLPboardType())
 public static final native int /*long*/ NSLinkAttributeName();
 public static final NSString NSLinkAttributeName = new NSString(NSLinkAttributeName());
 /** @method flags=const */
+public static final native int /*long*/ NSModalPanelRunLoopMode();
+public static final NSString NSModalPanelRunLoopMode = new NSString(NSModalPanelRunLoopMode());
+/** @method flags=const */
 public static final native int /*long*/ NSObliquenessAttributeName();
 public static final NSString NSObliquenessAttributeName = new NSString(NSObliquenessAttributeName());
 /** @method flags=const */
@@ -3655,6 +3679,8 @@ public static final native int /*long*/ objc_msgSend(int /*long*/ id, int /*long
 /** @method flags=cast */
 public static final native int /*long*/ objc_msgSend(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, boolean arg2);
 /** @method flags=cast */
+public static final native int /*long*/ objc_msgSend(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, double arg2, int /*long*/ arg3);
+/** @method flags=cast */
 public static final native int /*long*/ objc_msgSend(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2);
 /** @method flags=cast */
 public static final native int /*long*/ objc_msgSend(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, boolean arg3);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTabViewItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTabViewItem.java
index 7cd536e..aa5d18a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTabViewItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTabViewItem.java	
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.swt.internal.cocoa;
 
 public class SWTTabViewItem extends NSTabViewItem {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTextAttachmentCell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTextAttachmentCell.java
index 71d5ac7..175696b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTextAttachmentCell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/SWTTextAttachmentCell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2me/org/eclipse/swt/internal/Library.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2me/org/eclipse/swt/internal/Library.java
index 8223fca..8c1556a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2me/org/eclipse/swt/internal/Library.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2me/org/eclipse/swt/internal/Library.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@ public class Library {
 	/**
 	 * SWT Minor version number (must be in the range 0..999)
 	 */
-    static int MINOR_VERSION = 642;
+    static int MINOR_VERSION = 650;
 	
 	/**
 	 * SWT revision number (must be >= 0)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2se/org/eclipse/swt/internal/Library.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2se/org/eclipse/swt/internal/Library.java
index d970d95..a66c81e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2se/org/eclipse/swt/internal/Library.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/common_j2se/org/eclipse/swt/internal/Library.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,7 +24,7 @@ public class Library {
 	/**
 	 * SWT Minor version number (must be in the range 0..999)
 	 */
-    static int MINOR_VERSION = 642;
+    static int MINOR_VERSION = 650;
 	
 	/**
 	 * SWT revision number (must be >= 0)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk.h
index 8151da8..e353373 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk_structs.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk_structs.h
index b74dda3..cc692cd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk_structs.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/atk_structs.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh
index 5c936df..032587e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh	
@@ -1,6 +1,6 @@
 #!/bin/sh
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -139,6 +139,14 @@ if [ -z "${MOZILLA_INCLUDES}" -a -z "${MOZILLA_LIBS}" ]; then
 	fi
 fi
 
+if [ x`pkg-config --exists webkit-1.0 && echo YES` = "xYES" ]; then
+	echo "WebKit found, compiling webkit embedded browser support."
+	MAKE_WEBKIT=make_webkit
+else
+	echo "WebKit not found:"
+	echo "    *** WebKit embedding support will not be compiled."
+fi
+
 # Find AWT if available
 if [ -z "${AWT_LIB_PATH}" ]; then
 	if [ -f ${JAVA_HOME}/jre/lib/${AWT_ARCH}/libjawt.so ]; then
@@ -167,5 +175,5 @@ fi
 if [ "x${1}" = "xclean" ]; then
 	${MAKE_TYPE} -f $MAKEFILE clean
 else
-	${MAKE_TYPE} -f $MAKEFILE all $MAKE_GNOME $MAKE_CAIRO $MAKE_AWT $MAKE_MOZILLA ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9}
+	${MAKE_TYPE} -f $MAKEFILE all $MAKE_GNOME $MAKE_CAIRO $MAKE_AWT $MAKE_MOZILLA $MAKE_WEBKIT ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9}
 fi
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak
index 3910494..6f71c76 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak
index 4001af0..8b8f1a8 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris.mak
index 89098eb..20f711c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak
index 8325801..6764c33 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index fe2a8ba..9363bf1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c	
@@ -2737,6 +2737,30 @@ JNIEXPORT void JNICALL OS_NATIVE(_1g_1closure_1unref)
 }
 #endif
 
+#ifndef NO__1g_1content_1type_1equals
+JNIEXPORT jboolean JNICALL OS_NATIVE(_1g_1content_1type_1equals)
+	(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jboolean rc = 0;
+	OS_NATIVE_ENTER(env, that, _1g_1content_1type_1equals_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+/*
+	rc = (jboolean)g_content_type_equals(arg0, lparg1);
+*/
+	{
+		LOAD_FUNCTION(fp, g_content_type_equals)
+		if (fp) {
+			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jintLong, jbyte *))fp)(arg0, lparg1);
+		}
+	}
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	OS_NATIVE_EXIT(env, that, _1g_1content_1type_1equals_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO__1g_1content_1type_1get_1mime_1type
 JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1content_1type_1get_1mime_1type)
 	(JNIEnv *env, jclass that, jbyteArray arg0)
@@ -2761,6 +2785,30 @@ fail:
 }
 #endif
 
+#ifndef NO__1g_1content_1type_1is_1a
+JNIEXPORT jboolean JNICALL OS_NATIVE(_1g_1content_1type_1is_1a)
+	(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jboolean rc = 0;
+	OS_NATIVE_ENTER(env, that, _1g_1content_1type_1is_1a_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+/*
+	rc = (jboolean)g_content_type_is_a(arg0, lparg1);
+*/
+	{
+		LOAD_FUNCTION(fp, g_content_type_is_a)
+		if (fp) {
+			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jintLong, jbyte *))fp)(arg0, lparg1);
+		}
+	}
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	OS_NATIVE_EXIT(env, that, _1g_1content_1type_1is_1a_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO__1g_1content_1types_1get_1registered
 JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1content_1types_1get_1registered)
 	(JNIEnv *env, jclass that)
@@ -2909,6 +2957,26 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1icon_1get_1file)
 }
 #endif
 
+#ifndef NO__1g_1file_1info_1get_1content_1type
+JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1info_1get_1content_1type)
+	(JNIEnv *env, jclass that, jintLong arg0)
+{
+	jintLong rc = 0;
+	OS_NATIVE_ENTER(env, that, _1g_1file_1info_1get_1content_1type_FUNC);
+/*
+	rc = (jintLong)g_file_info_get_content_type(arg0);
+*/
+	{
+		LOAD_FUNCTION(fp, g_file_info_get_content_type)
+		if (fp) {
+			rc = (jintLong)((jintLong (CALLING_CONVENTION*)(jintLong))fp)(arg0);
+		}
+	}
+	OS_NATIVE_EXIT(env, that, _1g_1file_1info_1get_1content_1type_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO__1g_1file_1info_1get_1modification_1time
 JNIEXPORT void JNICALL OS_NATIVE(_1g_1file_1info_1get_1modification_1time)
 	(JNIEnv *env, jclass that, jintLong arg0, jintLongArray arg1)
@@ -2955,6 +3023,30 @@ fail:
 }
 #endif
 
+#ifndef NO__1g_1file_1new_1for_1uri
+JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1new_1for_1uri)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jintLong rc = 0;
+	OS_NATIVE_ENTER(env, that, _1g_1file_1new_1for_1uri_FUNC);
+	if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
+/*
+	rc = (jintLong)g_file_new_for_uri(lparg0);
+*/
+	{
+		LOAD_FUNCTION(fp, g_file_new_for_uri)
+		if (fp) {
+			rc = (jintLong)((jintLong (CALLING_CONVENTION*)(jbyte *))fp)(lparg0);
+		}
+	}
+fail:
+	if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	OS_NATIVE_EXIT(env, that, _1g_1file_1new_1for_1uri_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO__1g_1file_1query_1info
 JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1query_1info)
 	(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1, jintLong arg2, jintLong arg3, jintLong arg4)
@@ -12703,6 +12795,16 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1gtk_1socket_1new)
 }
 #endif
 
+#ifndef NO__1gtk_1spin_1button_1configure
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1spin_1button_1configure)
+	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jdouble arg2, jint arg3)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1spin_1button_1configure_FUNC);
+	gtk_spin_button_configure((GtkSpinButton*)arg0, (GtkAdjustment *)arg1, arg2, arg3);
+	OS_NATIVE_EXIT(env, that, _1gtk_1spin_1button_1configure_FUNC);
+}
+#endif
+
 #ifndef NO__1gtk_1spin_1button_1get_1adjustment
 JNIEXPORT jintLong JNICALL OS_NATIVE(_1gtk_1spin_1button_1get_1adjustment)
 	(JNIEnv *env, jclass that, jintLong arg0)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
index 86758b5..6948505 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h
index 5536099..90533e5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
-* Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+* Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
 * The contents of this file are made available under the terms
 * of the GNU Lesser General Public License (LGPL) Version 2.1 that
 * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -231,14 +231,18 @@
 #define g_app_info_should_show_LIB "libgio-2.0.so.0"
 #define g_data_input_stream_new_LIB "libgio-2.0.so.0"
 #define g_data_input_stream_read_line_LIB "libgio-2.0.so.0"
+#define g_content_type_equals_LIB "libgio-2.0.so.0"
 #define g_content_type_get_mime_type_LIB "libgio-2.0.so.0"
+#define g_content_type_is_a_LIB "libgio-2.0.so.0"
 #define g_content_types_get_registered_LIB "libgio-2.0.so.0"
 #define g_desktop_app_info_new_from_filename_LIB "libgio-2.0.so.0"
 #define g_file_get_path_LIB "libgio-2.0.so.0"
 #define g_file_get_uri_LIB "libgio-2.0.so.0"
 #define g_file_icon_get_file_LIB "libgio-2.0.so.0"
+#define g_file_info_get_content_type_LIB "libgio-2.0.so.0"
 #define g_file_info_get_modification_time_LIB "libgio-2.0.so.0"
 #define g_file_new_for_path_LIB "libgio-2.0.so.0"
+#define g_file_new_for_uri_LIB "libgio-2.0.so.0"
 #define g_file_read_LIB "libgio-2.0.so.0"
 #define g_file_test_LIB "libgio-2.0.so.0"
 #define g_icon_to_string_LIB "libgio-2.0.so.0"
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index 4ea8aa8..6247415 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c	
@@ -18,8 +18,8 @@
 
 #ifdef NATIVE_STATS
 
-int OS_nativeFunctionCount = 1360;
-int OS_nativeFunctionCallCount[1360];
+int OS_nativeFunctionCount = 1365;
+int OS_nativeFunctionCallCount[1365];
 char * OS_nativeFunctionNames[] = {
 #ifndef JNI64
 	"Call__IIII",
@@ -233,7 +233,9 @@ char * OS_nativeFunctionNames[] = {
 	"_1g_1cclosure_1new",
 	"_1g_1closure_1ref",
 	"_1g_1closure_1unref",
+	"_1g_1content_1type_1equals",
 	"_1g_1content_1type_1get_1mime_1type",
+	"_1g_1content_1type_1is_1a",
 	"_1g_1content_1types_1get_1registered",
 	"_1g_1data_1input_1stream_1new",
 	"_1g_1data_1input_1stream_1read_1line",
@@ -241,8 +243,10 @@ char * OS_nativeFunctionNames[] = {
 	"_1g_1file_1get_1path",
 	"_1g_1file_1get_1uri",
 	"_1g_1file_1icon_1get_1file",
+	"_1g_1file_1info_1get_1content_1type",
 	"_1g_1file_1info_1get_1modification_1time",
 	"_1g_1file_1new_1for_1path",
+	"_1g_1file_1new_1for_1uri",
 	"_1g_1file_1query_1info",
 	"_1g_1file_1read",
 	"_1g_1file_1test",
@@ -990,6 +994,7 @@ char * OS_nativeFunctionNames[] = {
 	"_1gtk_1settings_1get_1default",
 	"_1gtk_1socket_1get_1id",
 	"_1gtk_1socket_1new",
+	"_1gtk_1spin_1button_1configure",
 	"_1gtk_1spin_1button_1get_1adjustment",
 	"_1gtk_1spin_1button_1get_1digits",
 	"_1gtk_1spin_1button_1new",
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index 0ab053b..ed45486 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h	
@@ -241,7 +241,9 @@ typedef enum {
 	_1g_1cclosure_1new_FUNC,
 	_1g_1closure_1ref_FUNC,
 	_1g_1closure_1unref_FUNC,
+	_1g_1content_1type_1equals_FUNC,
 	_1g_1content_1type_1get_1mime_1type_FUNC,
+	_1g_1content_1type_1is_1a_FUNC,
 	_1g_1content_1types_1get_1registered_FUNC,
 	_1g_1data_1input_1stream_1new_FUNC,
 	_1g_1data_1input_1stream_1read_1line_FUNC,
@@ -249,8 +251,10 @@ typedef enum {
 	_1g_1file_1get_1path_FUNC,
 	_1g_1file_1get_1uri_FUNC,
 	_1g_1file_1icon_1get_1file_FUNC,
+	_1g_1file_1info_1get_1content_1type_FUNC,
 	_1g_1file_1info_1get_1modification_1time_FUNC,
 	_1g_1file_1new_1for_1path_FUNC,
+	_1g_1file_1new_1for_1uri_FUNC,
 	_1g_1file_1query_1info_FUNC,
 	_1g_1file_1read_FUNC,
 	_1g_1file_1test_FUNC,
@@ -998,6 +1002,7 @@ typedef enum {
 	_1gtk_1settings_1get_1default_FUNC,
 	_1gtk_1socket_1get_1id_FUNC,
 	_1gtk_1socket_1new_FUNC,
+	_1gtk_1spin_1button_1configure_FUNC,
 	_1gtk_1spin_1button_1get_1adjustment_FUNC,
 	_1gtk_1spin_1button_1get_1digits_FUNC,
 	_1gtk_1spin_1button_1new_FUNC,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.c
index ea9b4c5..8c72e96 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.h
index 9432e61..6435b83 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_structs.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/ATK.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/ATK.java
index 4ec41ba..a54a31a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/ATK.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/ATK.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -170,6 +170,7 @@ public class ATK extends OS {
 	public static final byte[] column_inserted = OS.ascii ("column-inserted");
 	public static final byte[] row_deleted = OS.ascii ("row-deleted");
 	public static final byte[] row_inserted = OS.ascii ("row-inserted");
+	public static final byte[] focus_event = OS.ascii ("focus-event");
 	
 	/** Properties */
 	public static final byte[] accessible_name = OS.ascii ("accessible-name");
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkAttribute.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkAttribute.java
index b48b7b8..1615e45 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkAttribute.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkAttribute.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkObjectClass.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkObjectClass.java
index a8d4f9c..c631c29 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkObjectClass.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkObjectClass.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTableIface.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTableIface.java
index c54b38c..9cbc506 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTableIface.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTableIface.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextIface.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextIface.java
index a9999d1..0ab9f65 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextIface.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextIface.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRange.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRange.java
index f5a12ea..fedd295 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRange.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRange.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRectangle.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRectangle.java
index 9d95e45..deb0586 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRectangle.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkTextRectangle.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkValueIface.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkValueIface.java
index 817bd40..26cfe52 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkValueIface.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/accessibility/gtk/AtkValueIface.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GdkEventProperty.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GdkEventProperty.java
index a7da545..1abcbd6 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GdkEventProperty.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GdkEventProperty.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2009, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
index 5ca4f34..c9dd340 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -1950,13 +1950,26 @@ public static final int /*long*/ g_data_input_stream_read_line(int /*long*/ stre
 		lock.unlock();
 	}
 }
-
-//gboolean            g_content_type_is_unknown           (const char *type);
-///** @method flags=dynamic */
-//public static final native int /*long*/ _g_content_type_get_mime_type(int /*long*/ type);
-//public static final int /*long*/ g_content_type_get_mime_type(int /*long*/ type) {
-//	
-//}
+/** @method flags=dynamic */
+public static final native boolean _g_content_type_equals(int /*long*/ type1, byte[] type2);
+public static final boolean g_content_type_equals(int /*long*/ type1, byte[] type2) {
+	lock.lock();
+	try {
+		return _g_content_type_equals(type1, type2);
+	} finally {
+		lock.unlock();
+	}
+}
+/** @method flags=dynamic */
+public static final native boolean _g_content_type_is_a(int /*long*/ type, byte[] supertype);
+public static final boolean g_content_type_is_a(int /*long*/ type, byte[] supertype) {
+	lock.lock();
+	try {
+		return _g_content_type_is_a(type, supertype);
+	} finally {
+		lock.unlock();
+	}
+}
 /** @method flags=dynamic */
 public static final native int /*long*/ _g_content_type_get_mime_type(byte[] mime_type);
 public static final int /*long*/ g_content_type_get_mime_type(byte[] mime_type) {
@@ -1988,6 +2001,16 @@ public static final int /*long*/ g_desktop_app_info_new_from_filename(byte[] fil
 	}
 }
 /** @method flags=dynamic */
+public static final native int /*long*/ _g_file_info_get_content_type (int /*long*/ info);
+public static final int /*long*/ g_file_info_get_content_type (int /*long*/ info) {
+	lock.lock();
+	try {
+		return _g_file_info_get_content_type (info);
+	} finally {
+		lock.unlock();
+	}
+}
+/** @method flags=dynamic */
 public static final native int /*long*/ _g_file_get_path(int /*long*/ file);
 public static final int /*long*/ g_file_get_path (int /*long*/ file) {
 	lock.lock();
@@ -2038,6 +2061,16 @@ public static final int /*long*/ g_file_new_for_path(byte[] fileName) {
 	}
 }
 /** @method flags=dynamic */
+public static final native int /*long*/ _g_file_new_for_uri(byte[] fileName);
+public static final int /*long*/ g_file_new_for_uri(byte[] fileName) {
+	lock.lock();
+	try {
+		return _g_file_new_for_uri(fileName);
+	} finally {
+		lock.unlock();
+	}
+}
+/** @method flags=dynamic */
 public static final native int /*long*/ _g_file_query_info  (int /*long*/ file, byte[] attributes, int /*long*/ flags, int /*long*/ cancellable, int /*long*/ error);
 public static final int /*long*/ g_file_query_info  (int /*long*/ file,byte[] attributes, int /*long*/ flags, int /*long*/ cancellable, int /*long*/ error) {
 	lock.lock();
@@ -9895,6 +9928,19 @@ public static final int /*long*/ gtk_spin_button_new(int /*long*/ adjustment, do
 		lock.unlock();
 	}
 }
+/** 
+ * @param spin_button cast=(GtkSpinButton*)
+ * @param adjustment cast=(GtkAdjustment *) 
+ **/
+public static final native void _gtk_spin_button_configure(int /*long*/ spin_button, int /*long*/ adjustment, double climb_rate, int digits);
+public static final void gtk_spin_button_configure(int /*long*/ spin_button, int /*long*/ adjustment, double climb_rate, int digits) {
+	lock.lock();
+	try {
+		_gtk_spin_button_configure(spin_button, adjustment, climb_rate, digits);
+	} finally {
+		lock.unlock();
+	}
+}
 /** @param spin_button cast=(GtkSpinButton*) */
 public static final native int /*long*/ _gtk_spin_button_get_adjustment(int /*long*/ spin_button);
 public static final int /*long*/ gtk_spin_button_get_adjustment(int /*long*/ spin_button) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_aix.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_aix.mak
index ca5d7a2..888bcc9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_aix.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_aix.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2008 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_linux.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_linux.mak
index 5aa3ac5..c7998ba 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_linux.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/make_linux.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os.c
index ae0bb25..9a68414 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.c
index 288b3c9..543cf42 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.h
index 4aeae2a..2359a17 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/os_stats.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/motif/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/motif/OS.java
index 2d359b9..5a01b8d 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/motif/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/motif/OS.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
index e73eab9..130bcbc 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat	
@@ -1,14 +1,13 @@
- at echo off
-rem *******************************************************************************
-rem  Copyright (c) 2000, 2009 IBM Corporation and others.
-rem  All rights reserved. This program and the accompanying materials
-rem  are made available under the terms of the Eclipse Public License v1.0
-rem  which accompanies this distribution, and is available at
-rem  http://www.eclipse.org/legal/epl-v10.html
-rem 
-rem  Contributors:
-rem      IBM Corporation - initial API and implementation
-rem *******************************************************************************
+ at rem ***************************************************************************
+ at rem Copyright (c) 2000, 2010 IBM Corporation and others.
+ at rem All rights reserved. This program and the accompanying materials
+ at rem are made available under the terms of the Eclipse Public License v1.0
+ at rem which accompanies this distribution, and is available at
+ at rem http://www.eclipse.org/legal/epl-v10.html
+ at rem
+ at rem Contributors:
+ at rem      IBM Corporation - initial API and implementation
+ at rem ***************************************************************************
 
 @echo off
 
@@ -20,13 +19,20 @@ IF x.%1==x.x86_64 GOTO X86_64
 IF x.%1==x.ia64 GOTO IA64
 
 :X86
-
-call "%SWT_BUILDDIR%\MSVCs\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
-call %MSSDK%\setenv /XP32 /RETAIL
 IF x.%OUTPUT_DIR%==x. set OUTPUT_DIR=..\..\..\org.eclipse.swt.win32.win32.x86
 IF x.%JAVA_HOME%==x. set JAVA_HOME=%SWT_BUILDDIR%\ibm-java2-sdk-50-win-i386
+IF x.%BUILD_XULRUNNER%==x.true GOTO XULRUNNER
+call "%SWT_BUILDDIR%\MSVCs\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
+call %MSSDK%\setenv /XP32 /RETAIL
+IF x.%1==x.x86 shift
+GOTO MAKE
+
+:XULRUNNER
+IF x.%DEV_TOOLS%==x. set DEV_TOOLS=S:\swt-builddir
+set MSSDK="%SWT_BUILDDIR%\MSSDKs\feb2003"
+call %SWT_BUILDDIR%\MSVCs\msvc60\vc98\bin\vcvars32.bat
+call %MSSDK%\setenv /XP32 /RETAIL
 IF x.%XULRUNNER_SDK%==x. set XULRUNNER_SDK=%SWT_BUILDDIR%\gecko-sdk
-set XULRUNNER_MAKE=make_xulrunner
 IF x.%1==x.x86 shift
 GOTO MAKE
 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.c
index 5f0b789..6abe595 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.h
index 7e10c69..ea9a100 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/com_custom.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak
index 883d1c5..45da377 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak	
@@ -1,5 +1,5 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -68,7 +68,7 @@ CFLAGS = -O1 -DNDEBUG $(cflags) $(cvarsmt) $(CFLAGS) \
 	/I"$(JAVA_HOME)\include" /I"$(JAVA_HOME)\include\win32" /I.
 RCFLAGS = $(rcflags) $(rcvars) $(RCFLAGS) -DSWT_FILE_VERSION=\"$(maj_ver).$(min_ver)\" -DSWT_COMMA_VERSION=$(comma_ver)
 
-all: make_swt make_awt make_gdip make_wgl $(XULRUNNER_MAKE)
+all: make_swt make_awt make_gdip make_wgl
 
 xpcom_custom.obj: xpcom_custom.cpp
 	cl $(MOZILLACFLAGS) xpcom_custom.cpp
@@ -154,7 +154,7 @@ swt_xpcom.res:
 swt_xpcominit.res:
 	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(XPCOMINIT_LIB)\" -r -fo swt_xpcom.res swt_xpcom.rc
 
-install: all
+install:
 	copy *.dll $(OUTPUT_DIR)
 
 clean:
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h
index 9e6a5af..36ed3f0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.h
index 02768c0..2ffdf48 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/COM.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/COM.java
index 53cc526..5554ff5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/COM.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/COM.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -913,6 +913,9 @@ public static final int IA2_TEXT_BOUNDARY_PARAGRAPH = 		3;
 public static final int IA2_TEXT_BOUNDARY_LINE = 			4;
 public static final int IA2_TEXT_BOUNDARY_ALL = 			5;
 
+public static final int IA2_TEXT_OFFSET_LENGTH = 			-1;
+public static final int IA2_TEXT_OFFSET_CARET = 			-2;
+
 public static final int IA2_SCROLL_TYPE_TOP_LEFT = 			0;
 public static final int IA2_SCROLL_TYPE_BOTTOM_RIGHT = 		1;
 public static final int IA2_SCROLL_TYPE_TOP_EDGE = 			2;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/IOleObject.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/IOleObject.java
index 0031eee..6fea374 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/IOleObject.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/ole/win32/IOleObject.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/DOCHOSTUIINFO.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/DOCHOSTUIINFO.java
index 079a86b..918d59e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/DOCHOSTUIINFO.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/DOCHOSTUIINFO.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LVINSERTMARK.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LVINSERTMARK.java
index 888f51c..8eed26f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LVINSERTMARK.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LVINSERTMARK.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java
index 23498c6..5a7ded0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/wpf/org/eclipse/swt/internal/wpf/OS.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/wpf/org/eclipse/swt/internal/wpf/OS.java
index 30e7237..5ce5945 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/wpf/org/eclipse/swt/internal/wpf/OS.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/wpf/org/eclipse/swt/internal/wpf/OS.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java
index 1d01b19..336908a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/Printer.java
index 38e68d9..7b12bbd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java
index 9629412..a7da036 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java
index d17e296..292ef0d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java
index b7762b2..98fc552 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/PrintDialog.java
index 115744e..5920b40 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/Printer.java
index 4752ef2..00c30a8 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/emulated/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java
index 94d1a2b..03cbb14 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -355,7 +355,11 @@ public PrinterData open() {
 		OS.gtk_print_unix_dialog_set_settings(handle, settings);
 		OS.gtk_print_unix_dialog_set_page_setup(handle, page_setup);
 		OS.g_object_unref(settings);
-		OS.g_object_unref(page_setup);		
+		OS.g_object_unref(page_setup);
+		if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+			int /*long*/ group = OS.gtk_window_get_group(0);
+			OS.gtk_window_group_add_window (group, handle);
+		}
 		OS.gtk_window_set_modal(handle, true);
 		PrinterData data = null;
 		//TODO: Handle 'Print Preview' (GTK_RESPONSE_APPLY).
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/Printer.java
index 32d31d6..0812440 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java
index df845de..72e4dde 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java
index 294f0bb..83ac822 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java
index df845de..72e4dde 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java
index 9526500..c3cf7f5 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java
index 500df29..1fd65f7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -327,16 +327,18 @@ public PrinterData open() {
 	/* Initialize PRINTDLG fields, including DEVMODE. */
 	pd.Flags = OS.PD_RETURNDEFAULT;
 	if (OS.PrintDlg(pd)) {
-	
+		if (pd.hDevNames != 0) {
+			OS.GlobalFree(pd.hDevNames);
+			pd.hDevNames = 0;
+		}
+
 		/*
 		 * If user setup info from a previous print dialog was specified,
 		 * then restore the previous DEVMODE struct.
 		 */
-		int /*long*/ lpInitData = 0;
-		int /*long*/ hHeap = OS.GetProcessHeap();
 		byte devmodeData [] = printerData.otherData;
 		if (devmodeData != null && devmodeData.length != 0) {
-			lpInitData = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, devmodeData.length);
+			int /*long*/ lpInitData = OS.GlobalAlloc(OS.GMEM_FIXED | OS.GMEM_ZEROINIT, devmodeData.length);
 			OS.MoveMemory(lpInitData, devmodeData, devmodeData.length);
 			if (pd.hDevMode != 0) OS.GlobalFree(pd.hDevMode);
 			pd.hDevMode = lpInitData;
@@ -407,7 +409,6 @@ public PrinterData open() {
 			TCHAR buffer = new TCHAR(0, size);
 			OS.MoveMemory(buffer, ptr, size);	
 			OS.GlobalUnlock(hMem);
-			if (pd.hDevNames != 0) OS.GlobalFree(pd.hDevNames);
 	
 			int driverOffset = offsets[0];
 			int i = 0;
@@ -460,11 +461,17 @@ public PrinterData open() {
 				data.orientation = dmOrientation == OS.DMORIENT_LANDSCAPE ? PrinterData.LANDSCAPE : PrinterData.PORTRAIT;
 			}
 			OS.GlobalUnlock(hMem);
-			if (pd.hDevMode != 0) OS.GlobalFree(pd.hDevMode);
-			if (lpInitData != 0) OS.HeapFree(hHeap, 0, lpInitData);
 			printerData = data;
 		}
 	}
+	if (pd.hDevNames != 0) {
+		OS.GlobalFree(pd.hDevNames);
+		pd.hDevNames = 0;
+	}
+	if (pd.hDevMode != 0) {
+		OS.GlobalFree(pd.hDevMode);
+		pd.hDevMode = 0;
+	}
 	/* Destroy the BIDI orientation window */
 	if (hwndParent != hwndOwner) {
 		if (enabled) OS.EnableWindow (hwndParent, true);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java
index 4d205ed..cf02a0e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/PrintDialog.java
index df845de..72e4dde 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/PrintDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/PrintDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/Printer.java
index 9526500..c3cf7f5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/Printer.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/wpf/org/eclipse/swt/printing/Printer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/carbon/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/carbon/org/eclipse/swt/program/Program.java
index 9e5985c..477401e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/carbon/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/carbon/org/eclipse/swt/program/Program.java	
@@ -257,9 +257,7 @@ static int getURL(String fileName) {
 
 static boolean isExecutable (String fileName) {
 	boolean result = false;
-	char[] chars = new char[fileName.length()];
-	fileName.getChars(0, chars.length, chars, 0);
-	int str = OS.CFStringCreateWithCharacters(0, chars, chars.length);
+	int str = createCFString(fileName);
 	if (str != 0) {
 		int fileManager = Cocoa.objc_msgSend(Cocoa.C_NSFileManager, Cocoa.S_defaultManager);
 		int ptr = OS.malloc (1);
@@ -267,17 +265,42 @@ static boolean isExecutable (String fileName) {
 			if (fileManager != 0 && Cocoa.objc_msgSend(fileManager, Cocoa.S_fileExistsAtPath_isDirectory, str, ptr) != 0) {
 				byte[] isDirectory = new byte[1];
 				OS.memmove(isDirectory, ptr, 1);
-				if (isDirectory[0] == 0) {
-					result = Cocoa.objc_msgSend(fileManager, Cocoa.S_isExecutableFileAtPath, str) != 0;
+				if (isDirectory[0] == 0 && Cocoa.objc_msgSend (fileManager, Cocoa.S_isExecutableFileAtPath, str) != 0) {
+					int url = OS.CFURLCreateWithFileSystemPath(OS.kCFAllocatorDefault, str, OS.kCFURLPOSIXPathStyle, false);
+					if (url != 0) {
+						byte[] fsRef = new byte[80];
+						if (OS.CFURLGetFSRef(url, fsRef)) {
+							int [] type = new int[1];
+							OS.LSCopyItemAttribute(fsRef, OS.kLSRolesAll, OS.kLSItemContentType(), type);
+							if (type[0] != 0) {
+								int exeUti = createCFString("public.unix-executable"); //$NON-NLS-1$
+								result = OS.UTTypeConformsTo(type[0], exeUti);
+								OS.CFRelease(exeUti);
+								if (!result) {
+									int scriptUti = createCFString("public.shell-script"); //$NON-NLS-1$
+									result = OS.UTTypeEqual(type[0], scriptUti);
+									OS.CFRelease(scriptUti);
+								}
+								OS.CFRelease(type[0]);
+							}
+						}
+						OS.CFRelease(url);
+					}
 				}
 			}
+			OS.free(ptr);
 		}
-		OS.free(ptr);
 		OS.CFRelease(str);
 	}
 	return result;
 }
 
+static int createCFString(String string) {
+	char [] buffer = new char[string.length()];
+	string.getChars(0, buffer.length, buffer, 0);
+	return OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, buffer, buffer.length);
+}
+
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
@@ -298,12 +321,13 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified
- * it is used as working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java
index 3f6bfdf..df4ee14 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java	
@@ -235,7 +235,10 @@ static boolean isExecutable (String fileName) {
 		byte[] isDirectory = new byte[1];
 		OS.memmove(isDirectory, ptr, 1);
 		if (isDirectory[0] == 0 && manager.isExecutableFileAtPath(path)) {
-			result = true;
+			NSWorkspace ws = NSWorkspace.sharedWorkspace();
+			NSString type = ws.typeOfFile(path, 0);
+			result = type != null && (ws.type(type, NSString.stringWith("public.unix-executable")) || //$NON-NLS-1$
+					OS.UTTypeEqual(type.id, NSString.stringWith("public.shell-script").id)); //$NON-NLS-1$
 		}
 	}
 	OS.free(ptr);
@@ -262,12 +265,13 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified
- * it is used as working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/emulated/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/emulated/org/eclipse/swt/program/Program.java
index ae9a27b..77cf60c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/emulated/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/emulated/org/eclipse/swt/program/Program.java	
@@ -95,12 +95,13 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified
- * it is used as working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome.c
index 56e878a..4160de1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -263,18 +263,6 @@ JNIEXPORT jint JNICALL GNOME_NATIVE(_1gnome_1vfs_1mime_1application_1launch)
 }
 #endif
 
-#ifndef NO__1gnome_1vfs_1mime_1can_1be_1executable
-JNIEXPORT jboolean JNICALL GNOME_NATIVE(_1gnome_1vfs_1mime_1can_1be_1executable)
-	(JNIEnv *env, jclass that, jintLong arg0)
-{
-	jboolean rc = 0;
-	GNOME_NATIVE_ENTER(env, that, _1gnome_1vfs_1mime_1can_1be_1executable_FUNC);
-	rc = (jboolean)gnome_vfs_mime_can_be_executable((const char *)arg0);
-	GNOME_NATIVE_EXIT(env, that, _1gnome_1vfs_1mime_1can_1be_1executable_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO__1gnome_1vfs_1mime_1extensions_1list_1free
 JNIEXPORT void JNICALL GNOME_NATIVE(_1gnome_1vfs_1mime_1extensions_1list_1free)
 	(JNIEnv *env, jclass that, jintLong arg0)
@@ -339,6 +327,22 @@ fail:
 }
 #endif
 
+#ifndef NO__1gnome_1vfs_1mime_1type_1get_1equivalence
+JNIEXPORT jintLong JNICALL GNOME_NATIVE(_1gnome_1vfs_1mime_1type_1get_1equivalence)
+	(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jintLong rc = 0;
+	GNOME_NATIVE_ENTER(env, that, _1gnome_1vfs_1mime_1type_1get_1equivalence_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jintLong)gnome_vfs_mime_type_get_equivalence((const char *)arg0, (const char *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GNOME_NATIVE_EXIT(env, that, _1gnome_1vfs_1mime_1type_1get_1equivalence_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO__1gnome_1vfs_1url_1show
 JNIEXPORT jint JNICALL GNOME_NATIVE(_1gnome_1vfs_1url_1show)
 	(JNIEnv *env, jclass that, jintLong arg0)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.c
index c3e7504..27d6a54 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -38,12 +38,12 @@ char * GNOME_nativeFunctionNames[] = {
 	"_1gnome_1vfs_1make_1uri_1from_1input_1with_1dirs",
 	"_1gnome_1vfs_1mime_1application_1free",
 	"_1gnome_1vfs_1mime_1application_1launch",
-	"_1gnome_1vfs_1mime_1can_1be_1executable",
 	"_1gnome_1vfs_1mime_1extensions_1list_1free",
 	"_1gnome_1vfs_1mime_1get_1default_1application",
 	"_1gnome_1vfs_1mime_1get_1extensions_1list",
 	"_1gnome_1vfs_1mime_1registered_1mime_1type_1list_1free",
 	"_1gnome_1vfs_1mime_1type_1from_1name",
+	"_1gnome_1vfs_1mime_1type_1get_1equivalence",
 	"_1gnome_1vfs_1url_1show",
 	"memmove",
 };
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.h
index a4746d2..eea5ffe 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/library/gnome_stats.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -46,12 +46,12 @@ typedef enum {
 	_1gnome_1vfs_1make_1uri_1from_1input_1with_1dirs_FUNC,
 	_1gnome_1vfs_1mime_1application_1free_FUNC,
 	_1gnome_1vfs_1mime_1application_1launch_FUNC,
-	_1gnome_1vfs_1mime_1can_1be_1executable_FUNC,
 	_1gnome_1vfs_1mime_1extensions_1list_1free_FUNC,
 	_1gnome_1vfs_1mime_1get_1default_1application_FUNC,
 	_1gnome_1vfs_1mime_1get_1extensions_1list_FUNC,
 	_1gnome_1vfs_1mime_1registered_1mime_1type_1list_1free_FUNC,
 	_1gnome_1vfs_1mime_1type_1from_1name_FUNC,
+	_1gnome_1vfs_1mime_1type_1get_1equivalence_FUNC,
 	_1gnome_1vfs_1url_1show_FUNC,
 	memmove_FUNC,
 } GNOME_FUNCS;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/org/eclipse/swt/internal/gnome/GNOME.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/org/eclipse/swt/internal/gnome/GNOME.java
index 2b73490..30f539d 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/org/eclipse/swt/internal/gnome/GNOME.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gnome/org/eclipse/swt/internal/gnome/GNOME.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved.
  * The contents of this file are made available under the terms
  * of the GNU Lesser General Public License (LGPL) Version 2.1 that
  * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
@@ -25,6 +25,9 @@ public static final int GNOME_FILE_DOMAIN_PIXMAP = 4;
 public static final int GNOME_ICON_LOOKUP_FLAGS_NONE = 0;
 public static final int GNOME_PARAM_NONE = 0;
 public static final int GNOME_VFS_MIME_APPLICATION_ARGUMENT_TYPE_URIS = 0;
+public static final int GNOME_VFS_MIME_IDENTICAL = 1;
+public static final int GNOME_VFS_MIME_PARENT = 2;
+public static final int GNOME_VFS_MIME_UNRELATED = 0;
 public static final int GNOME_VFS_OK = 0;
 public static final int GNOME_VFS_MAKE_URI_DIR_NONE = 0;
 public static final int GNOME_VFS_MAKE_URI_DIR_HOMEDIR = 1<<0;
@@ -191,16 +194,6 @@ public static final void gnome_vfs_mime_application_free(int /*long*/ applicatio
 		lock.unlock();
 	}
 }
-/** @param mimeType cast=(const char *) */
-public static final native boolean _gnome_vfs_mime_can_be_executable(int /*long*/ mimeType);
-public static final boolean gnome_vfs_mime_can_be_executable(int /*long*/ mimeType) {
-	lock.lock();
-	try {
-		return _gnome_vfs_mime_can_be_executable(mimeType);
-	} finally {
-		lock.unlock();
-	}
-}
 /** @param command_string cast=(const char *) */
 public static final native boolean _gnome_vfs_is_executable_command_string(byte[] command_string);
 public static final boolean gnome_vfs_is_executable_command_string(byte[] command_string) {
@@ -275,6 +268,19 @@ public static final int /*long*/ gnome_vfs_mime_type_from_name(byte[] file) {
 		lock.unlock();
 	}
 }
+/** 
+ * @param mime_type cast=(const char *)
+ * @param base_mime_type cast=(const char *) 
+ */
+public static final native int /*long*/ _gnome_vfs_mime_type_get_equivalence(int /*long*/ mime_type, byte [] base_mime_type);
+public static final int /*long*/ gnome_vfs_mime_type_get_equivalence(int /*long*/ mime_type, byte [] base_mime_type) {
+	lock.lock();
+	try {
+		return _gnome_vfs_mime_type_get_equivalence(mime_type, base_mime_type);
+	} finally {
+		lock.unlock();
+	}
+}
 /**
  * @method flags=dynamic
  * @param url cast=(const char *)
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java
index 0d956ea..6f78ce2 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java	
@@ -312,6 +312,7 @@ static boolean cde_init(Display display) {
 static boolean cde_isExecutable(String fileName) {
 	byte [] fileNameBuffer = Converter.wcsToMbcs(null, fileName, true);
 	return OS.access(fileNameBuffer, OS.X_OK) == 0;
+	//TODO find the content type of the file and check if it is executable
 }
 
 static String[] parseCommand(String cmd) {
@@ -564,7 +565,14 @@ static boolean gnome_isExecutable(String fileName) {
 	int /*long*/ uri = GNOME.gnome_vfs_make_uri_from_input(fileNameBuffer);
 	int /*long*/ mimeType = GNOME.gnome_vfs_get_mime_type(uri);
 	GNOME.g_free(uri);
-	return GNOME.gnome_vfs_mime_can_be_executable(mimeType);
+	
+	byte[] exeType = Converter.wcsToMbcs (null, "application/x-executable", true); //$NON-NLS-1$
+	boolean result = GNOME.gnome_vfs_mime_type_get_equivalence(mimeType, exeType) != GNOME.GNOME_VFS_MIME_UNRELATED;
+	if (!result) {
+		byte [] shellType = Converter.wcsToMbcs (null, "application/x-shellscript", true); //$NON-NLS-1$
+		result = GNOME.gnome_vfs_mime_type_get_equivalence(mimeType, shellType) == GNOME.GNOME_VFS_MIME_IDENTICAL;
+	}
+	return result;
 }
 
 /**
@@ -839,21 +847,27 @@ static Program gio_getProgram(Display display, String mimeType) {
 static Program gio_getProgram (Display display, int /*long*/ application) {
 	Program program = new Program();
 	program.display = display;
+	int length;
+	byte[] buffer;
 	int /*long*/ applicationName = OS.g_app_info_get_name (application);
-	int length = OS.strlen (applicationName);
-	byte[] buffer = new byte [length];
-	OS.memmove (buffer, applicationName, length);		
-	program.name = new String (Converter.mbcsToWcs (null, buffer));
+	if (applicationName != 0) {
+		length = OS.strlen (applicationName);
+		if (length > 0) {
+			buffer = new byte [length];
+			OS.memmove (buffer, applicationName, length);
+			program.name = new String (Converter.mbcsToWcs (null, buffer));
+		}
+	}
 	int /*long*/ applicationCommand = OS.g_app_info_get_executable (application);
-	length = OS.strlen (applicationCommand);
-	buffer = new byte [length];
-	OS.memmove (buffer, applicationCommand, length);		
-	program.command = new String (Converter.mbcsToWcs (null, buffer));
+	if (applicationCommand != 0) {
+		length = OS.strlen (applicationCommand);
+		if (length > 0) {
+			buffer = new byte [length];
+			OS.memmove (buffer, applicationCommand, length);
+			program.command = new String (Converter.mbcsToWcs (null, buffer));
+		}
+	}
 	program.gnomeExpectUri = OS.g_app_info_supports_uris(application);
-	int /*long*/ applicationId = OS.g_app_info_get_id (application);
-	length = OS.strlen(applicationId);
-	buffer = new byte[length + 1];
-	OS.memmove(buffer, applicationId, length);
 	int /*long*/ icon = OS.g_app_info_get_icon(application);
 	if (icon != 0) {
 		int /*long*/ icon_name = OS.g_icon_to_string(icon);
@@ -898,7 +912,27 @@ static Program[] gio_getPrograms(Display display) {
 static boolean gio_isExecutable(String fileName) {
 	byte[] fileNameBuffer = Converter.wcsToMbcs (null, fileName, true);
 	if (OS.g_file_test(fileNameBuffer, OS.G_FILE_TEST_IS_DIR)) return false;
-	return OS.g_file_test(fileNameBuffer, OS.G_FILE_TEST_IS_EXECUTABLE);
+	if (!OS.g_file_test(fileNameBuffer, OS.G_FILE_TEST_IS_EXECUTABLE)) return false;
+	int /*long*/ file = OS.g_file_new_for_path (fileNameBuffer);
+	boolean result = false;
+	if (file != 0) {
+		byte[] buffer = Converter.wcsToMbcs (null, "*", true); //$NON-NLS-1$
+		int /*long*/ fileInfo = OS.g_file_query_info(file, buffer, 0, 0, 0);
+		if (fileInfo != 0) {
+			int /*long*/ contentType = OS.g_file_info_get_content_type(fileInfo);
+			if (contentType != 0) {
+				byte[] exeType = Converter.wcsToMbcs (null, "application/x-executable", true); //$NON-NLS-1$
+				result = OS.g_content_type_is_a(contentType, exeType);
+				if (!result) {
+					byte [] shellType = Converter.wcsToMbcs (null, "application/x-shellscript", true); //$NON-NLS-1$
+					result = OS.g_content_type_equals(contentType, shellType);
+				}
+			}
+			OS.g_object_unref(fileInfo);
+		}
+		OS.g_object_unref (file);
+	}
+	return result;
 }
 
 /**
@@ -926,18 +960,24 @@ boolean gio_execute(String fileName) {
 	boolean result = false;
 	byte[] commandBuffer = Converter.wcsToMbcs (null, command, true);
 	byte[] nameBuffer = Converter.wcsToMbcs (null, name, true);
-	int /*long*/ application = OS.g_app_info_create_from_commandline(commandBuffer, nameBuffer, gnomeExpectUri ? OS.G_APP_INFO_CREATE_SUPPORTS_URIS : OS.G_APP_INFO_CREATE_NONE, 0);
+	int /*long*/ application = OS.g_app_info_create_from_commandline(commandBuffer, nameBuffer, gnomeExpectUri
+				? OS.G_APP_INFO_CREATE_SUPPORTS_URIS : OS.G_APP_INFO_CREATE_NONE, 0);
 	if (application != 0) {
 		byte[] fileNameBuffer = Converter.wcsToMbcs (null, fileName, true);
-		int /*long*/ file = OS.g_file_new_for_path (fileNameBuffer);
+		int /*long*/ file = 0;
+		if (OS.g_app_info_supports_uris (application)) {
+			file = OS.g_file_new_for_uri (fileNameBuffer);
+		} else {
+			file = OS.g_file_new_for_path (fileNameBuffer);
+		}
 		if (file != 0) {
 			int /*long*/ list = OS.g_list_append (0, file);
 			result = OS.g_app_info_launch (application, list, 0, 0);
-			OS.g_list_free(list);
+			OS.g_list_free (list);
 			OS.g_object_unref (file);
 		}
 		OS.g_object_unref (application);
-	}	
+	}
 	return result;
 }
 
@@ -964,7 +1004,7 @@ static boolean isExecutable(Display display, String fileName) {
 		case DESKTOP_GIO: return gio_isExecutable(fileName);
 		case DESKTOP_GNOME_24:
 		case DESKTOP_GNOME: return gnome_isExecutable(fileName);
-		case DESKTOP_CDE: return cde_isExecutable(fileName);
+		case DESKTOP_CDE: return false; //cde_isExecutable()
 	}
 	return false;
 }
@@ -987,23 +1027,24 @@ public static boolean launch(String fileName) {
 }
 
 /**
-* Launches the operating system executable associated with the file or
-* URL (http:// or https://).  If the file is an executable then the
-* executable is launched.  If a valid working directory is specified 
-* it is used as the working directory for the launched program.
-* Note that a <code>Display</code> must already exist to guarantee
-* that this method returns an appropriate result.
-*
-* @param fileName the file or program name or URL (http:// or https://)
-* @param workingDir the name of the working directory or null
-* @return <code>true</code> if the file is launched, otherwise <code>false</code>
-* 
-* @exception IllegalArgumentException <ul>
-*    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
-* </ul>
-* 
-* @since 3.6
-*/
+ * Launches the operating system executable associated with the file or
+ * URL (http:// or https://).  If the file is an executable then the
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
+ * Note that a <code>Display</code> must already exist to guarantee
+ * that this method returns an appropriate result.
+ *
+ * @param fileName the file name or program name or URL (http:// or https://)
+ * @param workingDir the name of the working directory or null
+ * @return <code>true</code> if the file is launched, otherwise <code>false</code>
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public static boolean launch (String fileName, String workingDir) {
 	return launch(Display.getCurrent(), fileName, workingDir);
 }
@@ -1019,7 +1060,7 @@ static boolean launch (Display display, String fileName, String workingDir) {
 			Compatibility.exec (new String [] {fileName}, null, workingDir);
 			return true;
 		} catch (IOException e) {
-			//
+			return false;
 		}
 	}
 	switch (getDesktop (display)) {
@@ -1044,7 +1085,13 @@ static boolean launch (Display display, String fileName, String workingDir) {
 			}
 			break;
 	}
-	return false;
+	/* If the above launch attempts didn't launch the file, then try with exec().*/
+	try {
+		Compatibility.exec (new String [] {fileName}, null, workingDir);
+		return true;
+	} catch (IOException e) {
+		return false;
+	}
 }
 
 /**
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java
index 558564f..58a8d97 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java	
@@ -583,7 +583,14 @@ static boolean gnome_isExecutable(String fileName) {
 	int /*long*/ uri = GNOME.gnome_vfs_make_uri_from_input(fileNameBuffer);
 	int /*long*/ mimeType = GNOME.gnome_vfs_get_mime_type(uri);
 	GNOME.g_free(uri);
-	return GNOME.gnome_vfs_mime_can_be_executable(mimeType);
+	
+	byte[] exeType = Converter.wcsToMbcs (null, "application/x-executable", true); //$NON-NLS-1$
+	boolean result = GNOME.gnome_vfs_mime_type_get_equivalence(mimeType, exeType) != GNOME.GNOME_VFS_MIME_UNRELATED;
+	if (!result) {
+		byte [] shellType = Converter.wcsToMbcs (null, "application/x-shellscript", true); //$NON-NLS-1$
+		result = GNOME.gnome_vfs_mime_type_get_equivalence(mimeType, shellType) == GNOME.GNOME_VFS_MIME_IDENTICAL;
+	}
+	return result;
 }
 
 /**
@@ -720,7 +727,7 @@ static boolean isExecutable(Display display, String fileName) {
 	switch(getDesktop(display)) {
 		case DESKTOP_GNOME_24:
 		case DESKTOP_GNOME: return gnome_isExecutable(fileName);
-		case DESKTOP_CDE: return cde_isExecutable(fileName);
+		case DESKTOP_CDE: return false; //cde_isExecutable(fileName);
 	}
 	return false;
 }
@@ -743,24 +750,24 @@ public static boolean launch(String fileName) {
 }
 
 /**
-* Launches the operating system executable associated with the file or
-* URL (http:// or https://).  If the file is an executable then the
-* executable is launched.  If a valid working directory is specified 
-* it is used as the working directory for the launched program.
-* Note that a <code>Display</code> must already exist to guarantee
-* that this method returns an appropriate result.
-*
-* @param fileName the file or program name or URL (http:// or https://)
-* @param workingDir the name of the working directory or null
-* @return <code>true</code> if the file is launched, otherwise <code>false</code>
-* 
-* @exception IllegalArgumentException <ul>
-*    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
-*    <li>ERROR_INVALID_ARGUMENT when workingDir is not valid</li>
-* </ul>
-* 
-* @since 3.6
-*/
+ * Launches the operating system executable associated with the file or
+ * URL (http:// or https://).  If the file is an executable then the
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
+ * Note that a <code>Display</code> must already exist to guarantee
+ * that this method returns an appropriate result.
+ *
+ * @param fileName the file name or program name or URL (http:// or https://)
+ * @param workingDir the name of the working directory or null
+ * @return <code>true</code> if the file is launched, otherwise <code>false</code>
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public static boolean launch (String fileName, String workingDir) {
 	return launch(Display.getCurrent(), fileName, workingDir);
 }
@@ -776,7 +783,7 @@ static boolean launch (Display display, String fileName, String workingDir) {
 			Compatibility.exec (new String [] {fileName}, null, workingDir);
 			return true;
 		} catch (IOException e) {
-			//
+			return false;
 		}
 	}
 	switch (getDesktop (display)) {
@@ -799,7 +806,13 @@ static boolean launch (Display display, String fileName, String workingDir) {
 			}
 			break;
 	}
-	return false;
+	/* If the above launch attempts didn't launch the file, then try with exec().*/
+	try {
+		Compatibility.exec (new String [] {fileName}, null, workingDir);
+		return true;
+	} catch (IOException e) {
+		return false;
+	}
 }
 
 /**
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java
index 72f1eac..741fa46 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java	
@@ -178,18 +178,18 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified 
- * it is used as the working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
- *    <li>ERROR_INVALID_ARGUMENT when workingDir is not valid</li>
  * </ul>
  * 
  * @since 3.6
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java
index ca8f276..65b7177 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -269,18 +269,18 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified 
- * it is used as the working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
- *    <li>ERROR_INVALID_ARGUMENT when workingDir is not valid</li>
  * </ul>
  * 
  * @since 3.6
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/wpf/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/wpf/org/eclipse/swt/program/Program.java
index c0d0c10..c4993e7 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/wpf/org/eclipse/swt/program/Program.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/wpf/org/eclipse/swt/program/Program.java	
@@ -242,18 +242,18 @@ public static boolean launch (String fileName) {
 /**
  * Launches the operating system executable associated with the file or
  * URL (http:// or https://).  If the file is an executable then the
- * executable is launched.  If a valid working directory is specified 
- * it is used as the working directory for the launched program.
+ * executable is launched. The program is launched with the specified
+ * working directory only when the <code>workingDir</code> exists and
+ * <code>fileName</code> is an executable.
  * Note that a <code>Display</code> must already exist to guarantee
  * that this method returns an appropriate result.
  *
- * @param fileName the file or program name or URL (http:// or https://)
+ * @param fileName the file name or program name or URL (http:// or https://)
  * @param workingDir the name of the working directory or null
  * @return <code>true</code> if the file is launched, otherwise <code>false</code>
  * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_NULL_ARGUMENT when fileName is null</li>
- *    <li>ERROR_INVALID_ARGUMENT when workingDir is not valid</li>
  * </ul>
  * 
  * @since 3.6
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
index 816b943..1d3f806 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java	
@@ -50,7 +50,7 @@ public class WebKit extends WebBrowser {
 	static final String USER_AGENT = "user-agent"; //$NON-NLS-1$
 	static final int MAX_PORT = 65535;
 	static final int MAX_PROGRESS = 100;
-	static final int[] MIN_VERSION = {1, 1, 90};
+	static final int[] MIN_VERSION = {1, 2, 0};
 	static final char SEPARATOR_FILE = System.getProperty ("file.separator").charAt (0); //$NON-NLS-1$
 	static final int STOP_PROPOGATE = 1;
 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java
index 147a45f..4a2cb56 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java	
@@ -680,7 +680,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Pattern.java
index 978d827..9e94116 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Pattern.java	
@@ -185,7 +185,7 @@ void destroy() {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Transform.java
index 5072156..067008c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Transform.java	
@@ -213,7 +213,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Color.java
index a8d82e0..ca1b545 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Color.java	
@@ -246,7 +246,7 @@ void init( int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Cursor.java
index e3fa790..3fd6125 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Cursor.java	
@@ -74,6 +74,10 @@ Cursor(Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -604,7 +608,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Device.java
index 566ba56..1770c30 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Font.java
index c45930b..5f1e41e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Font.java	
@@ -413,7 +413,7 @@ int createCFString(String str) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/FontData.java
index 3dfcd98..4a485de 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java
index 36e4f46..806758f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java	
@@ -2543,7 +2543,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Image.java
index 8f8d57e..cf0e30a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Image.java	
@@ -925,7 +925,7 @@ public int internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -939,7 +939,7 @@ public void internal_dispose_GC (int context, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Path.java
index 8715722..6f0dc4e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Path.java	
@@ -721,7 +721,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Pattern.java
index 94fb2fc..c2d0dd3 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Pattern.java	
@@ -276,7 +276,7 @@ int drawPatternProc (int ref, int context) {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Region.java
index 2053907..6eb7585 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Region.java	
@@ -417,7 +417,7 @@ public boolean intersects(Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java
index 6b3005e..4167bf3 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java	
@@ -1565,6 +1565,17 @@ public int[] getSegments() {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1722,6 +1733,17 @@ public int getWidth () {
 	return wrapWidth == 0 ? -1 : wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout();	
 	return wrapIndent;
@@ -1744,7 +1766,7 @@ static boolean isUnderlineSupported (TextStyle style) {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1885,7 +1907,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1894,6 +1916,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1948,7 +1972,7 @@ public void setOrientation(int orientation) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1957,12 +1981,18 @@ public void setOrientation(int orientation) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1980,6 +2010,23 @@ public void setSegments(int[] segments) {
 	this.segments = segments;
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
@@ -2215,6 +2262,20 @@ public void setWidth (int width) {
 	setLayoutControl(OS.kATSULineWidthTag, OS.Long2Fix(Math.max(0, width)), 4);
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout ();
 	if (wrapIndent < 0) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Transform.java
index c35a4aa..0a62775 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/Transform.java	
@@ -208,7 +208,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java
index 0211c05..cf64bd5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java	
@@ -103,6 +103,12 @@ public Button (Composite parent, int style) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Canvas.java
index a44ed95..781853d 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Canvas.java	
@@ -283,7 +283,7 @@ void reskinChildren (int flags) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Combo.java
index c914059..574b9b0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Combo.java	
@@ -46,7 +46,7 @@ import org.eclipse.swt.internal.carbon.Rect;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Composite.java
index fa60b9c..c5d5c65 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Composite.java	
@@ -268,6 +268,33 @@ void createScrolledHandle (int parentHandle) {
 	OS.HIObjectSetAccessibilityIgnored (handle, true);
 }
 
+/** 
+ * Fills the interior of the rectangle specified by the arguments,
+ * with the receiver's background. 
+ *
+ * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.</p>
+ * 
+ * @param gc the gc where the rectangle is to be filled
+ * @param x the x coordinate of the rectangle to be filled
+ * @param y the y coordinate of the rectangle to be filled
+ * @param width the width of the rectangle to be filled
+ * @param height the height of the rectangle to be filled
+ * @param offsetX the image background x offset 
+ * @param offsetY the image background y offset
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the gc has been disposed</li>
+ * </ul>
+ * @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>
+ * 
+ * @since 3.6
+ */
 public void drawBackground (GC gc, int x, int y, int width, int height, int offsetX, int offsetY) {
 	checkWidget ();
 	if (gc == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -813,6 +840,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java
index 3582442..c06d8de 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java	
@@ -36,7 +36,8 @@ import org.eclipse.swt.accessibility.Accessible;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -712,7 +713,7 @@ void destroyWidget () {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -754,7 +755,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1286,6 +1287,11 @@ int getMininumHeight () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -4251,7 +4257,7 @@ boolean traverseMnemonic (char key) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -4289,7 +4295,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -4406,7 +4412,8 @@ boolean traverse (int traversal, char character, int keyCode, int keyLocation, i
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java
index 3ba9d31..a4d6a36 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
index b92c9b3..552e27f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java	
@@ -91,7 +91,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -2095,6 +2095,18 @@ public Image getSystemImage (int id) {
 	return null;
 }
 
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	return null;
@@ -3820,6 +3832,8 @@ public static void setAppName (String name) {
  * Sets the application version to the argument.
  *
  * @param version the new app version
+ * 
+ * @since 3.6
  */
 public static void setAppVersion (String version) {
 	APP_VERSION = version;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java
index d7d8b97..9dfd562 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Link.java
index 9065330..a74de59 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Link.java	
@@ -177,7 +177,7 @@ void createWidget () {
 
 void drawBackground (int control, int context) {
 	fillBackground (control, context, null);
-	if (!hasFocus () || !drawFocusRing () || focusIndex == -1) return;
+	if (!hasFocus () || focusIndex == -1) return;
 	int [] outMetric = new int [1];
 	OS.GetThemeMetric (OS.kThemeMetricFocusRectOutset, outMetric);
 	outMetric[0]--;
@@ -674,6 +674,18 @@ void setFontStyle (Font font) {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Menu.java
index 9bfe542..cb05733 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Menu.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Menu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/MenuItem.java
index 427638f..6611e93 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/MenuItem.java	
@@ -184,7 +184,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ScrollBar.java
index 3b81bf9..b4eeb50 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ScrollBar.java	
@@ -370,8 +370,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -387,6 +386,19 @@ public int getThumb () {
     return OS.GetControlViewSize (handle);
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	int rgnHandle = OS.NewRgn ();
@@ -402,6 +414,20 @@ public Rectangle getThumbBounds () {
 	return result;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	HIThemeTrackDrawInfo info = new HIThemeTrackDrawInfo();
@@ -741,10 +767,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java
index 4dee8a1..6653f8c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Slider.java
index b94b1e0..008dfe8 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Slider.java	
@@ -297,8 +297,7 @@ public int getSelection () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -459,10 +458,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Spinner.java
index 59a2729..025be82 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Spinner.java	
@@ -1049,11 +1049,11 @@ public void setIncrement (int value) {
 
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1071,11 +1071,11 @@ public void setMaximum (int value) {
 
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TableItem.java
index 55dca25..e567770 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TableItem.java	
@@ -225,10 +225,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Text.java
index 6a8f4ce..0a1f282 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Text.java	
@@ -42,7 +42,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolItem.java
index 9a8c9e5..c2bd67b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolItem.java	
@@ -187,6 +187,12 @@ int actionProc (int theControl, int partCode) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java
index 06faa5f..7baa1f2 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TreeItem.java
index 1262166..9a2292b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TreeItem.java	
@@ -375,10 +375,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1186,8 +1186,6 @@ public void setFont (int index, Font font) {
  *
  * @param color the new color (or null)
  *
- * @since 2.0
- * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
  * </ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Widget.java
index d96fa82..631dfb3 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Widget.java	
@@ -665,6 +665,7 @@ int drawItemProc (int browser, int item, int property, int itemState, int theRec
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -981,7 +982,7 @@ boolean isActive () {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
@@ -1577,8 +1578,31 @@ protected void removeListener (int eventType, SWTEventListener handler) {
 }
 
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java
index 3b22aea..175dd48 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java	
@@ -246,7 +246,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java
index 5453a7c..7f4ba39 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java	
@@ -90,6 +90,10 @@ Cursor(Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -426,7 +430,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java
index 0f76ce6..161c4ca 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java
index c23e637..b1be7e9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java	
@@ -352,7 +352,7 @@ void init(String name, float height, int style, String nsName) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java
index 288fe6d..c25f636 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java
index ee50a64..602f680 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java	
@@ -2531,12 +2531,18 @@ public FontMetrics getFontMetrics() {
 	if (handle == null) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	NSAutoreleasePool pool = checkGC(FONT);
 	try {
-		NSFont font = data.font.handle;
-		int ascent = (int)(0.5f + font.ascender());
-		int descent = (int)(0.5f + (-font.descender() + font.leading()));	
-		String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 
-		int averageCharWidth = stringExtent(s).x / s.length();
-		return FontMetrics.cocoa_new(ascent, descent, averageCharWidth, 0, ascent + descent);
+		if (data.textStorage == null) createLayout();
+		String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  //$NON-NLS-1$
+		NSAttributedString attribStr = createString(s, 0, false);
+		data.textStorage.setAttributedString(attribStr);
+		attribStr.release();
+		NSLayoutManager layoutManager = data.layoutManager;
+		layoutManager.glyphRangeForTextContainer(data.textContainer);
+		NSRect rect = layoutManager.usedRectForTextContainer(data.textContainer);
+		int width = (int)Math.ceil(rect.width);
+		int ascent = (int)layoutManager.defaultBaselineOffsetForFont(data.font.handle);
+		int height = (int)layoutManager.defaultLineHeightForFont(data.font.handle);
+		return FontMetrics.cocoa_new(ascent, height - ascent, width / s.length(), 0, height);
 	} finally {
 		uncheckGC(pool);
 	}
@@ -2953,7 +2959,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java
index 7556bff..feed568 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java
index 1a5d6fb..3a38788 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java	
@@ -1159,7 +1159,7 @@ public int /*long*/ internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -1183,7 +1183,7 @@ public void internal_dispose_GC (int /*long*/ context, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java
index 431a97a..1de065c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java	
@@ -708,7 +708,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java
index 1670e9a..4d72b20 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java	
@@ -195,7 +195,7 @@ void destroy() {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java
index 52be267..68351dc 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java	
@@ -631,7 +631,7 @@ public boolean intersects(Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java
index 48a598d..ecf88c9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java	
@@ -1021,9 +1021,8 @@ public FontMetrics getLineMetrics (int lineIndex) {
 		int length = text.length();
 		if (length == 0) {
 			Font font = this.font != null ? this.font : device.systemFont;
-			NSFont nsFont = font.handle;
-			int ascent = (int)(0.5f + nsFont.ascender());
-			int descent = (int)(0.5f + (-nsFont.descender() + nsFont.leading()));	
+			int ascent = (int)layoutManager.defaultBaselineOffsetForFont(font.handle);
+			int descent = (int)layoutManager.defaultLineHeightForFont(font.handle) - ascent;
 			ascent = Math.max(ascent, this.ascent);
 			descent = Math.max(descent, this.descent);
 			return FontMetrics.cocoa_new(ascent, descent, 0, 0, ascent + descent);
@@ -1342,6 +1341,17 @@ public int[] getSegments() {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1493,6 +1503,17 @@ public int getWidth () {
 	return wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout();	
 	return wrapIndent;
@@ -1524,7 +1545,7 @@ void initClasses () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1677,7 +1698,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1686,6 +1707,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1702,6 +1725,20 @@ public void setIndent (int indent) {
 	}
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout ();
 	if (wrapIndent < 0) return;
@@ -1770,7 +1807,7 @@ public void setOrientation(int orientation) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1779,12 +1816,18 @@ public void setOrientation(int orientation) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1808,6 +1851,23 @@ public void setSegments(int[] segments) {
 	}
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java
index 6fdb13d..dc6c63e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java	
@@ -243,7 +243,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java
index 7c2f8ab..40d56b0 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java	
@@ -104,6 +104,12 @@ public Button (Composite parent, int style) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java
index ea50a2e..3312be1 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java	
@@ -278,7 +278,7 @@ void reskinChildren (int flags) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java
index 088e7ff..56f5842 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java	
@@ -41,7 +41,7 @@ import org.eclipse.swt.internal.cocoa.*;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
@@ -61,6 +61,7 @@ public class Combo extends Composite {
 	boolean receivingFocus;
 	boolean ignoreSetObject, ignoreSelection;
 	NSRange selectionRange;
+	boolean listVisible;
 
 	static final int VISIBLE_COUNT = 5;
 
@@ -427,6 +428,7 @@ void createHandle () {
 		widget.menu().setAutoenablesItems(false);
 		widget.setTarget(widget);
 		widget.setAction(OS.sel_sendSelection);
+		widget.menu().setDelegate(widget);
 		view = widget;
 	} else {
 		NSComboBox widget = (NSComboBox)new SWTComboBox().alloc();
@@ -454,6 +456,14 @@ void createWidget() {
 	}
 }
 
+void comboBoxWillDismiss(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+	listVisible = false;
+}
+
+void comboBoxWillPopUp(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+	listVisible = true;
+}
+
 /**
  * Cuts the selected text.
  * <p>
@@ -708,8 +718,8 @@ public String [] getItems () {
  * @since 3.4
  */
 public boolean getListVisible () {
-	//TODO
-	return false;
+	checkWidget ();
+	return listVisible;
 }
 
 String getNameText () {
@@ -951,6 +961,14 @@ boolean isEventView (int /*long*/ id) {
 	return true;
 }
 
+void menuWillOpen(int /*long*/ id, int /*long*/ sel, int /*long*/ menu) {
+	listVisible = true;
+}
+
+void menuDidClose(int /*long*/ id, int /*long*/ sel, int /*long*/ menu) {
+	listVisible = false;
+}
+
 void mouseDown(int /*long*/ id, int /*long*/ sel, int /*long*/ theEvent) {
 	// If this is a combo box with an editor field and the control is disposed
 	// while the view's cell editor is open we crash while tearing down the
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java
index 381ecde..3d19efb 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java	
@@ -12,6 +12,7 @@ package org.eclipse.swt.widgets;
 
 
 import org.eclipse.swt.*;
+import org.eclipse.swt.accessibility.*;
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.cocoa.*;
 
@@ -169,12 +170,13 @@ int /*long*/ accessibilityAttributeValue (int /*long*/ id, int /*long*/ sel, int
 }
 
 
-boolean accessibilityIsIgnored(int /*long*/ id, int /*long*/ sel) {
-	if (id == view.id && view instanceof SWTCanvasView) {
-		return false;
+boolean accessibilityIsIgnored(int /*long*/ id, int /*long*/ sel) {	
+	if (id == accessibleHandle()) {
+		// If a Composite or subclass has an Accessible it should not be ignored.
+		if (accessible != null) return accessible.internal_accessibilityIsIgnored(ACC.CHILDID_SELF);
 	}
-
-	return super.accessibilityIsIgnored(id, sel);	
+	
+	return super.accessibilityIsIgnored(id, sel);
 }
 
 /**
@@ -293,6 +295,33 @@ void createHandle () {
 	}
 }
 
+/** 
+ * Fills the interior of the rectangle specified by the arguments,
+ * with the receiver's background. 
+ *
+ * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.</p>
+ * 
+ * @param gc the gc where the rectangle is to be filled
+ * @param x the x coordinate of the rectangle to be filled
+ * @param y the y coordinate of the rectangle to be filled
+ * @param width the width of the rectangle to be filled
+ * @param height the height of the rectangle to be filled
+ * @param offsetX the image background x offset 
+ * @param offsetY the image background y offset
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the gc has been disposed</li>
+ * </ul>
+ * @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>
+ * 
+ * @since 3.6
+ */
 public void drawBackground(GC gc, int x, int y, int width, int height, int offsetX, int offsetY) {
 	checkWidget ();
 	if (gc == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -552,6 +581,7 @@ void keyDown (int /*long*/ id, int /*long*/ sel, int /*long*/ theEvent) {
 	if (hasFocus()) {
 		if ((state & CANVAS) != 0) {
 			Shell s = this.getShell();
+			s.deferFlushing();
 			NSArray array = NSArray.arrayWithObject (new NSEvent (theEvent));
 			s.keyInputHappened = false;
 			view.interpretKeyEvents (array);
@@ -707,6 +737,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
@@ -849,55 +937,48 @@ void scrollWheel (int /*long*/ id, int /*long*/ sel, int /*long*/ theEvent) {
 	if ((state & CANVAS) != 0) {
 		NSView view = scrollView != null ? scrollView : this.view;
 		if (id == view.id) {
-			NSWindow window = view.window ();
-			try {
-				window.retain ();
-				window.disableFlushWindow ();
-				NSEvent nsEvent = new NSEvent(theEvent);
-				boolean handled = false;
-				float /*double*/ delta = nsEvent.deltaY();
-				if (delta != 0) {
-					boolean doit = true;
-					if (hooks (SWT.MouseWheel) || filters (SWT.MouseWheel)) {
-						doit = sendMouseEvent(nsEvent, SWT.MouseWheel, true);
-					}
-					ScrollBar bar = verticalBar;
-					if (doit && bar != null && bar.getEnabled ()) {
-						if (-1 < delta && delta < 0) delta = -1;
-						if (0 < delta && delta < 1) delta = 1;
-						int selection = Math.max (0, (int)(0.5f + bar.getSelection () - bar.getIncrement () * delta));
-						bar.setSelection (selection);
-						Event event = new Event ();
-					    event.detail = delta > 0 ? SWT.PAGE_UP : SWT.PAGE_DOWN;	
-						bar.sendSelectionEvent (SWT.Selection, event, true);
-						handled = true;
-					}
-					if (!doit) handled = true;
+			getShell().deferFlushing();
+			NSEvent nsEvent = new NSEvent(theEvent);
+			boolean handled = false;
+			float /*double*/ delta = nsEvent.deltaY();
+			if (delta != 0) {
+				boolean doit = true;
+				if (hooks (SWT.MouseWheel) || filters (SWT.MouseWheel)) {
+					doit = sendMouseEvent(nsEvent, SWT.MouseWheel, true);
 				}
-				delta = nsEvent.deltaX ();
-				if (delta != 0) {
-					boolean doit = true;
-					if (hooks (SWT.MouseHorizontalWheel) || filters (SWT.MouseHorizontalWheel)) {
-						doit = sendMouseEvent(nsEvent, SWT.MouseHorizontalWheel, true);
-					}
-					ScrollBar bar = horizontalBar;
-					if (doit && bar != null && bar.getEnabled ()) {
-						if (-1 < delta && delta < 0) delta = -1;
-						if (0 < delta && delta < 1) delta = 1;
-						int selection = Math.max (0, (int)(0.5f + bar.getSelection () - bar.getIncrement () * delta));
-						bar.setSelection (selection);
-						Event event = new Event ();
-					    event.detail = delta > 0 ? SWT.PAGE_UP : SWT.PAGE_DOWN;	
-						bar.sendSelectionEvent (SWT.Selection, event, true);
-						handled = true;
-					}
-					if (!doit) handled = true;
+				ScrollBar bar = verticalBar;
+				if (doit && bar != null && bar.getEnabled ()) {
+					if (-1 < delta && delta < 0) delta = -1;
+					if (0 < delta && delta < 1) delta = 1;
+					int selection = Math.max (0, (int)(0.5f + bar.getSelection () - bar.getIncrement () * delta));
+					bar.setSelection (selection);
+					Event event = new Event ();
+					event.detail = delta > 0 ? SWT.PAGE_UP : SWT.PAGE_DOWN;	
+					bar.sendSelectionEvent (SWT.Selection, event, true);
+					handled = true;
+				}
+				if (!doit) handled = true;
+			}
+			delta = nsEvent.deltaX ();
+			if (delta != 0) {
+				boolean doit = true;
+				if (hooks (SWT.MouseHorizontalWheel) || filters (SWT.MouseHorizontalWheel)) {
+					doit = sendMouseEvent(nsEvent, SWT.MouseHorizontalWheel, true);
+				}
+				ScrollBar bar = horizontalBar;
+				if (doit && bar != null && bar.getEnabled ()) {
+					if (-1 < delta && delta < 0) delta = -1;
+					if (0 < delta && delta < 1) delta = 1;
+					int selection = Math.max (0, (int)(0.5f + bar.getSelection () - bar.getIncrement () * delta));
+					bar.setSelection (selection);
+					Event event = new Event ();
+					event.detail = delta > 0 ? SWT.PAGE_UP : SWT.PAGE_DOWN;	
+					bar.sendSelectionEvent (SWT.Selection, event, true);
+					handled = true;
 				}
-				if (!handled) view.superview().scrollWheel(nsEvent);
-			} finally {
-				window.enableFlushWindow ();
-				window.release ();
+				if (!doit) handled = true;
 			}
+			if (!handled) view.superview().scrollWheel(nsEvent);
 			return;
 		}
 		callSuper(id, sel, theEvent);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java
index 2c8ba0d..a6f8114 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java	
@@ -26,7 +26,8 @@ import org.eclipse.swt.internal.cocoa.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -154,12 +155,24 @@ int /*long*/ accessibilityActionNames(int /*long*/ id, int /*long*/ sel) {
 
 int /*long*/ accessibilityAttributeNames(int /*long*/ id, int /*long*/ sel) {
 	
-	if (id == accessibleHandle() && accessible != null) {			
-		NSArray returnValue = accessible.internal_accessibilityAttributeNames(ACC.CHILDID_SELF);
-		if (returnValue != null) return returnValue.id;
+	int /*long*/ returnValue = 0;
+	
+	if (id == accessibleHandle() && accessible != null) {
+		// See if the accessible is defining the attribute set for the control.
+		id value = accessible.internal_accessibilityAttributeNames(ACC.CHILDID_SELF);
+		returnValue = (value != null ? value.id : 0);
+		
+		// If not, ask Cocoa for the set for this control.
+		if (returnValue == 0) returnValue = super.accessibilityAttributeNames(id, sel);
+		
+		// Add relationship attributes.
+		returnValue = accessible.internal_addRelationAttributes(returnValue);
 	}
 
-	return super.accessibilityAttributeNames(id, sel);
+	// If the SWT accessibility didn't give us anything get the default for the view/cell.
+	if (returnValue == 0) returnValue = super.accessibilityAttributeNames(id, sel);
+	
+	return returnValue;
 }
 
 int /*long*/ accessibilityParameterizedAttributeNames(int /*long*/ id, int /*long*/ sel) {
@@ -953,7 +966,7 @@ void doCommandBySelector (int /*long*/ id, int /*long*/ sel, int /*long*/ select
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -995,7 +1008,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1547,6 +1560,11 @@ int getMininumHeight () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -3740,6 +3758,7 @@ public void setVisible (boolean visible) {
 		}
 	}
 	topView().setHidden(!visible);
+	if (isDisposed ()) return;
 	invalidateVisibleRegion();
 	if (!visible) {
 		/*
@@ -4041,7 +4060,7 @@ boolean traverseMnemonic (char key) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -4079,7 +4098,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -4196,7 +4215,8 @@ boolean traverse (int traversal, char character, int keyCode, int keyLocation, i
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
@@ -4329,8 +4349,21 @@ public void update () {
 void update (boolean all) {
 //	checkWidget();
 	if (display.isPainting.containsObject(view)) return;
-	//TODO - not all
-	view.displayIfNeeded ();
+	Shell shell = getShell();
+	NSWindow window = shell.deferFlushing ? view.window() : null;
+	try {
+		if (window != null) {
+			window.retain();
+			window.disableFlushWindow();
+		}
+		//TODO - not all
+		view.displayIfNeeded ();
+	} finally {
+		if (window != null) {
+			window.enableFlushWindow();
+			window.release();
+		}
+	}
 }
 
 void updateBackgroundColor () {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java
index cc90dca..a8ad95f 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java
index 680457d..fc41c1a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -137,7 +137,7 @@ public String open () {
 	}
 	Display display = parent != null ? parent.getDisplay() : Display.getCurrent();
 	display.setModalDialog(this);
-	NSString dir = filterPath != null ? NSString.stringWith(filterPath) : null;
+	NSString dir = (filterPath != null && filterPath.length() > 0) ? NSString.stringWith(filterPath) : null;
 	int /*long*/ response = panel.runModalForDirectory(dir, null);
 	if (parent != null && (style & SWT.SHEET) != 0) {
 		application.endSheet(panel, 0);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
index adac4d1..8daac5c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java	
@@ -78,7 +78,7 @@ import org.eclipse.swt.internal.cocoa.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -109,7 +109,7 @@ public class Display extends Device {
 	/* Sync/Async Widget Communication */
 	Synchronizer synchronizer;
 	Thread thread;
-	boolean allowTimers, runAsyncMessages;
+	boolean allowTimers = true, runAsyncMessages = true;
 
 	GCData[] contexts;
 
@@ -119,8 +119,8 @@ public class Display extends Device {
 	Control currentControl, trackingControl, tooltipControl;
 	Widget tooltipTarget;
 	
-	NSMutableArray isPainting, needsDisplay, needsDisplayInRect;
-
+	NSMutableArray isPainting, needsDisplay, needsDisplayInRect, runLoopModes;
+	
 	NSDictionary markedAttributes;
 	
 	/* Fonts */
@@ -1874,6 +1874,18 @@ public Tray getSystemTray () {
 	return tray = new Tray (this, SWT.NONE);
 }
 
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	if (taskBar != null) return taskBar;
@@ -1974,6 +1986,15 @@ protected void init () {
 	runLoopObserver = OS.CFRunLoopObserverCreate (0, activities, true, 0, observerProc, 0);
 	if (runLoopObserver == 0) error (SWT.ERROR_NO_HANDLES);
 	OS.CFRunLoopAddObserver (OS.CFRunLoopGetCurrent (), runLoopObserver, OS.kCFRunLoopCommonModes ());
+
+	// Add AWT Runloop mode for SWT/AWT.
+	int /*long*/ cls = OS.objc_lookUpClass("JNFRunLoop"); //$NON-NLS-1$
+	if (cls != 0) {
+		int /*long*/ mode = OS.objc_msgSend(cls, OS.sel_javaRunLoopMode);
+		if (mode != 0) {
+			OS.CFRunLoopAddObserver (OS.CFRunLoopGetCurrent (), runLoopObserver, mode);
+		}
+	}
 	
 	cursorSetCallback = new Callback(this, "cursorSetProc", 2);
 	int /*long*/ cursorSetProc = cursorSetCallback.getAddress();
@@ -2189,6 +2210,7 @@ void initClasses () {
 	OS.class_addMethod(cls, OS.sel_acceptsFirstResponder, proc2, "@:");
 	OS.class_addMethod(cls, OS.sel_isOpaque, proc2, "@:");
 	OS.class_addMethod(cls, OS.sel_updateOpenGLContext_, proc3, "@:@");
+	OS.class_addMethod(cls, OS.sel_clearDeferFlushing, proc2, "@:");
 	addEventMethods(cls, proc2, proc3, drawRectProc, hitTestProc, setNeedsDisplayInRectProc);
 	addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc);
 	addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc);
@@ -2201,6 +2223,8 @@ void initClasses () {
 	OS.class_addMethod(cls, OS.sel_textDidChange_, proc3, "@:@");
 	OS.class_addMethod(cls, OS.sel_textViewDidChangeSelection_, proc3, "@:@");
 	OS.class_addMethod(cls, OS.sel_comboBoxSelectionDidChange_, proc3, "@:@");
+	OS.class_addMethod(cls, OS.sel_comboBoxWillDismiss_, proc3, "@:@");
+	OS.class_addMethod(cls, OS.sel_comboBoxWillPopUp_, proc3, "@:@");
 	OS.class_addMethod(cls, OS.sel_textView_willChangeSelectionFromCharacterRange_toCharacterRange_, textWillChangeSelectionProc, "@:@{NSRange}{NSRange}");
 	addEventMethods(cls, proc2, proc3, drawRectProc, hitTestProc, setNeedsDisplayInRectProc);
 	addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc);
@@ -2318,6 +2342,8 @@ void initClasses () {
 	cls = OS.objc_allocateClassPair(OS.class_NSPopUpButton, className, 0);
 	OS.class_addIvar(cls, SWT_OBJECT, size, (byte)align, types);
 	OS.class_addMethod(cls, OS.sel_sendSelection, proc2, "@:");
+	OS.class_addMethod(cls, OS.sel_menuWillOpen_, proc3, "@:@");
+	OS.class_addMethod(cls, OS.sel_menuDidClose_, proc3, "@:@");
 	addEventMethods(cls, proc2, proc3, drawRectProc, hitTestProc, setNeedsDisplayInRectProc);
 	addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc);
 	addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc);
@@ -2481,6 +2507,7 @@ void initClasses () {
 	OS.class_addIvar(cls, SWT_OBJECT, size, (byte)align, types);
 	OS.class_addMethod(cls, OS.sel_sizeOfLabel_, sizeOfLabelProc, "@::");
 	OS.class_addMethod(cls, OS.sel_drawLabel_inRect_, drawLabelInRectProc, "@::{NSRect}");
+	addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc);
 	OS.objc_registerClassPair(cls);
 	
 	className = "SWTTextView";
@@ -3386,7 +3413,8 @@ void releaseDisplay () {
 	if (needsDisplay != null) needsDisplay.release();
 	if (needsDisplayInRect != null) needsDisplayInRect.release();
 	if (isPainting != null) isPainting.release();
-	needsDisplay = needsDisplayInRect = isPainting = null;
+	if (runLoopModes != null) runLoopModes.release();
+	needsDisplay = needsDisplayInRect = isPainting = runLoopModes = null;
 	
 	modalShells = null;
 	modalDialog = null;
@@ -3622,6 +3650,20 @@ boolean runDeferredLayouts () {
 	return false;
 }
 
+NSArray runLoopModes() {
+	if (runLoopModes == null) {
+		runLoopModes = NSMutableArray.arrayWithCapacity(3);
+		runLoopModes.addObject(OS.NSEventTrackingRunLoopMode);
+		runLoopModes.addObject(OS.NSDefaultRunLoopMode);
+		runLoopModes.addObject(OS.NSModalPanelRunLoopMode);
+		runLoopModes.retain();
+	}
+	
+	runLoopModes.retain();
+	runLoopModes.autorelease();
+	return runLoopModes;
+}
+
 boolean runPaint () {
 	if (needsDisplay == null && needsDisplayInRect == null) return false;
 	if (needsDisplay != null) {
@@ -3802,6 +3844,8 @@ public static void setAppName (String name) {
  * Sets the application version to the argument.
  *
  * @param version the new app version
+ * 
+ * @since 3.6
  */
 public static void setAppVersion (String version) {
 	APP_VERSION = version;
@@ -4257,7 +4301,9 @@ public void timerExec (int milliseconds, Runnable runnable) {
 	}
 	NSNumber userInfo = NSNumber.numberWithInt(index);
 	NSTimer timer = NSTimer.scheduledTimerWithTimeInterval(milliseconds / 1000.0, timerDelegate, OS.sel_timerProc_, userInfo, false);
-	NSRunLoop.currentRunLoop().addTimer(timer, OS.NSEventTrackingRunLoopMode);
+	NSRunLoop runLoop = NSRunLoop.currentRunLoop();
+	runLoop.addTimer(timer, OS.NSModalPanelRunLoopMode);
+	runLoop.addTimer(timer, OS.NSEventTrackingRunLoopMode);
 	timer.retain();
 	if (timer != null) {
 		nsTimers [index] = timer;
@@ -4858,6 +4904,8 @@ static int /*long*/ windowProc(int /*long*/ id, int /*long*/ sel) {
 		return widget.shouldDrawInsertionPoint(id, sel) ? 1 : 0;
 	} else if (sel == OS.sel_accessibleHandle) {
 		return widget.accessibleHandle();
+	} else if (sel == OS.sel_clearDeferFlushing) {
+		widget.clearDeferFlushing(id, sel);
 	}
 	return 0;
 }
@@ -5078,6 +5126,10 @@ static int /*long*/ windowProc(int /*long*/ id, int /*long*/ sel, int /*long*/ a
 		return result;
 	} else if (sel == OS.sel_comboBoxSelectionDidChange_) {
 		widget.comboBoxSelectionDidChange(id, sel, arg0);
+	} else if (sel == OS.sel_comboBoxWillDismiss_) {
+		widget.comboBoxWillDismiss(id, sel, arg0);
+	} else if (sel == OS.sel_comboBoxWillPopUp_) {
+		widget.comboBoxWillPopUp(id, sel, arg0);
 	} else if (sel == OS.sel_drawViewBackgroundInRect_) {
 		NSRect rect = new NSRect();
 		OS.memmove(rect, arg0, NSRect.sizeof);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java
index 467cb01..870bcec 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java
index 5da257e..e4c5241 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java
index c1ce56a..cb1947c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java
index 60e2ce7..6f46287 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java	
@@ -10,11 +10,10 @@
  *******************************************************************************/
 package org.eclipse.swt.widgets;
 
-import org.eclipse.swt.internal.cocoa.*;
-
 import org.eclipse.swt.*;
 import org.eclipse.swt.events.*;
 import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.cocoa.*;
 
 /**
  * Instances of this class represent a selectable
@@ -42,10 +41,10 @@ public class Link extends Control {
 	NSScrollView scrollView;
 	String text;
 	Point [] offsets;
-	Point selection;
 	String [] ids;
 	int [] mnemonics;
 	NSColor linkColor;
+	int focusIndex;
 	
 /**
  * Constructs a new instance of this class given its parent
@@ -115,6 +114,13 @@ boolean textView_clickOnLink_atIndex(int /*long*/ id, int /*long*/ sel, int /*lo
 	Event event = new Event ();
 	event.text = str.getString();
 	sendSelectionEvent (SWT.Selection, event, true);
+	for (int i = 0; i < offsets.length; i++) {
+		if ((charIndex >= offsets[i].x) && (charIndex <= offsets[i].y)) {
+			focusIndex = i;
+			break;
+		}
+	}
+	redrawWidget(view, false);
 	return true;
 }
 
@@ -122,28 +128,47 @@ public Point computeSize (int wHint, int hHint, boolean changed) {
 	checkWidget ();
 	if (wHint != SWT.DEFAULT && wHint < 0) wHint = 0;
 	if (hHint != SWT.DEFAULT && hHint < 0) hHint = 0;
-	int width, height;
-	//TODO wrapping, wHint
-	int borderStyle = hasBorder() ? OS.NSBezelBorder : OS.NSNoBorder;
-	NSSize borderSize = NSScrollView.frameSizeForContentSize(new NSSize(), false, false, borderStyle);
-	NSTextView widget = (NSTextView)view;
-	NSSize size = widget.textStorage().size();
-	width = (int)(size.width + borderSize.width);
-	height = (int)(size.height + borderSize.height);
+
+	int width = 0, height = 0;
+	NSLayoutManager layoutManager = (NSLayoutManager)new NSLayoutManager ().alloc ().init ();
+	NSTextContainer textContainer = (NSTextContainer)new NSTextContainer ().alloc ();
+	NSSize size = new NSSize ();
+	size.width = size.height = Float.MAX_VALUE;
+	if (wHint != SWT.DEFAULT) size.width = wHint;
+	if (hHint != SWT.DEFAULT) size.height = hHint;
+	textContainer.initWithContainerSize (size);
+	textContainer.setLineFragmentPadding(2);
+	layoutManager.addTextContainer (textContainer);
+
+	NSTextStorage textStorage = (NSTextStorage)new NSTextStorage ().alloc ().init ();
+	textStorage.setAttributedString (((NSTextView)view).textStorage ());
+	layoutManager.setTextStorage (textStorage);
+	layoutManager.glyphRangeForTextContainer (textContainer);
+
+	NSRect rect = layoutManager.usedRectForTextContainer (textContainer);
+	width = layoutManager.numberOfGlyphs () == 0 ? DEFAULT_WIDTH : (int)Math.ceil (rect.width);
+	height = (int)Math.ceil (rect.height);
+	textStorage.release ();
+	textContainer.release ();
+	layoutManager.release ();
+
+	if (width <= 0) width = DEFAULT_WIDTH;
+	if (height <= 0) height = DEFAULT_HEIGHT;
 	if (wHint != SWT.DEFAULT) width = wHint;
 	if (hHint != SWT.DEFAULT) height = hHint;
-	int border = getBorderWidth ();
-	width += border * 2;
-	height += border * 2;
 
-	// TODO is this true?  if so, can this rounding be turned off?
-	/*
-	 * Bug in Cocoa.  NSTextStorage.size() seems to return a width
-	 * value that is rounded down, because its result is never
-	 * fractional.  The workaround is to increment width by 1
-	 * to ensure that it is wide enough to show the full text.  
-	 */
-	width += 1;
+	// Accommodate any border.
+	size.width = width;
+	size.height = height;
+	int border = hasBorder() ? OS.NSBezelBorder : OS.NSNoBorder;
+	size = NSScrollView.frameSizeForContentSize(size, false, false, border);
+	width = (int)size.width;
+	height = (int)size.height;
+
+	if (!hasBorder()) {
+		width += 2;
+		height += 2;
+	}
 	return new Point (width, height);
 }
 
@@ -152,15 +177,19 @@ void createHandle () {
 	NSScrollView scrollWidget = (NSScrollView)new SWTScrollView().alloc();
 	scrollWidget.init();
 	scrollWidget.setDrawsBackground(false);
+	scrollWidget.setAutoresizesSubviews (true);
 	scrollWidget.setBorderType(hasBorder() ? OS.NSBezelBorder : OS.NSNoBorder);
 
 	NSTextView widget = (NSTextView)new SWTTextView().alloc();
 	widget.init();
 	widget.setEditable(false);
+	NSSize size = new NSSize ();
+	size.width = size.height = Float.MAX_VALUE;
+	widget.setMaxSize (size);
 	widget.setDrawsBackground(false);
 	widget.setDelegate(widget);
 	widget.setAutoresizingMask (OS.NSViewWidthSizable | OS.NSViewHeightSizable);
-	widget.textContainer().setLineFragmentPadding(0);
+	widget.textContainer().setLineFragmentPadding(2);
 	widget.setFont(getFont().handle);
 	widget.setAlignment (OS.NSLeftTextAlignment);
 
@@ -179,6 +208,10 @@ void createWidget () {
 	text = "";
 	NSDictionary dict = ((NSTextView)view).linkTextAttributes();
 	linkColor = new NSColor(dict.valueForKey(OS.NSForegroundColorAttributeName));
+	offsets = new Point [0];
+	ids = new String [0];
+	mnemonics = new int [0]; 
+	focusIndex = -1;
 }
 
 NSFont defaultNSFont () {
@@ -190,8 +223,26 @@ void deregister () {
 	if (scrollView != null) display.removeWidget (scrollView);
 }
 
-void drawBackground (int /*long*/ id, NSGraphicsContext context, NSRect rect) {
-	fillBackground (view, context, rect, -1);
+void drawBackground (int /*long*/ id, NSGraphicsContext context, NSRect rectangle) {
+	fillBackground (view, context, rectangle, -1);
+	if (!hasFocus() || focusIndex == -1) return;
+	int [] outMetric = new int [1];
+	OS.GetThemeMetric (OS.kThemeMetricFocusRectOutset, outMetric);
+	outMetric[0]--;
+	CGRect r = new CGRect();
+	NSRect[] rect = getRectangles(focusIndex);
+	if (rect == null) return;
+	for (int i = 0; i < rect.length && rect[i] != null; i++) {
+		r.origin.x = rect[i].x + outMetric[0];
+		r.origin.y = rect[i].y + outMetric[0];
+		/*
+		 * sometimes the rect[i].width is smaller than 2 * outMetric and subtracting
+		 * it makes r.size.width < 0
+		 */
+		r.size.width = rect[i].width - outMetric[0];
+		r.size.height = rect[i].height - (2 * outMetric[0]);
+		OS.HIThemeDrawFocusRect(r, true, context.graphicsPort(), OS.kHIThemeOrientationNormal);
+	}
 }
 
 void enableWidget (boolean enabled) {
@@ -214,6 +265,56 @@ void enableWidget (boolean enabled) {
 	dict.setDictionary(linkTextAttributes);
 	dict.setValue(enabled ? linkColor : nsColor, OS.NSForegroundColorAttributeName);
 	widget.setLinkTextAttributes(dict);
+	redrawWidget(view, false);
+}
+
+NSRect[] getRectangles(int linkIndex) {
+	/*
+	 * Returns the focus rectangles to be drawn for a link. Number of
+	 * rectangles is > 1 when the link has multiple lines.
+	 */
+	if (linkIndex == -1) return null;
+	
+	NSTextView widget = ((NSTextView)view);
+	NSLayoutManager layoutManager = widget.layoutManager();
+	NSRange range = new NSRange();
+	range.location = offsets[linkIndex].x;
+	range.length = offsets[linkIndex].y - offsets[linkIndex].x + 1;
+	NSRange glyphRange = layoutManager.glyphRangeForCharacterRange(range, 0);
+
+	int /*long*/ rangePtr = OS.malloc(NSRange.sizeof);
+	NSRange lineRange = new NSRange();
+	
+	/* compute number of lines in the link */
+	int numberOfLines = 0;
+	int /*long*/ index = glyphRange.location;
+	int /*long*/ glyphEndIndex = glyphRange.location + glyphRange.length;
+	while (index < glyphEndIndex) {
+		numberOfLines++;
+		layoutManager.lineFragmentUsedRectForGlyphAtIndex(index, rangePtr, true);
+		OS.memmove(lineRange, rangePtr, NSRange.sizeof);
+		index = lineRange.location + lineRange.length;
+	}
+	
+	/* compute the enclosing rectangle(s) for the link*/
+	NSRect [] result = new NSRect[numberOfLines];
+	index = glyphRange.location;
+	for (int i = 0; index < glyphEndIndex && i < numberOfLines; i++) {
+		NSRect usedRect = layoutManager.lineFragmentUsedRectForGlyphAtIndex(index, rangePtr, true);
+		OS.memmove(lineRange, rangePtr, NSRange.sizeof);
+		index = lineRange.location + lineRange.length;
+		
+		if (lineRange.location < glyphRange.location) {
+			lineRange.length = index - glyphRange.location;
+			lineRange.location = glyphRange.location;
+		}
+		if (index > glyphEndIndex) lineRange.length = glyphEndIndex - lineRange.location;
+		NSRect boundsRect = layoutManager.boundingRectForGlyphRange(lineRange, widget.textContainer());
+		result[i] = new NSRect();
+		OS.NSIntersectionRect(result[i], usedRect, boundsRect);
+	}
+	OS.free(rangePtr);
+	return result;
 }
 
 String getNameText () {
@@ -246,6 +347,12 @@ void register () {
 	display.addWidget(scrollView, this);
 }
 
+void releaseHandle () {
+	super.releaseHandle ();
+	if (scrollView != null) scrollView.release();
+	scrollView = null;
+}
+
 void releaseWidget () {
 	super.releaseWidget ();
 	offsets = null;
@@ -429,6 +536,47 @@ int parseMnemonics (char[] buffer, int start, int end, StringBuffer result) {
 	return mnemonic;
 }
 
+void sendFocusEvent(int type) {
+	if (focusIndex != -1) redrawWidget(view, false);
+	super.sendFocusEvent(type);
+}
+
+boolean sendKeyEvent(int type, Event event) {
+	boolean result = super.sendKeyEvent (type, event);
+	if (!result) return result;
+	if (focusIndex == -1) return result;
+	if (type != SWT.KeyDown)  return result;
+	
+	int keyCode = event.keyCode;
+	switch (keyCode) {
+	case SWT.CR:
+	case SWT.KEYPAD_CR:
+	case 32: /* Space */
+		Event event1 = new Event ();
+		event1.text = ids [focusIndex];
+		sendEvent (SWT.Selection, event1);
+		break;
+	case SWT.TAB:
+		int modifierFlags = event.stateMask;
+		boolean next = (modifierFlags & SWT.SHIFT) == 0;
+		if (next) {
+			if (focusIndex < offsets.length - 1) {
+				focusIndex++;
+				redraw ();
+				return false;
+			}
+		} else {
+			if (focusIndex > 0) {
+				focusIndex--;
+				redraw ();
+				return false;
+			} 
+		}
+		break;
+	}
+	return result;
+}
+
 void setBackgroundColor(NSColor nsColor) {
 	setBackground(nsColor);
 }
@@ -481,6 +629,18 @@ void setOrientation () {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
@@ -499,6 +659,7 @@ public void setText (String string) {
 	text = string;
 	NSTextView widget = (NSTextView)view;
 	widget.setString(NSString.stringWith(parse(string)));
+	focusIndex = offsets.length > 0 ? 0 : -1 ;
 	NSTextStorage textStorage = widget.textStorage();
 	NSRange range = new NSRange();
 	range.length = textStorage.length();
@@ -525,6 +686,22 @@ NSView topView () {
 	return scrollView;
 }
 
+int traversalCode (int key, NSEvent theEvent) {
+	if (offsets.length == 0) return  0;
+	int bits = super.traversalCode (key, theEvent);
+	if (key == 48 /* Tab */ && theEvent != null) {
+		int /*long*/ modifierFlags = theEvent.modifierFlags();
+		boolean next = (modifierFlags & OS.NSShiftKeyMask) == 0;
+		if (next && focusIndex < offsets.length - 1) {
+			return bits & ~ SWT.TRAVERSE_TAB_NEXT;
+		}
+		if (!next && focusIndex > 0) {
+			return bits & ~ SWT.TRAVERSE_TAB_PREVIOUS;
+		}
+	}
+	return bits;
+}
+
 void updateCursorRects (boolean enabled) {
 	super.updateCursorRects (enabled);
 	if (scrollView == null) return;
@@ -534,22 +711,5 @@ void updateCursorRects (boolean enabled) {
 	contentView.setDocumentCursor (enabled ? NSCursor.IBeamCursor () : null);
 }
 
-//int traversalCode (int key, int theEvent) {
-//	if (offsets.length == 0) return 0;
-//	int bits = super.traversalCode (key, theEvent);
-//	if (key == 48 /* Tab */ && theEvent != 0) {
-//		int [] modifiers = new int [1];
-//		OS.GetEventParameter (theEvent, OS.kEventParamKeyModifiers, OS.typeUInt32, null, 4, null, modifiers);
-//		boolean next = (modifiers [0] & OS.shiftKey) == 0;
-//		if (next && focusIndex < offsets.length - 1) {
-//			return bits & ~ SWT.TRAVERSE_TAB_NEXT;
-//		}
-//		if (!next && focusIndex > 0) {
-//			return bits & ~ SWT.TRAVERSE_TAB_PREVIOUS;
-//		}
-//	}
-//	return bits;
-//}
-
 }
 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java
index bfad783..e64d3b1 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java
index b2a73fc..98dff52 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java
index 2dafb67..4f5fbbc 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java	
@@ -184,7 +184,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java
index 1e017b3..39350fb 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java
index b1ca468..e3c1672 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java
index 9ff02b3..2b287f8 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java	
@@ -11,11 +11,10 @@
 package org.eclipse.swt.widgets;
 
  
-import org.eclipse.swt.internal.cocoa.*;
-
 import org.eclipse.swt.*;
 import org.eclipse.swt.events.*;
 import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.cocoa.*;
 
 /**
  * Instances of this class are selectable user interface
@@ -90,7 +89,7 @@ public class ScrollBar extends Widget {
 	int increment = 1;
 	int pageIncrement = 10;
 	id target;
-	int /*long*/ actionSelector;;
+	int /*long*/ actionSelector;
 
 ScrollBar () {
 	/* Do nothing */
@@ -285,8 +284,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -302,6 +300,19 @@ public int getThumb () {
 	return thumb;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	NSRect rect = view.rectForPart(OS.NSScrollerKnob);
@@ -309,6 +320,20 @@ public Rectangle getThumbBounds () {
 	return new Rectangle((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	NSRect rect = view.rectForPart(OS.NSScrollerKnobSlot);
@@ -430,61 +455,50 @@ void releaseWidget () {
 
 void sendSelection () {
 	NSWindow window = view.window ();
-	boolean disableFlush = target == null;
-	try {
-		if (disableFlush) {
-			window.retain ();
-			window.disableFlushWindow ();
-		}
-		int value = 0;
-		if (target != null) {
-			view.sendAction(actionSelector, target);
-		} else {
-			value = getSelection ();
-		}
-		NSPoint point;
-		NSEvent nsEvent = NSApplication.sharedApplication().currentEvent();
-		if (nsEvent != null) {
-			point = nsEvent.locationInWindow();
-			if (nsEvent.window() == null) point = window.convertScreenToBase(point);
-		} else {
-			point = window.mouseLocationOutsideOfEventStream();
-		}
-		int hitPart = (int)/*64*/((NSScroller)view).testPart(point);
-		Event event = new Event();
-		switch (hitPart) {
-		    case OS.NSScrollerDecrementLine:
-		        value -= increment;
-		        event.detail = SWT.ARROW_UP;
-		        break;
-		    case OS.NSScrollerDecrementPage:
-		        value -= pageIncrement;
-		        event.detail = SWT.PAGE_UP;
-		        break;
-		    case OS.NSScrollerIncrementLine:
-		        value += increment;
-		        event.detail = SWT.ARROW_DOWN;
-		        break;
-		    case OS.NSScrollerIncrementPage:
-		        value += pageIncrement;
-		        event.detail = SWT.PAGE_DOWN;
-		        break;
-		    case OS.NSScrollerKnob:
-				event.detail = SWT.DRAG;
-		        break;
-		}
-		if (target == null) {
-			if (event.detail != SWT.DRAG) {
-				setSelection(value);
-			}
-		}
-		sendSelectionEvent(SWT.Selection, event, true);
-	} finally {
-		if (disableFlush) {
-			window.enableFlushWindow ();
-			window.release ();
+	if (target == null) parent.getShell().deferFlushing();
+	int value = 0;
+	if (target != null) {
+		view.sendAction(actionSelector, target);
+	} else {
+		value = getSelection ();
+	}
+	NSPoint point;
+	NSEvent nsEvent = NSApplication.sharedApplication().currentEvent();
+	if (nsEvent != null) {
+		point = nsEvent.locationInWindow();
+		if (nsEvent.window() == null) point = window.convertScreenToBase(point);
+	} else {
+		point = window.mouseLocationOutsideOfEventStream();
+	}
+	int hitPart = (int)/*64*/((NSScroller)view).testPart(point);
+	Event event = new Event();
+	switch (hitPart) {
+	case OS.NSScrollerDecrementLine:
+		value -= increment;
+		event.detail = SWT.ARROW_UP;
+		break;
+	case OS.NSScrollerDecrementPage:
+		value -= pageIncrement;
+		event.detail = SWT.PAGE_UP;
+		break;
+	case OS.NSScrollerIncrementLine:
+		value += increment;
+		event.detail = SWT.ARROW_DOWN;
+		break;
+	case OS.NSScrollerIncrementPage:
+		value += pageIncrement;
+		event.detail = SWT.PAGE_DOWN;
+		break;
+	case OS.NSScrollerKnob:
+		event.detail = SWT.DRAG;
+		break;
+	}
+	if (target == null) {
+		if (event.detail != SWT.DRAG) {
+			setSelection(value);
 		}
 	}
+	sendSelectionEvent(SWT.Selection, event, true);
 }
 
 /**
@@ -628,10 +642,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java
index cec9001..c1357a7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java
index 834886a..7dc68a9 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -118,7 +118,7 @@ public class Shell extends Decorations {
 	NSWindow window;
 	SWTWindowDelegate windowDelegate;
 	int /*long*/ tooltipOwner, tooltipTag, tooltipUserData;
-	boolean opened, moved, resized, fullScreen, center;
+	boolean opened, moved, resized, fullScreen, center, deferFlushing;
 	Control lastActive;
 	Rectangle normalBounds;
 	boolean keyInputHappened;
@@ -518,6 +518,11 @@ void center () {
 	setLocation (x, y);
 }
 
+void clearDeferFlushing (int /*long*/ id, int /*long*/ sel) {
+	deferFlushing = false;
+	if (window != null) window.flushWindowIfNeeded();
+}
+
 /**
  * Requests that the window manager close the receiver in
  * the same way it would be closed when the user clicks on
@@ -649,6 +654,11 @@ void createHandle () {
 
 }
 
+void deferFlushing () {
+	deferFlushing = true;
+	view.performSelector(OS.sel_clearDeferFlushing, null, 0.0, display.runLoopModes());
+}
+
 void deregister () {
 	super.deregister ();
 	if (window != null) display.removeWidget (window);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java
index f62d24c..502957e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java	
@@ -283,8 +283,7 @@ public int getSelection () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -475,10 +474,13 @@ void updateBar (int selection, int minimum, int maximum, int thumb) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java
index a436e58..cbf4d1d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java	
@@ -791,11 +791,11 @@ public void setIncrement (int value) {
 
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -813,11 +813,11 @@ public void setMaximum (int value) {
 
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java
index 4c6e628..481c041 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -114,6 +114,25 @@ public TabItem (TabFolder parent, int style, int index) {
 	parent.createItem (this, index);
 }
 
+int /*long*/ accessibilityAttributeValue (int /*long*/ id, int /*long*/ sel, int /*long*/ arg0) {
+	
+	if (id == nsItem.id) {
+		NSString nsAttributeName = new NSString(arg0);
+
+		if (nsAttributeName.isEqualToString(OS.NSAccessibilityTitleAttribute)) {
+			if (text != null) {
+				return NSString.stringWith(text).id;
+			}
+		} else if (nsAttributeName.isEqualToString(OS.NSAccessibilityHelpAttribute)) {
+			if (toolTipText != null) {
+				return NSString.stringWith(toolTipText).id;
+			}
+		}
+	}
+	
+	return super.accessibilityAttributeValue(id, sel, arg0);
+}
+
 protected void checkSubclass () {
 	if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
 }
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java
index ef051fd..d33bf75 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -892,7 +892,7 @@ void drawInteriorWithFrame_inView (int /*long*/ id, int /*long*/ sel, NSRect rec
 	boolean drawForeground = true;
 	boolean isSelected = cell.isHighlighted();
 	boolean drawSelection = isSelected;
-	boolean hasFocus = hooksErase && hasFocus ();
+	boolean hasFocus = hasFocus ();
 
 	Color selectionBackground = null, selectionForeground = null;
 	if (isSelected && (hooksErase || hooksPaint)) {
@@ -1219,7 +1219,10 @@ public Rectangle getClientArea () {
 	Rectangle rect = super.getClientArea ();
 	NSTableHeaderView headerView = ((NSTableView) view).headerView ();
 	if (headerView != null) {
+		// The origin of the table is the top-left of the rows of the table,
+		// not the header.  Adjust the y value accordingly.
 		int height =  (int) headerView.bounds ().height;
+		rect.y -= height;
 		rect.height += height;
 	}
 	return rect;
@@ -2968,8 +2971,10 @@ void sendDoubleSelection() {
 		if ((style & SWT.CHECK) != 0) {
 			NSArray columns = tableView.tableColumns ();
 			int columnIndex = (int)/*64*/tableView.clickedColumn ();
-			id column = columns.objectAtIndex (columnIndex);
-			if (column.id == checkColumn.id) return;
+			if (columnIndex != -1) {
+				id column = columns.objectAtIndex (columnIndex);
+				if (column.id == checkColumn.id) return;
+			}
 		}
 		Event event = new Event ();
 		event.item = _getItem (rowIndex);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java
index b258851..fd993ba 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java	
@@ -11,10 +11,9 @@
 package org.eclipse.swt.widgets;
 
 
-import org.eclipse.swt.internal.cocoa.*;
-
 import org.eclipse.swt.*;
 import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.cocoa.*;
 
 /**
  * Instances of this class represent a selectable user interface object
@@ -251,10 +250,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -293,7 +292,14 @@ public Rectangle getBounds () {
 		cell.setTitle (str);
 		str.release();
 	}
-	NSSize size = cell.cellSize ();
+	// Inlined for performance.  Also prevents a NPE or potential loop, because cellSize() will
+	// eventually send another MeasureItem event.
+	objc_super super_struct = new objc_super();
+	super_struct.receiver = cell.id;
+	super_struct.super_class = OS.objc_msgSend(cell.id, OS.sel_superclass);
+	NSSize size = new NSSize();
+	OS.objc_msgSendSuper_stret(size, super_struct, OS.sel_cellSize);
+//	NSSize size = cell.cellSize ();
 	NSRect columnRect = widget.rectOfColumn (columnIndex);
 	size.width = Math.min (size.width, columnRect.width - (titleRect.x - columnRect.x));
 	return new Rectangle ((int)titleRect.x, (int)titleRect.y, (int)Math.ceil (size.width), (int)Math.ceil (titleRect.height));
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskBar.java
index ad1a61a..9e425f5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskBar.java	
@@ -109,6 +109,19 @@ public int getItemCount () {
 	return itemCount;
 }
 
+/**
+ * Returns the <code>TaskItem</code> for the given <code>Shell</code> or the <code>TaskItem</code> 
+ * for the application if the <code>Shell</code> parameter is <code>null</code>.
+ * If the requested item is not supported by the platform it returns <code>null</code>.
+ * 
+ * @param shell the shell for which the task item is requested, or null to request the application item
+ * @return the task item for the given shell or the application
+ *
+ * @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>
+ */
 public TaskItem getItem (Shell shell) {
 	checkWidget ();
 	for (int i = 0; i < itemCount; i++) {
@@ -128,7 +141,7 @@ public TaskItem getItem (Shell shell) {
 }
 
 /**
- * Returns an array of <code>TaskBarItem</code>s which are the items
+ * Returns an array of <code>TaskItem</code>s which are the items
  * in the receiver. 
  * <p>
  * Note: This is not the actual structure used by the receiver
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskItem.java
index 128e006..921bb72 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TaskItem.java	
@@ -16,7 +16,7 @@ import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.cocoa.*;
 
 /**
- * Instances of this class represent a taskbar item.
+ * Instances of this class represent a task item.
  * 
  * <dl>
  * <dt><b>Styles:</b></dt>
@@ -96,16 +96,49 @@ void destroyWidget () {
 	releaseHandle ();
 }
 
+/**
+ * Returns the receiver's pop up menu if it has one, or null
+ * if it does not.
+ *
+ * @return the receiver's menu
+ *
+ * @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>
+ */
 public Menu getMenu () {
 	checkWidget ();
 	return menu;
 } 
 
+/**
+ * Returns the receiver's overlay image if it has one, or null
+ * if it does not.
+ *
+ * @return the receiver's overlay image
+ *
+ * @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>
+ */
 public Image getOverlayImage () {
 	checkWidget ();
 	return overlayImage;
 }
 
+/**
+ * Returns the receiver's overlay text, which will be an empty
+ * string if it has never been set.
+ *
+ * @return the receiver's overlay text
+ *
+ * @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>
+ */
 public String getOverlayText () {
 	checkWidget ();
 	return overlayText;
@@ -127,11 +160,31 @@ public TaskBar getParent () {
 	return parent;
 }
 
+/**
+ * Returns the receiver's progress.
+ *
+ * @return the receiver's progress
+ *
+ * @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>
+ */
 public int getProgress () {
 	checkWidget ();
 	return progress;
 }
 
+/**
+ * Returns the receiver's progress state.
+ *
+ * @return the receiver's progress state
+ *
+ * @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>
+ */
 public int getProgressState () {
 	checkWidget ();
 	return progressState;
@@ -151,6 +204,37 @@ void releaseWidget () {
 	shell = null;
 }
 
+/**
+ * Sets the receiver's pop up menu to the argument. The way the menu is
+ * shown is platform specific.
+ * 
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return the NULL.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * set this feature on the <code>TaskItem</code> for application.<br>
+ * On Windows, this feature will only work on RCP applications.</p>
+ *
+ * <p>
+ * The menu should be fully created before this method is called.
+ * Dynamic changes to the menu after the method is called will not be reflected
+ * in the native menu.</p> 
+ *
+ * @param menu the new pop up menu
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_MENU_NOT_POP_UP - the menu is not a pop up menu</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li> 
+ * </ul>
+ * @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>
+ */
 public void setMenu (Menu menu) {
 	checkWidget ();
 	if (menu != null) {
@@ -162,6 +246,33 @@ public void setMenu (Menu menu) {
 	this.menu = menu;
 }
 
+/**
+ * Sets the receiver's overlay image, which may be null
+ * indicating that no image should be displayed. The bounds
+ * for the overlay image is determined by the platform and in 
+ * general it should be a small image.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return the NULL.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param overlayImage the new overlay image (may be null)
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if the overlayImage has been disposed</li> 
+ * </ul>
+ * @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>
+ */
 public void setOverlayImage (Image image) {
 	checkWidget ();
 	if (image != null && image.isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT);
@@ -170,6 +281,32 @@ public void setOverlayImage (Image image) {
 	updateImage ();
 }
 
+/**
+ * Sets the receiver's overlay text. The space available to display the
+ * overlay text is platform dependent and in general it should be no longer
+ * than a few characters.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return an empty string.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param overlayText the new overlay text
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the overlayText is null</li>
+ * </ul>
+ * @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>
+ */
 public void setOverlayText (String string) {
 	checkWidget ();
 	if (string == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -178,6 +315,31 @@ public void setOverlayText (String string) {
 	updateImage ();
 }
 
+/**
+ * Sets the receiver's progress, the progress represents a percentage and
+ * should be in range from 0 to 100. The progress is only shown when the progress
+ * state is different than <code>SWT#DEFAULT</code>.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return zero.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param progress the new progress
+ *
+ * @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 {@link #setProgressState(int)}
+ */
 public void setProgress (int progress) {
 	checkWidget ();
 	progress = Math.max (0, Math.min (progress, PROGRESS_MAX));
@@ -186,6 +348,41 @@ public void setProgress (int progress) {
 	updateImage ();
 }
 
+/**
+ * Sets the receiver's progress state, the state can be one of
+ * the following:
+ * <p><ul>
+ * <li>{@link SWT#DEFAULT}</li>
+ * <li>{@link SWT#NORMAL}</li>
+ * <li>{@link SWT#PAUSED}</li>
+ * <li>{@link SWT#ERROR}</li>
+ * <li>{@link SWT#INDETERMINATE}</li>
+ * </ul></p>
+ * 
+ * The percentage of progress shown by the states <code>SWT#NORMAL</code>, <code>SWT#PAUSED</code>, 
+ * <code>SWT#ERROR</code> is set with <code>setProgress()</code>. <br>
+ * The state <code>SWT#DEFAULT</code> indicates that no progress should be shown.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return <code>SWT#DEFAULT</code>.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param progressState the new progress state 
+ *
+ * @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 {@link #setProgress(int)}
+ */
 public void setProgressState (int progressState) {
 	checkWidget ();
 	if (this.progressState == progressState) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java
index 5ad9830..ca72a9b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java	
@@ -30,7 +30,7 @@ import org.eclipse.swt.internal.cocoa.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java
index 5d39d80..4db5981 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -543,6 +543,41 @@ void reskinChildren (int flags) {
 	super.reskinChildren (flags);
 }
 
+boolean sendMouseEvent (NSEvent nsEvent, int type, boolean send) {
+	switch (type) {
+	case SWT.MouseEnter:
+	case SWT.MouseMove:
+		// Start with the global mouse location, as the MouseEnter may occur due to
+		// an application-activated event, which isn't associated with a window.
+		NSPoint toolbarPoint = NSEvent.mouseLocation();
+		toolbarPoint = view.window().convertScreenToBase(toolbarPoint);
+		toolbarPoint = view.convertPoint_fromView_(toolbarPoint, null);
+		for (int i = 0; i < itemCount; i++) {
+			ToolItem item = items [i];
+			int currState = item.state;
+			
+			if (OS.NSPointInRect(toolbarPoint, item.view.frame())) {
+				item.state |= Widget.HOT;
+			} else {
+				item.state &= ~Widget.HOT;				
+			}
+			
+			if (currState != item.state) item.updateImage(true);
+		}
+		break;
+	case SWT.MouseExit:
+		for (int i = 0; i < itemCount; i++) {
+			ToolItem item = items [i];
+			int currState = item.state;
+			item.state &= ~Widget.HOT;				
+			if (currState != item.state) item.updateImage(true);
+		}
+		break;
+	}
+	
+	return super.sendMouseEvent(nsEvent, type, send);
+}
+
 void setFont(NSFont font) {
 	for (int i = 0; i < itemCount; i++) {
 		ToolItem item = items[i];
@@ -560,15 +595,29 @@ boolean translateTraversal (int key, NSEvent theEvent, boolean[] consume) {
 	boolean result = super.translateTraversal (key, theEvent, consume);
 	if (result) return result;
 	boolean next = false;
+	boolean checkPopup = false;
 	switch (key) {
-	case 126: /* Up arrow */
 	case 123: /* Left arrow */
 		next = false; break;
-	case 125: /* Down arrow */
 	case 124: /* Right arrow */
 		next = true; break;
+	case 126: /* Up arrow */
+		next = false;
+		checkPopup = true;
+		break;
+	case 125: /* Down arrow */
+		next = true;
+		checkPopup = true;
+		break;
+		
 	default: return false;
 	}
+	consume [0] = true;
+	
+	if (checkPopup && lastFocus != null) {
+		if (lastFocus.handleKeyDown()) return false;
+	}
+	
 	ToolItem[] items = getItems();
 	ToolItem item = lastFocus;
 	int length = items.length;
@@ -590,7 +639,7 @@ boolean translateTraversal (int key, NSEvent theEvent, boolean[] consume) {
 		if (!child.isDisposed ()) {
 			if (child.setFocus ()) {
 				lastFocus = child;
-				return true;
+				return false;
 			}
 		}
 	}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java
index 2aec674..c269836 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java	
@@ -241,6 +241,12 @@ boolean accessibilityIsIgnored(int /*long*/ id, int /*long*/ sel) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
@@ -272,6 +278,20 @@ protected void checkSubclass () {
 	if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
 }
 
+boolean handleKeyDown() {
+	if ((style & SWT.DROP_DOWN) != 0) {
+		NSRect frame = view.frame();
+		Event event = new Event ();
+		event.detail = SWT.ARROW;
+		event.x = (int)frame.x;
+		event.y = (int)(frame.y + frame.height);
+		sendSelectionEvent (SWT.Selection, event, false);
+		return true;
+	} else {
+		return false;
+	}
+}
+
 Point computeSize () {
 	checkWidget();
 	int width = 0, height = 0;
@@ -411,6 +431,7 @@ void drawWidget (int /*long*/ id, NSGraphicsContext context, NSRect rect) {
 void enableWidget(boolean enabled) {
 	if ((style & SWT.SEPARATOR) == 0) {
 		((NSButton)button).setEnabled(enabled);
+		updateImage(true);
 	}
 }
 
@@ -1022,16 +1043,18 @@ String tooltipText () {
 
 void updateImage (boolean layout) {
 	if ((style & SWT.SEPARATOR) != 0) return;
-	Image image = null;
-	if (hotImage != null) {
-		image = hotImage;
+	Image newImage = null;
+
+	if ((state & DISABLED) == DISABLED && disabledImage != null) {
+		newImage = disabledImage;
 	} else {
-		if (this.image != null) {
-			image = this.image;
+		if ((state & HOT) == HOT && hotImage != null) {
+			newImage = hotImage;
 		} else {
-			image = disabledImage;
+			newImage = image;
 		}
 	}
+
 	NSButton widget = (NSButton)button;
 	/*
 	 * Feature in Cocoa.  If the NSImage object being set into the button is
@@ -1040,13 +1063,13 @@ void updateImage (boolean layout) {
 	 * if the NSImage object's content has changed since it was last set
 	 * into the button.  The workaround is to explicitly redraw the button.
 	 */
-	widget.setImage(image != null ? image.handle : null);
+	widget.setImage(newImage != null ? newImage.handle : null);
 	widget.setNeedsDisplay(true);
-	if (text.length() != 0 && image != null) {
+	if (text.length() != 0 && newImage != null) {
 		if ((parent.style & SWT.RIGHT) != 0) {
 			widget.setImagePosition(OS.NSImageLeft);
 		} else {
-			((NSButton)button).setImagePosition(OS.NSImageAbove);		
+			widget.setImagePosition(OS.NSImageAbove);		
 		}
 	} else {	
 		widget.setImagePosition(text.length() != 0 ? OS.NSNoImage : OS.NSImageOnly);		
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java
index b2674b7..4b0a221 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -940,7 +940,7 @@ void drawInteriorWithFrame_inView (int /*long*/ id, int /*long*/ sel, NSRect rec
 	boolean drawForeground = true;
 	boolean isSelected = cell.isHighlighted();
 	boolean drawSelection = isSelected;
-	boolean hasFocus = hooksErase && hasFocus ();
+	boolean hasFocus = hasFocus ();
 
 	Color selectionBackground = null, selectionForeground = null;
 	if (isSelected && (hooksErase || hooksPaint)) {
@@ -1271,7 +1271,10 @@ public Rectangle getClientArea () {
 	Rectangle rect = super.getClientArea ();
 	NSTableHeaderView headerView = ((NSTableView) view).headerView ();
 	if (headerView != null) {
+		// The origin of the tree is the top-left of the rows of the tree,
+		// not the header.  Adjust the y value accordingly.
 		int height =  (int) headerView.bounds ().height;
+		rect.y -= height;
 		rect.height += height;
 	}
 	return rect;
@@ -2412,8 +2415,10 @@ void sendDoubleSelection() {
 		if ((style & SWT.CHECK) != 0) {
 			NSArray columns = outlineView.tableColumns ();
 			int columnIndex = (int)/*64*/outlineView.clickedColumn ();
-			id column = columns.objectAtIndex (columnIndex);
-			if (column.id == checkColumn.id) return;
+			if (columnIndex != -1) {
+				id column = columns.objectAtIndex (columnIndex);
+				if (column.id == checkColumn.id) return;
+			}
 		}
 		TreeItem item = (TreeItem) display.getWidget (outlineView.itemAtRow (rowIndex).id);
 		Event event = new Event ();
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java
index bd8177b..7f53aea 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java	
@@ -11,10 +11,9 @@
 package org.eclipse.swt.widgets;
 
 
-import org.eclipse.swt.internal.cocoa.*;
-
 import org.eclipse.swt.*;
 import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.cocoa.*;
 
 /**
  * Instances of this class represent a selectable user interface object
@@ -423,10 +422,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -466,7 +465,14 @@ public Rectangle getBounds () {
 		cell.setTitle (str);
 		str.release();
 	}
-	NSSize size = cell.cellSize ();
+	// Inlined for performance.  Also prevents a NPE or potential loop, because cellSize() will
+	// eventually send another MeasureItem event.
+	objc_super super_struct = new objc_super();
+	super_struct.receiver = cell.id;
+	super_struct.super_class = OS.objc_msgSend(cell.id, OS.sel_superclass);
+	NSSize size = new NSSize();
+	OS.objc_msgSendSuper_stret(size, super_struct, OS.sel_cellSize);
+//	NSSize size = cell.cellSize ();
 	NSRect columnRect = widget.rectOfColumn (columnIndex);
 	size.width = Math.min (size.width, columnRect.width - (titleRect.x - columnRect.x));
 	return new Rectangle ((int)titleRect.x, (int)titleRect.y, (int)Math.ceil (size.width), (int)Math.ceil (titleRect.height));
@@ -1224,8 +1230,6 @@ public void setFont (int index, Font font) {
  *
  * @param color the new color (or null)
  *
- * @since 2.0
- * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
  * </ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
index 4ab823e..b5f2dc7 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java	
@@ -10,11 +10,10 @@
  *******************************************************************************/
 package org.eclipse.swt.widgets;
 
-import org.eclipse.swt.internal.*;
-import org.eclipse.swt.internal.cocoa.*;
-
 import org.eclipse.swt.*;
 import org.eclipse.swt.events.*;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.cocoa.*;
 
 /**
  * This class is the abstract superclass of all user interface objects.  
@@ -57,7 +56,7 @@ public abstract class Widget {
 	static final int KEYED_DATA       = 1 << 2;
 	static final int DISABLED         = 1 << 3;
 	static final int HIDDEN           = 1 << 4;
-	static final int GRAB	             = 1 << 5;
+	static final int HOT			  = 1 << 5;
 	static final int MOVED            = 1 << 6;
 	static final int RESIZED          = 1 << 7;
 	static final int EXPANDING        = 1 << 8;
@@ -326,8 +325,31 @@ void becomeKeyWindow (int /*long*/ id, int /*long*/ sel) {
 }
 
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
@@ -511,6 +533,9 @@ protected void checkWidget () {
 	if ((state & DISPOSED) != 0) error (SWT.ERROR_WIDGET_DISPOSED);
 }
 
+void clearDeferFlushing (int /*long*/ id, int /*long*/ sel) {
+}
+
 boolean textView_clickOnLink_atIndex(int /*long*/ id, int /*long*/ sel, int /*long*/ textView, int /*long*/ link, int /*long*/ charIndex) {
 	return true;
 }
@@ -548,6 +573,12 @@ void createWidget () {
 void comboBoxSelectionDidChange(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
 }
 
+void comboBoxWillDismiss(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+}
+
+void comboBoxWillPopUp(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+}
+
 void deregister () {
 }
 
@@ -567,6 +598,7 @@ void destroyWidget () {
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -920,7 +952,7 @@ boolean isActive () {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c
index 8b1f2a4..a344d01 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,9 @@ static int callbackEnabled = 1;
 static int callbackEntryCount = 0;
 static int initialized = 0;
 static jint JNI_VERSION = 0;
+#ifdef COCOA
+static NSException *nsException = nil;
+#endif
 
 #ifdef DEBUG_CALL_PRINTS
 static int counter = 0;
@@ -1243,7 +1246,14 @@ jintLong callback(int index, ...)
 	}
 	va_end(vl);
 	ATOMIC_DEC(callbackEntryCount);
-	
+
+#ifdef COCOA
+	if (callbackEntryCount == 0 && nsException) {
+		[nsException release];
+		nsException = nil;
+	}
+#endif
+				
 done:
 	/* If an exception has occurred in Java, return the error result. */
 	if ((ex = (*env)->ExceptionOccurred(env))) {
@@ -1253,6 +1263,12 @@ done:
 		(*env)->ExceptionDescribe(env);
 #endif
 		result = callbackData[index].errorResult;
+#ifdef COCOA
+		if (nsException == NULL) {
+			nsException = [[NSException alloc] initWithName:NSGenericException reason:@"Java exception occurred" userInfo:nil];
+			[nsException raise];
+		}
+#endif
 	}
 
 	if (detach) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h
index 47b8c70..352d67b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,10 @@
 #define RETURN_CAST (LRESULT)
 #endif
 
+#if defined COCOA
+#import <Foundation/Foundation.h>
+#endif
+
 #ifndef RETURN_TYPE
 #define RETURN_TYPE jintLong
 #endif
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/make_common.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/make_common.mak
index 3f3c313..7d17db6 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/make_common.mak	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/make_common.mak	
@@ -1,14 +1,14 @@
 #*******************************************************************************
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 #
-# Contributors: 
+# Contributors:
 #     IBM Corporation - initial API and implementation
 #*******************************************************************************
 
 maj_ver=3
-min_ver=642
-comma_ver=3,6,4,2
+min_ver=650
+comma_ver=3,6,5,0
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java
index cdc8628..8d7c355 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -556,7 +556,7 @@ public class SWT {
 	/**
 	 * The mouse vertical wheel event type (value is 37).
 	 * 
-	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Control#addMouseWheelListener
 	 * @see org.eclipse.swt.widgets.Display#addFilter
 	 * @see org.eclipse.swt.widgets.Event
 	 * 
@@ -581,7 +581,7 @@ public class SWT {
 	 * Newer applications should use {@link #MouseVerticalWheel} instead 
 	 * of {@link #MouseWheel} to make code more understandable.
 	 *  
-	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Control#addMouseWheelListener
 	 * @see org.eclipse.swt.widgets.Display#addFilter
 	 * @see org.eclipse.swt.widgets.Event
 	 * 
@@ -667,9 +667,9 @@ public class SWT {
 	public static final int ImeComposition = 43;
 
 	/**
-	 * The orientation change event type (value is 43).  
+	 * The orientation change event type (value is 44).  
 	 * <p>
-	 * On some platforms of orientation of text widgets
+	 * On some platforms the orientation of text widgets
 	 * can be changed by keyboard shortcut.
 	 * The application can use the <code>doit</code> field
 	 * of the event to stop the change from happening.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java
index 9b472dd..03ecb92 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java
index 28eef55..2730002 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java
index e386ebb..141268b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java
index 57ae529..ea9f1d4 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Resource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Resource.java
index 82c4504..c683130 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Resource.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Resource.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -58,6 +58,7 @@ void destroy() {
  * Disposes of the operating system resources associated with
  * this resource. Applications must dispose of all resources
  * which they allocate.
+ * This method does nothing if the resource is already disposed.
  */
 public void dispose() {
 	if (device == null) return;
@@ -91,7 +92,7 @@ void init() {
  * <p>
  * This method gets the dispose state for the resource.
  * When a resource has been disposed, it is an error to
- * invoke any other method using the resource.
+ * invoke any other method (except {@link #dispose()}) using the resource.
  *
  * @return <code>true</code> when the resource is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java
index a71d560..3d01237 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngEncoder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngEncoder.java
index fa804ae..28299db 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngEncoder.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngEncoder.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java
index a13147d..a2d9c1f 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFDirectory.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFDirectory.java
index 4a882d2..dbcce8a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFDirectory.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFDirectory.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFFileFormat.java
index f1db3e8..2e0298b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFFileFormat.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/TIFFFileFormat.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java
index 753903d..04af102 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java
index d26c60c..3d0bac8 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java	
@@ -26,11 +26,19 @@ import org.eclipse.swt.widgets.*;
  * 		gridData.horizontalAlignment = GridData.FILL;
  * 		gridData.grabExcessHorizontalSpace = true;
  * 		button1.setLayoutData(gridData);
+ * 
+ * 		gridData = new GridData();
+ * 		gridData.horizontalAlignment = GridData.FILL;
+ * 		gridData.verticalAlignment = GridData.FILL;
+ * 		gridData.grabExcessHorizontalSpace = true;
+ * 		gridData.grabExcessVerticalSpace = true;
+ * 		gridData.horizontalSpan = 2;
+ * 		button2.setLayoutData(gridData);
  * </pre>
- * The second is to take advantage of convenience style bits defined 
- * by <code>GridData</code>:
+ * The second is to take advantage of <code>GridData</code> convenience constructors, for example: 
  * <pre>
- *      button1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
+ *      button1.setLayoutData(new GridData (SWT.FILL, SWT.CENTER, true, false));
+ *      button2.setLayoutData(new GridData (SWT.FILL, SWT.FILL, true, true, 2, 1));
  * </pre>
  * </p>
  * <p>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java
index d887e9d..d67ea3d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java
index a4c8024..db4fb1d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt
index fe3fb50..1d0f0e0 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt	
@@ -1 +1 @@
-version 3.642
\ No newline at end of file
+version 3.650
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2me/org/eclipse/swt/internal/Compatibility.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2me/org/eclipse/swt/internal/Compatibility.java
index d1049c4..bf7a679 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2me/org/eclipse/swt/internal/Compatibility.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2me/org/eclipse/swt/internal/Compatibility.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -286,7 +286,7 @@ public static boolean isWhitespace(char c) {
  * The new process inherits the environment of the caller.
  * </p>
  *
- * @param program the name of the program to execute
+ * @param prog the name of the program to execute
  *
  * @exception IOException
  *  if the program cannot be executed
@@ -327,21 +327,21 @@ public static void exec(String[] progArray) throws java.io.IOException{
 }
 
 /**
- * Execute progArray[0] in a separate platform process with the specified
- * environment and working directory if the underlying platform support
+ * Execute prog[0] in a separate platform process with the specified
+ * environment and working directory if the underlying platform supports
  * this.
  * <p>
  * If envp is null the new process inherits the environment of the caller.
  * <p>
  * 
- * @param progArray
+ * @param prog
  *            array containing the program to execute and its arguments
  * @param envp
  *            array of strings, each element of which has environment
- *            variable settings in format name=value.
- * @param dir
+ *            variable settings in the format name=value
+ * @param workingDir
  *            the working directory of the new process, or null if the new
- *            process should inherit the working directory of the caller.
+ *            process should inherit the working directory of the caller
  * 
  * @exception IOException
  *                if the program cannot be executed
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/Compatibility.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/Compatibility.java
index 7f7ca9d..70eee21 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/Compatibility.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/Compatibility.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -283,13 +283,19 @@ public static void exec(String[] progArray) throws java.io.IOException{
 }
 
 /**
- * Execute prog in a separate platform process if the
- * underlying platform support this.
+ * Execute prog[0] in a separate platform process if the
+ * underlying platform supports this.
  * <p>
  * The new process inherits the environment of the caller.
  * <p>
  *
- * @param prog containing the program to execute and its arguments
+ * @param prog array containing the program to execute and its arguments
+ * @param envp
+ *            array of strings, each element of which has environment
+ *            variable settings in the format name=value
+ * @param workingDir
+ *            the working directory of the new process, or null if the new
+ *            process should inherit the working directory of the caller
  *
  * @exception IOException
  *  if the program cannot be executed
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties
index 308f3a0..3a5c957 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties	
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -83,3 +83,18 @@ SWT_InvalidCert_Connect=Would you like to connect to this site anyways?
 SWT_OnBeforeUnload_Message1=Are you sure you want to leave this page?
 SWT_OnBeforeUnload_Message2=Click OK to continue, or Cancel to stay on this page.
 SWT_ViewCertificate=View Certificate
+SWT_Controlled_By=controlled by
+SWT_Controller_For=controller for
+SWT_Described_By=described by
+SWT_Description_For=description for
+SWT_Embedded_By=embedded by
+SWT_Embeds=embeds
+SWT_Flows_From=flows from
+SWT_Flows_To=flows to
+SWT_Label_For=label for
+SWT_Labelled_By=labelled by
+SWT_Member_Of=member of
+SWT_Node_Child_Of=node child of
+SWT_Parent_Window_Of=parent window of
+SWT_Popup_For=popup for
+SWT_Subwindow_Of=subwindow of
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_es._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_es._properties
index 6c891db..83c1aa0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_es._properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_es._properties	
@@ -28,12 +28,16 @@ SWT_Charset_Western=oeste
 SWT_Charset_EastEuropean=este
 SWT_Charset_SouthEuropean=sur
 SWT_Charset_NorthEuropean=norte
+SWT_Charset_Cyrillic=cir\u00edlico
 SWT_Charset_Arabic=ar\u00e1bico
 SWT_Charset_Greek=griego
 SWT_Charset_Hebrew=hebreo
 SWT_Charset_Turkish=turco
 SWT_Charset_Nordic=noruego
+SWT_Charset_Thai=tailand\u00e9s
+SWT_Charset_BalticRim=lenguas escandinavas/b\u00e1lticas
 SWT_Charset_Celtic=celta
+SWT_Charset_Euro=euro
 SWT_Charset_Romanian=rumano
 SWT_Charset_SimplifiedChinese=chino simple
 SWT_Charset_TraditionalChinese=chino tradicional
@@ -41,6 +45,7 @@ SWT_Charset_Japanese=japones
 SWT_Charset_Korean=coreano
 SWT_Charset_Unicode=unicode
 SWT_Charset_ASCII=ASCII
+SWT_InputMethods=M\u00e9todos de Entrada
 SWT_Password=Contrase\u00f1a:
 SWT_Username=Nombre de Usuario:
 SWT_Switch=Cambiar
@@ -54,4 +59,8 @@ SWT_ShowList=Mostrar Lista
 SWT_FileDownload=Descarga Fichero
 SWT_Download_File=Descarga: {0}
 SWT_Download_Location=Guardando {0} desde {1}
-SWT_Download_Started=Descargando...
\ No newline at end of file
+SWT_Download_Started=Descargando...
+SWT_Download_Status=Descarga: {0,number,integer} KB de {1,number,integer} KB
+SWT_Authentication_Required=Autenticaci\u00f3n requerida
+SWT_Enter_Username_and_Password=Introduzca nombre de usuario y contrase\u00f1a para {0} en {1}
+SWT_Page_Load_Failed=Carga de p\u00e1gina fall\u00f3 con error: {0}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_et._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_et._properties
new file mode 100644
index 0000000..6118bc8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_et._properties	
@@ -0,0 +1,23 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+SWT_Yes=Jah
+SWT_No=Ei
+SWT_OK=OK
+SWT_Cancel=T\u00fchista
+SWT_Abort=Katkesta
+SWT_Retry=Proovi uuesti
+SWT_Ignore=Ignoreeri
+SWT_Sample=N\u00e4ide
+SWT_A_Sample_Text=N\u00e4idis tekst
+SWT_Selection=Valik
+SWT_Save=Salvesta
+SWT_Remove=Eemalda
+SWT_Up=\u00dcles
+SWT_Down=Alla
+SWT_InputMethods=Sisestamis meetodid
+SWT_Press=Vajuta
+SWT_Open=Ava
+SWT_Close=Sulge
+SWT_Minimize=V\u00e4henda
+SWT_Maximize=Suurenda
+SWT_Restore=Taasta
+SWT_Download_Started=Laen alla...
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_ru._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_ru._properties
index 415f033..8d056cd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_ru._properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_ru._properties	
@@ -2,7 +2,7 @@
 SWT_Yes=\u0414\u0430
 SWT_No=\u041d\u0435\u0442
 SWT_OK=OK
-SWT_Cancel=\u041e\u0442\u043c\u0435\u043d\u0430
+SWT_Cancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
 SWT_Abort=\u041f\u0440\u0435\u0440\u0432\u0430\u0442\u044c
 SWT_Retry=\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c
 SWT_Ignore=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c
@@ -27,4 +27,4 @@ SWT_Close=\u0417\u0430\u043a\u0440\u044b\u0442\u044c
 SWT_Minimize=\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c
 SWT_Maximize=\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c
 SWT_Restore=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c
-SWT_Download_Started=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430:
\ No newline at end of file
+SWT_Download_Started=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430:
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_tr._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_tr._properties
index 1b90791..19ba07c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_tr._properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_tr._properties	
@@ -4,22 +4,63 @@ SWT_No=Hay\u0131r
 SWT_OK=Tamam
 SWT_Cancel=\u0130ptal
 SWT_Abort=Durdur
+SWT_Retry=Tekrar Dene
 SWT_Ignore=Yoksay
 SWT_Sample=\u00d6rnek
+SWT_A_Sample_Text=\u00d6rnek Metin
 SWT_Selection=Se\u00e7im
+SWT_Current_Selection=Ge\u00e7erli Se\u00e7im
 SWT_Font=Yaz\u0131y\u00fcz\u00fc
 SWT_Color=Renk
+SWT_Extended_style=Geni\u015fletilmi\u015f bi\u00e7em
 SWT_Size=B\u00fcy\u00fckl\u00fck
 SWT_Style=Bi\u00e7em
 SWT_Save=Sakla
-SWT_FontDialog_Title=Yaz\u0131y\u00fczleri
+SWT_Character_set=Karakter k\u00fcmesi
+SWT_ColorDialog_Title=Renkler
+SWT_FontDialog_Title=Yaz\u0131tipleri
+SWT_FontSet=Yaz\u0131tipi k\u00fcmesi
+SWT_NewFont=Yeni Yazitipi
 SWT_Remove=Kald\u0131r
 SWT_Up=Yukar\u0131
 SWT_Down=A\u015fa\u011f\u0131
+SWT_Charset_Western=bat\u0131
+SWT_Charset_EastEuropean=do\u011fu
+SWT_Charset_SouthEuropean=g\u00fcney
+SWT_Charset_NorthEuropean=kuzey
+SWT_Charset_Cyrillic=kiril
+SWT_Charset_Arabic=arap\u00e7a
+SWT_Charset_Greek=yunanca
+SWT_Charset_Hebrew=ibranice
+SWT_Charset_Turkish=t\u00fcrk\u00e7e
+SWT_Charset_Nordic=iskandinav
+SWT_Charset_Thai=tai
+SWT_Charset_BalticRim=balt\u0131k k\u0131y\u0131s\u0131
+SWT_Charset_Celtic=kelt
+SWT_Charset_Euro=euro
+SWT_Charset_Romanian=romanca
+SWT_Charset_SimplifiedChinese=basitle\u015ftirilmi\u015f \u00e7in\u00e7e
+SWT_Charset_TraditionalChinese=geleneksel \u00e7ince
+SWT_Charset_Japanese=japonca
+SWT_Charset_Korean=korece
+SWT_Charset_Unicode=unicode
 SWT_Charset_ASCII=ASCII
+SWT_InputMethods=Giri\u015f Metodlar\u0131
 SWT_Password=Parola:
+SWT_Username=Kullan\u0131c\u0131 Ad\u0131:
+SWT_Switch=De\u011fi\u015ftir
+SWT_Press=Bas
 SWT_Open=A\u00e7
 SWT_Close=Kapat
 SWT_Minimize=Simge Durumuna K\u00fc\u00e7\u00fclt
 SWT_Maximize=Ekran Boyutuna Getir
-SWT_Restore=Geri Y\u00fckle
\ No newline at end of file
+SWT_Restore=Geri Y\u00fckle
+SWT_ShowList=Listeyi G\u00f6ster
+SWT_FileDownload=Dosya \u0130ndirme
+SWT_Download_File=\u0130ndir: {0}
+SWT_Download_Location={1} adresinden {0} saklan\u0131yor
+SWT_Download_Started=\u0130ndiriliyor...
+SWT_Download_Status=\u0130ndirilen: {0,number,integer} KB / {1,number,integer} KB
+SWT_Authentication_Required=Kimlik Do\u011frulamas\u0131 Gerekiyor
+SWT_Enter_Username_and_Password={1} alan\u0131na {0} i\u00e7in kullan\u0131c\u0131 ad\u0131n\u0131 ve parolas\u0131n\u0131 girini\u015f
+SWT_Page_Load_Failed=Sayfa y\u00fcklemesi ba\u015far\u0131s\u0131z oldu: {0}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_uk._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_uk._properties
index aa8421e..0549844 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_uk._properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_uk._properties	
@@ -62,4 +62,5 @@ SWT_Download_Location=\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e {0}
 SWT_Download_Started=\u0422\u0440\u0438\u0432\u0430\u0454 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f...
 SWT_Download_Status=\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f: {0,number,integer} KB \u0437 {1,number,integer} KB
 SWT_Authentication_Required=\u041f\u043e\u0442\u0440\u0456\u0431\u043d\u0430 \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044f
-SWT_Enter_Username_and_Password=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0456\u043c\''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f {0} \u0432 {1}
\ No newline at end of file
+SWT_Enter_Username_and_Password=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0456\u043c\''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f {0} \u0432 {1}
+SWT_Page_Load_Failed=\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u0432\u0434\u0430\u043b\u043e \u0437 \u043f\u043e\u043c\u0438\u043b\u043a\u043e\u044e: {0}
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_zh._properties b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_zh._properties
index 064802e..399df80 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_zh._properties	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages_zh._properties	
@@ -21,7 +21,7 @@ SWT_ColorDialog_Title=\u989c\u8272
 SWT_FontDialog_Title=\u5b57\u4f53
 SWT_FontSet=\u5b57\u4f53\u96c6
 SWT_NewFont=\u65b0\u5b57\u4f53
-SWT_Remove=\u5220\u9664
+SWT_Remove=\u9664\u53bb
 SWT_Up=\u5411\u4e0a
 SWT_Down=\u5411\u4e0b
 SWT_Charset_Western=\u897f\u6b27\u8bed\u8a00
@@ -62,4 +62,4 @@ SWT_Download_Location=\u4fdd\u5b58 {1} \u4e2d\u7684 {0}
 SWT_Download_Started=\u6b63\u5728\u4e0b\u8f7d...
 SWT_Download_Status=\u4e0b\u8f7d\uff1a{0,number,integer} KB\uff08\u5171 {1,number,integer} KB\uff09
 SWT_Authentication_Required=\u9700\u8981\u8ba4\u8bc1
-SWT_Enter_Username_and_Password=\u8f93\u5165 {0}\uff08\u4f4d\u4e8e {1}\uff09\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801
\ No newline at end of file
+SWT_Enter_Username_and_Password=\u8f93\u5165 {0}\uff08\u4f4d\u4e8e {1}\uff09\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Path.java
index f696a8c..b102d6f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Path.java	
@@ -443,7 +443,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Pattern.java
index 44eb166..738287d 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Pattern.java	
@@ -172,7 +172,7 @@ void destroy() {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Transform.java
index ea89969..79f89ac 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/graphics/org/eclipse/swt/graphics/Transform.java	
@@ -199,7 +199,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskBar.java
index 329a02d..56a5e0a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskBar.java	
@@ -108,13 +108,26 @@ public int getItemCount () {
 	return itemCount;
 }
 
+/**
+ * Returns the <code>TaskItem</code> for the given <code>Shell</code> or the <code>TaskItem</code> 
+ * for the application if the <code>Shell</code> parameter is <code>null</code>.
+ * If the requested item is not supported by the platform it returns <code>null</code>.
+ * 
+ * @param shell the shell for which the task item is requested, or null to request the application item
+ * @return the task item for the given shell or the application
+ *
+ * @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>
+ */
 public TaskItem getItem (Shell shell) {
 	checkWidget ();
 	return null;
 }
 
 /**
- * Returns an array of <code>TaskBarItem</code>s which are the items
+ * Returns an array of <code>TaskItem</code>s which are the items
  * in the receiver. 
  * <p>
  * Note: This is not the actual structure used by the receiver
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskItem.java
index 92fabc1..4c76d88 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/taskbar/org/eclipse/swt/widgets/TaskItem.java	
@@ -15,7 +15,7 @@ import org.eclipse.swt.*;
 import org.eclipse.swt.graphics.*;
 
 /**
- * Instances of this class represent a taskbar item.
+ * Instances of this class represent a task item.
  * 
  * <dl>
  * <dt><b>Styles:</b></dt>
@@ -84,16 +84,49 @@ void destroyWidget () {
 	releaseHandle ();
 }
 
+/**
+ * Returns the receiver's pop up menu if it has one, or null
+ * if it does not.
+ *
+ * @return the receiver's menu
+ *
+ * @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>
+ */
 public Menu getMenu () {
 	checkWidget ();
 	return menu;
 } 
 
+/**
+ * Returns the receiver's overlay image if it has one, or null
+ * if it does not.
+ *
+ * @return the receiver's overlay image
+ *
+ * @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>
+ */
 public Image getOverlayImage () {
 	checkWidget();
 	return overlayImage;
 }
 
+/**
+ * Returns the receiver's overlay text, which will be an empty
+ * string if it has never been set.
+ *
+ * @return the receiver's overlay text
+ *
+ * @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>
+ */
 public String getOverlayText () {
 	checkWidget();
 	return overlayText;
@@ -115,11 +148,31 @@ public TaskBar getParent () {
 	return parent;
 }
 
+/**
+ * Returns the receiver's progress.
+ *
+ * @return the receiver's progress
+ *
+ * @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>
+ */
 public int getProgress () {
 	checkWidget ();
 	return progress;
 }
 
+/**
+ * Returns the receiver's progress state.
+ *
+ * @return the receiver's progress state
+ *
+ * @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>
+ */
 public int getProgressState () {
 	checkWidget ();
 	return progressState;
@@ -136,6 +189,37 @@ void releaseWidget () {
 	overlayText = null;
 }
 
+/**
+ * Sets the receiver's pop up menu to the argument. The way the menu is
+ * shown is platform specific.
+ * 
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return the NULL.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * set this feature on the <code>TaskItem</code> for application.<br>
+ * On Windows, this feature will only work on RCP applications.</p>
+ *
+ * <p>
+ * The menu should be fully created before this method is called.
+ * Dynamic changes to the menu after the method is called will not be reflected
+ * in the native menu.</p> 
+ *
+ * @param menu the new pop up menu
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_MENU_NOT_POP_UP - the menu is not a pop up menu</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li> 
+ * </ul>
+ * @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>
+ */
 public void setMenu (Menu menu) {
 	checkWidget ();
 	if (menu != null) {
@@ -148,12 +232,26 @@ public void setMenu (Menu menu) {
 }
 
 /**
- * Sets the receiver's overlay image.
+ * Sets the receiver's overlay image, which may be null
+ * indicating that no image should be displayed. The bounds
+ * for the overlay image is determined by the platform and in 
+ * general it should be a small image.
  *
- * @param overlayImage the new overlay image
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return the NULL.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param overlayImage the new overlay image (may be null)
  *
  * @exception IllegalArgumentException <ul>
- *    <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the overlayImage has been disposed</li> 
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -166,18 +264,104 @@ public void setOverlayImage (Image overlayImage) {
 	this.overlayImage = overlayImage;
 }
 
+/**
+ * Sets the receiver's overlay text. The space available to display the
+ * overlay text is platform dependent and in general it should be no longer
+ * than a few characters.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return an empty string.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param overlayText the new overlay text
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the overlayText is null</li>
+ * </ul>
+ * @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>
+ */
 public void setOverlayText (String overlayText) {
 	checkWidget ();
 	if (overlayText == null) error (SWT.ERROR_NULL_ARGUMENT);
 	this.overlayText = overlayText;
 }
 
+/**
+ * Sets the receiver's progress state, the state can be one of
+ * the following:
+ * <p><ul>
+ * <li>{@link SWT#DEFAULT}</li>
+ * <li>{@link SWT#NORMAL}</li>
+ * <li>{@link SWT#PAUSED}</li>
+ * <li>{@link SWT#ERROR}</li>
+ * <li>{@link SWT#INDETERMINATE}</li>
+ * </ul></p>
+ * 
+ * The percentage of progress shown by the states <code>SWT#NORMAL</code>, <code>SWT#PAUSED</code>, 
+ * <code>SWT#ERROR</code> is set with <code>setProgress()</code>. <br>
+ * The state <code>SWT#DEFAULT</code> indicates that no progress should be shown.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return <code>SWT#DEFAULT</code>.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param progressState the new progress state 
+ *
+ * @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 {@link #setProgress(int)}
+ */
 public void setProgressState (int progressState) {
 	checkWidget ();
 	if (this.progressState == progressState) return;
 	this.progressState = progressState;
 }
 
+/**
+ * Sets the receiver's progress, the progress represents a percentage and
+ * should be in range from 0 to 100. The progress is only shown when the progress
+ * state is different than <code>SWT#DEFAULT</code>.
+ *
+ * <p>
+ * This feature might not be available for the receiver on all
+ * platforms. The application code can check if it is supported
+ * by calling the respective get method. When the feature is not
+ * available, the get method will always return zero.</p>
+ *
+ * <p>
+ * For better cross platform support, the application code should
+ * first try to set this feature on the <code>TaskItem</code> for the 
+ * main shell then on the <code>TaskItem</code> for the application.</p>
+ *
+ * @param progress the new progress
+ *
+ * @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 {@link #setProgressState(int)}
+ */
 public void setProgress (int progress) {
 	checkWidget ();
 	progress = Math.max(0, Math.min(progress, PROGRESS_MAX));
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java
index 06f73fc..a0f8fbc 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/textlayout/org/eclipse/swt/graphics/TextLayout.java	
@@ -1157,6 +1157,17 @@ public int[] getSegments() {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1261,6 +1272,17 @@ public int getWidth () {
 	return wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout();
 	return wrapIndent;
@@ -1272,7 +1294,7 @@ public int getWrapIndent () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1484,7 +1506,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1493,6 +1515,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1564,7 +1588,7 @@ public void setSpacing (int spacing) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1573,12 +1597,18 @@ public void setSpacing (int spacing) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1596,6 +1626,23 @@ public void setSegments(int[] segments) {
 	this.segments = segments;
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
@@ -1776,6 +1823,20 @@ public void setWidth (int width) {
 	this.wrapWidth = width;
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout();
 	if (wrapIndent < 0) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Table.java
index e5b4972..3929f05 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Table.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Table.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -72,6 +72,7 @@ public class Table extends Composite {
 	TableItem[] items = new TableItem [0];
 	TableItem[] selectedItems = new TableItem [0];
 	TableItem focusItem, anchorItem, lastClickedItem;
+	Color cachedBackground, cachedForeground;
 	Event lastSelectionEvent;
 	boolean linesVisible, ignoreKey, ignoreDispose, customHeightSet;
 	int itemsCount = 0;
@@ -791,6 +792,11 @@ Image getArrowDownImage () {
 Image getArrowUpImage () {
 	return (Image) display.getData (ID_ARROWUP);
 }
+public Color getBackground () {
+	checkWidget ();
+	if (cachedBackground != null) return cachedBackground;
+	return super.getBackground ();
+}
 int getCellPadding () {
 	return MARGIN_CELL + WIDTH_CELL_HIGHLIGHT; 
 }
@@ -936,6 +942,11 @@ public TableColumn[] getColumns () {
 	System.arraycopy (columns, 0, result, 0, columns.length);
 	return result;
 }
+public Color getForeground () {
+	checkWidget ();
+	if (cachedForeground != null) return cachedForeground;
+	return super.getForeground ();
+}
 Image getGrayUncheckedImage () {
 	return (Image) display.getData (ID_GRAYUNCHECKED);
 }
@@ -2035,6 +2046,7 @@ void onDispose (Event event) {
 	lastSelectionEvent = null;
 	header = null;
 	resizeColumn = sortColumn = null;
+	cachedBackground = cachedForeground = null;
 }
 void onEnd (int stateMask) {
 	int lastAvailableIndex = itemsCount - 1;
@@ -2684,7 +2696,8 @@ void onPaint (Event event) {
 	endIndex = Math.min (endIndex, itemsCount - 1);
 
 	/* fill background not handled by items */
-	gc.setBackground (getBackground ());
+	cachedBackground = getBackground ();
+	gc.setBackground (cachedBackground);
 	gc.setClipping (clipping);
 	int bottomY = endIndex >= 0 ? getItemY (items [endIndex]) + itemHeight : 0;
 	int fillHeight = Math.max (0, clientArea.height - bottomY);
@@ -2703,6 +2716,7 @@ void onPaint (Event event) {
 	boolean noFocusDraw = false;
 	int[] lineDash = gc.getLineDash ();
 	int lineWidth = gc.getLineWidth ();
+	cachedForeground = getForeground ();
 	for (int i = startIndex; i <= Math.min (endIndex, itemsCount - 1); i++) {
 		TableItem item = items [i];
 		if (!item.isDisposed ()) {	/* ensure that item was not disposed in a callback */
@@ -2717,13 +2731,20 @@ void onPaint (Event event) {
 						if (!item.isDisposed ()) {	/* ensure that item was not disposed in a callback */
 							noFocusDraw = item.paint (gc, orderedColumns [j], false) || noFocusDraw;
 						}
-						if (isDisposed () || gc.isDisposed ()) return;	/* ensure that receiver was not disposed in a callback */
+						if (isDisposed () || gc.isDisposed ()) { /* ensure that receiver was not disposed in a callback */
+							cachedBackground = cachedForeground = null;
+							return;
+						}
 					}
 				}
 			}
 		}
-		if (isDisposed () || gc.isDisposed ()) return;	/* ensure that receiver was not disposed in a callback */
+		if (isDisposed () || gc.isDisposed ()) { /* ensure that receiver was not disposed in a callback */
+			cachedBackground = cachedForeground = null;
+			return;
+		}
 	}
+	cachedBackground = cachedForeground = null;
 
 	/* repaint grid lines */
 	gc.setClipping(clipping);
@@ -3290,10 +3311,9 @@ public void setBackground (Color color) {
 	if (color == null) color = display.getSystemColor (SWT.COLOR_LIST_BACKGROUND); 
 	super.setBackground (color);
 }
-public void setForeground (Color color) {
-	checkWidget ();
-	if (color == null) color = display.getSystemColor (SWT.COLOR_LIST_FOREGROUND); 
-	super.setForeground (color);
+void setBackgroundPixel (int pixel) {
+	super.setBackgroundPixel (pixel);
+	cachedBackground = null;
 }
 /**
  * Sets the order that the items in the receiver should 
@@ -3412,6 +3432,15 @@ public void setFont (Font value) {
 	}
 	redraw ();
 }
+public void setForeground (Color color) {
+	checkWidget ();
+	if (color == null) color = display.getSystemColor (SWT.COLOR_LIST_FOREGROUND); 
+	super.setForeground (color);
+}
+void setForegroundPixel (int pixel) {
+	super.setForegroundPixel (pixel);
+	cachedForeground = null;
+}
 void setHeaderImageHeight (int value) {
 	headerImageHeight = value;
 	Point headerSize = header.getSize ();
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TableItem.java
index fc37502..abdf2bc 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TableItem.java	
@@ -428,10 +428,10 @@ public Color getBackground (int columnIndex) {
 	return cellBackgrounds [columnIndex];
 }
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Tree.java
index 1420337..5f47203 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Tree.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/Tree.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -81,6 +81,7 @@ public class Tree extends Composite {
 	TreeItem[] selectedItems = NO_ITEMS;
 	TreeItem focusItem, anchorItem, insertMarkItem;
 	TreeItem lastClickedItem;
+	Color cachedBackground, cachedForeground;
 	Event lastSelectionEvent;
 	int availableItemsCount = 0;
 	boolean insertMarkPrecedes = false;
@@ -825,6 +826,11 @@ Image getArrowDownImage () {
 Image getArrowUpImage () {
 	return (Image) display.getData (ID_ARROWUP);
 }
+public Color getBackground () {
+	checkWidget ();
+	if (cachedBackground != null) return cachedBackground;
+	return super.getBackground ();
+}
 int getCellPadding () {
 	return MARGIN_CELL + WIDTH_CELL_HIGHLIGHT; 
 }
@@ -985,6 +991,11 @@ Color getConnectorColor () {
 Image getExpandedImage () {
 	return (Image) display.getData (ID_EXPANDED);
 }
+public Color getForeground () {
+	checkWidget ();
+	if (cachedForeground != null) return cachedForeground;
+	return super.getForeground ();
+}
 Image getGrayUncheckedImage () {
 	return (Image) display.getData (ID_GRAYUNCHECKED);
 }
@@ -2298,6 +2309,7 @@ void onDispose (Event event) {
 	header = null;
 	resizeColumn = sortColumn = null;
 	expanderBounds = null;
+	cachedBackground = cachedForeground = null;
 }
 void onEnd (int stateMask) {
 	int lastAvailableIndex = availableItemsCount - 1;
@@ -2973,7 +2985,8 @@ void onPaint (Event event) {
 	endIndex = Math.min (endIndex, availableItemsCount - 1);
 
 	/* fill background not handled by items */
-	gc.setBackground (getBackground ());
+	cachedBackground = getBackground ();
+	gc.setBackground (cachedBackground);
 	gc.setClipping (clipping);
 	int bottomY = endIndex >= 0 ? getItemY (availableItems [endIndex]) + itemHeight : 0;
 	int fillHeight = Math.max (0, clientArea.height - bottomY);
@@ -2992,6 +3005,7 @@ void onPaint (Event event) {
 	boolean noFocusDraw = false;
 	int[] lineDash = gc.getLineDash ();
 	int lineWidth = gc.getLineWidth ();
+	cachedForeground = getForeground ();
 	for (int i = startIndex; i <= Math.min (endIndex, availableItemsCount - 1); i++) {
 		TreeItem item = availableItems [i];
 		if (!item.isDisposed ()) {	/* ensure that item was not disposed in a callback */
@@ -3006,13 +3020,20 @@ void onPaint (Event event) {
 						if (!item.isDisposed ()) {	/* ensure that item was not disposed in a callback */
 							noFocusDraw = item.paint (gc, orderedColumns [j], false) || noFocusDraw;
 						}
-						if (isDisposed () || gc.isDisposed ()) return;	/* ensure that receiver was not disposed in a callback */
+						if (isDisposed () || gc.isDisposed ()) { /* ensure that receiver was not disposed in a callback */
+							cachedBackground = cachedForeground = null;
+							return;
+						}
 					}
 				}
 			}
 		}
-		if (isDisposed () || gc.isDisposed ()) return;	/* ensure that receiver was not disposed in a callback */
+		if (isDisposed () || gc.isDisposed ()) { /* ensure that receiver was not disposed in a callback */
+			cachedBackground = cachedForeground = null;
+			return;
+		}
 	}
+	cachedBackground = cachedForeground = null;
 
 	/* repaint grid lines */
 	gc.setClipping(clipping);
@@ -3465,6 +3486,10 @@ public void setBackground (Color color) {
 	if (color == null) color = display.getSystemColor (SWT.COLOR_LIST_BACKGROUND); 
 	super.setBackground (color);
 }
+void setBackgroundPixel (int pixel) {
+	super.setBackgroundPixel (pixel);
+	cachedBackground = null;
+}
 /**
  * Sets the order that the items in the receiver should 
  * be displayed in to the given argument which is described
@@ -3603,6 +3628,10 @@ public void setForeground (Color color) {
 	if (color == null) color = display.getSystemColor (SWT.COLOR_LIST_FOREGROUND); 
 	super.setForeground (color);
 }
+void setForegroundPixel (int pixel) {
+	super.setForegroundPixel (pixel);
+	cachedForeground = null;
+}
 void setHeaderImageHeight (int value) {
 	headerImageHeight = value;
 	Point headerSize = header.getSize ();
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TreeItem.java
index 6d2a670..966b669 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/emulated/treetable/org/eclipse/swt/widgets/TreeItem.java	
@@ -843,10 +843,10 @@ public Color getBackground (int columnIndex) {
 	return cellBackgrounds [columnIndex];
 }
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -2495,8 +2495,6 @@ public void setFont (int columnIndex, Font font) {
  *
  * @param color the new color (or null)
  *
- * @since 2.0
- * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
  * </ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Color.java
index 5e671bc..7a57f02 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Color.java	
@@ -269,7 +269,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java
index 9f46a49..96dfe32 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java	
@@ -92,6 +92,10 @@ Cursor (Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -507,7 +511,7 @@ public int hashCode() {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java
index 86764a7..7393351 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/DeviceData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/DeviceData.java
index c85b3ba..f212af0 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/DeviceData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/DeviceData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Font.java
index 97236c4..2619dbb 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Font.java	
@@ -268,7 +268,7 @@ void init(String name, float height, int style, byte[] fontString) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/FontData.java
index c9aba3a..39a350c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
index 2393461..ac76e2c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java	
@@ -2892,7 +2892,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java
index 9a0e5e1..a2785ce 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java	
@@ -1097,7 +1097,7 @@ public int /*long*/ internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -1111,7 +1111,7 @@ public void internal_dispose_GC (int /*long*/ gdkGC, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Region.java
index 0d7e5ce..a2b8995 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Region.java	
@@ -414,7 +414,7 @@ public boolean intersects(Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/TextLayout.java
index c90cce2..372b628 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/TextLayout.java	
@@ -1543,6 +1543,17 @@ public int[] getSegments() {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1694,6 +1705,17 @@ public int getWidth () {
 	return wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout ();
 	return wrapIndent;
@@ -1705,7 +1727,7 @@ public int getWrapIndent () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1832,7 +1854,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1841,6 +1863,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1917,7 +1941,7 @@ public void setSpacing (int spacing) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1926,12 +1950,18 @@ public void setSpacing (int spacing) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1949,6 +1979,23 @@ public void setSegments(int[] segments) {
 	this.segments = segments;
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
@@ -2183,6 +2230,20 @@ void setWidth () {
 	}
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout();
 	if (wrapIndent < 0) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index decf696..f16b2d4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java	
@@ -118,6 +118,12 @@ static int checkStyle (int style) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java
index 405a09a..3fd382c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java	
@@ -219,7 +219,7 @@ void reskinChildren (int flags) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java
index 257f07a..1605c49 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -125,6 +125,10 @@ public RGB open () {
 			OS.g_list_free (pixbufs);
 		}
 	}
+	if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+		int /*long*/ group = OS.gtk_window_get_group(0);
+		OS.gtk_window_group_add_window (group, handle);
+	}
 	OS.gtk_window_set_modal (handle, true);
 	GtkColorSelectionDialog dialog = new GtkColorSelectionDialog ();
 	OS.memmove (dialog, handle);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
index 6522098..d692fc3 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java	
@@ -42,7 +42,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
index 10f99d3..483032f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java	
@@ -330,6 +330,33 @@ void deregister () {
 	if (socketHandle != 0) display.removeWidget (socketHandle);
 }
 
+/** 
+ * Fills the interior of the rectangle specified by the arguments,
+ * with the receiver's background. 
+ *
+ * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.</p>
+ * 
+ * @param gc the gc where the rectangle is to be filled
+ * @param x the x coordinate of the rectangle to be filled
+ * @param y the y coordinate of the rectangle to be filled
+ * @param width the width of the rectangle to be filled
+ * @param height the height of the rectangle to be filled
+ * @param offsetX the image background x offset 
+ * @param offsetY the image background y offset
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the gc has been disposed</li>
+ * </ul>
+ * @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>
+ * 
+ * @since 3.6
+ */
 public void drawBackground (GC gc, int x, int y, int width, int height, int offsetX, int offsetY) {
 	checkWidget ();
 	if (gc == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -958,6 +985,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index c71351d..8cdb4ab 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java	
@@ -28,7 +28,8 @@ import org.eclipse.swt.internal.gtk.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -1964,7 +1965,7 @@ public void removeTraverseListener(TraverseListener listener) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -2006,7 +2007,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -2421,6 +2422,11 @@ public Menu getMenu () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -3039,7 +3045,7 @@ int /*long*/ imHandle () {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data
+ * @param data the platform specific GC data 
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -3284,14 +3290,18 @@ void release (boolean destroy) {
 			if (children [index] == this) break;
 			index++;
 		}
-		if (0 < index && (index + 1) < children.length) {
-			next = children [index + 1];
+		if (index > 0) {
 			previous = children [index - 1];
 		}
+		if (index + 1 < children.length) {
+			next = children [index + 1];
+			next.removeRelation ();
+		}
+		removeRelation ();
 	}
 	super.release (destroy);
 	if (destroy) {
-		if (previous != null) previous.addRelation (next);
+		if (previous != null && next != null) previous.addRelation (next);
 	}
 }
 
@@ -4327,7 +4337,8 @@ void sort (int [] items) {
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
@@ -4365,7 +4376,7 @@ public boolean traverse (int traversal) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -4403,7 +4414,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
index a138f99..2e570bf 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
index 8b31222..06e08e1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -133,6 +133,10 @@ String openChooserDialog () {
 	} else {
 		handle = OS.gtk_file_chooser_dialog_new (titleBytes, shellHandle, OS.GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, OS.GTK_STOCK_OK (), OS.GTK_RESPONSE_OK, OS.GTK_STOCK_CANCEL (), OS.GTK_RESPONSE_CANCEL, 0);
 	}
+	if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+		int /*long*/ group = OS.gtk_window_get_group(0);
+		OS.gtk_window_group_add_window (group, handle);
+	}
 	OS.gtk_window_set_modal (handle, true);
 	int /*long*/ pixbufs = OS.gtk_window_get_icon_list (shellHandle);
 	if (pixbufs != 0) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
index 74c5fa2..09e289f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java	
@@ -79,7 +79,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -2305,6 +2305,18 @@ public Font getSystemFont () {
 	return systemFont = Font.gtk_new (this, defaultFont);
 }
 
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	return null;
@@ -3674,6 +3686,8 @@ public static void setAppName (String name) {
  * Sets the application version to the argument.
  *
  * @param version the new app version
+ * 
+ * @since 3.6
  */
 public static void setAppVersion (String version) {
 	APP_VERSION = version;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java
index a0c47b2..1dd6921 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -414,6 +414,10 @@ String openChooserDialog () {
 		handle = OS.gtk_file_chooser_dialog_new (titleBytes, shellHandle, action, OS.GTK_STOCK_OK (), OS.GTK_RESPONSE_OK, OS.GTK_STOCK_CANCEL (), OS.GTK_RESPONSE_CANCEL, 0);
 	}
 	OS.gtk_window_set_modal (handle, true);
+	if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+		int /*long*/ group = OS.gtk_window_get_group(0);
+		OS.gtk_window_group_add_window (group, handle);
+	}
 	int /*long*/ pixbufs = OS.gtk_window_get_icon_list (shellHandle);
 	if (pixbufs != 0) {
 		OS.gtk_window_set_icon_list (handle, pixbufs);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java
index d2c7d32..8ba5db6 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -148,6 +148,10 @@ public FontData open () {
 			OS.g_list_free (pixbufs);
 		}
 	}
+	if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+		int /*long*/ group = OS.gtk_window_get_group(0);
+		OS.gtk_window_group_add_window (group, handle);
+	}
 	OS.gtk_window_set_modal (handle, true);
 	if (fontData != null) {
 		Font font = new Font (display, fontData);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index b9240f1..7d5b03a 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java
index efe2611..6495b79 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java	
@@ -712,6 +712,18 @@ void setFontDescription (int /*long*/ font) {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
index 38e6ac8..d98c282 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java	
@@ -197,7 +197,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
index 3d1cfd1..2a74df6 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -167,6 +167,16 @@ public int open () {
 	OS.gtk_window_set_title(handle,buffer);
 	display.addIdleProc ();
 	Dialog oldModal = null;
+	/*
+	* In order to allow the dialog to be modal of it's
+	* parent shells, it is required to assign the 
+	* dialog to the same window group as of the shells.
+	*/
+	if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
+		int /*long*/ group = OS.gtk_window_get_group(0);
+		OS.gtk_window_group_add_window (group, handle);
+	}
+	
 	if (OS.gtk_window_get_modal (handle)) {
 		oldModal = display.getModalDialog ();
 		display.setModalDialog (this);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
index 560c841..07580ec 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java	
@@ -306,8 +306,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -325,6 +324,19 @@ public int getThumb () {
 	return (int) adjustment.page_size;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	int slider_start = OS.GTK_RANGE_SLIDER_START (handle);
@@ -354,6 +366,20 @@ public Rectangle getThumbBounds () {
 	return rect;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	int x = 0, y = 0, width, height;
@@ -746,10 +772,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
index ba56a45..6fcc34f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1314,7 +1314,7 @@ int /*long*/ gtk_motion_notify_event (int /*long*/ widget, int /*long*/ event) {
 		}
 		return 0;
 	}
-	return super.gtk_leave_notify_event (widget, event);
+	return super.gtk_motion_notify_event (widget, event);
 }
 
 int /*long*/ gtk_key_press_event (int /*long*/ widget, int /*long*/ event) {
@@ -2145,12 +2145,25 @@ int trimWidth () {
 void updateModal () {
 	if (OS.GTK_IS_PLUG (shellHandle)) return;
 	int /*long*/ group = 0;
+	boolean isModalShell = false;
 	if (display.getModalDialog () == null) {
 		Shell modal = getModalShell ();
 		int mask = SWT.PRIMARY_MODAL | SWT.APPLICATION_MODAL | SWT.SYSTEM_MODAL;
 		Composite shell = null;
 		if (modal == null) {
-			if ((style & mask) != 0) shell = this;
+			if ((style & mask) != 0) {
+				shell = this;
+				/*
+				* Feature in GTK. If a modal shell is reassigned to
+				* a different group, then it's modal state is not.
+				* persisted against the new group. 
+				* The fix is to reset the modality before it is changed
+				* into a different group and then, set back after it
+				* assigned into new group.
+				*/
+				isModalShell = OS.gtk_window_get_modal (shellHandle);
+				if (isModalShell) OS.gtk_window_set_modal (shellHandle, false);
+			}
 		} else {
 			shell = modal;
 		}
@@ -2173,6 +2186,7 @@ void updateModal () {
 	}
 	if (group != 0) {
 		OS.gtk_window_group_add_window (group, shellHandle);
+		if (isModalShell) OS.gtk_window_set_modal (shellHandle, true);
 	} else {
 		if (modalGroup != 0) {
 			OS.gtk_window_group_remove_window (modalGroup, shellHandle);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java
index f240cae..957b792 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java	
@@ -365,8 +365,7 @@ public int getSelection () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -538,10 +537,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
index af9fff4..c87d7cd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java	
@@ -47,6 +47,7 @@ public class Spinner extends Composite {
 	int lastEventTime = 0;
 	int /*long*/ gdkEventKey = 0;
 	int fixStart = -1, fixEnd = -1;
+	double climbRate = 1;
 	
 	/**
 	 * the operating system limit for the number of characters
@@ -292,7 +293,7 @@ void createHandle (int index) {
 	OS.gtk_fixed_set_has_window (fixedHandle, true);
 	int /*long*/ adjustment = OS.gtk_adjustment_new (0, 0, 100, 1, 10, 0);
 	if (adjustment == 0) error (SWT.ERROR_NO_HANDLES);
-	handle = OS.gtk_spin_button_new (adjustment, 1, 0);
+	handle = OS.gtk_spin_button_new (adjustment, climbRate, 0);
 	if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 	OS.gtk_container_add (fixedHandle, handle);
 	OS.gtk_editable_set_editable (handle, (style & SWT.READ_ONLY) == 0);
@@ -911,11 +912,11 @@ public void setIncrement (int value) {
 
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -938,11 +939,11 @@ public void setMaximum (int value) {
 
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1077,15 +1078,17 @@ public void setDigits (int value) {
 		adjustment.lower *= factor;
 		adjustment.step_increment *= factor;
 		adjustment.page_increment *= factor;
+		climbRate *= factor;
 	} else {
 		adjustment.value /= factor;
 		adjustment.upper /= factor;
 		adjustment.lower /= factor;
 		adjustment.step_increment /= factor;
 		adjustment.page_increment /= factor;
+		climbRate /= factor;
 	}
 	OS.memmove (hAdjustment, adjustment);
-	OS.gtk_spin_button_set_digits (handle, value);
+	OS.gtk_spin_button_configure (handle, hAdjustment, climbRate, value);
 }
 
 /**
@@ -1124,7 +1127,15 @@ public void setValues (int selection, int minimum, int maximum, int digits, int
 	OS.gtk_spin_button_set_range (handle, minimum / factor, maximum / factor);
 	OS.gtk_spin_button_set_increments (handle, increment / factor, pageIncrement / factor);
 	OS.gtk_spin_button_set_value (handle, selection / factor);
-	OS.gtk_spin_button_set_digits (handle, digits);
+	/*
+	* The value of climb-rate indicates the acceleration rate 
+	* to spin the value when the button is pressed and hold 
+	* on the arrow button. This value should be varied 
+	* depending upon the value of digits.
+	*/
+	climbRate = 1.0 / factor;
+	int /*long*/ adjustment = OS.gtk_spin_button_get_adjustment(handle);
+	OS.gtk_spin_button_configure (handle, adjustment, climbRate, digits);
 	OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, VALUE_CHANGED);
 }
 
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
index 0dbb491..d0dfe65 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java
index f348437..3307d50 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java	
@@ -252,10 +252,10 @@ public Color getBackground () {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
index c0a7aa3..3b107ce 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java	
@@ -32,7 +32,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
index d741c89..4c5c7d9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java	
@@ -141,6 +141,12 @@ public ToolItem (ToolBar parent, int style, int index) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
index 3e6c10f..34b765f 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -499,6 +499,8 @@ int /*long*/ gtk_expose_event (int /*long*/ widget, int /*long*/ eventPtr) {
 			x += IMAGE_SIZE;
 		}
 		x += INSET;
+		Color foreground = display.getSystemColor (SWT.COLOR_INFO_FOREGROUND);
+		OS.gdk_gc_set_foreground (gdkGC, foreground.handle);
 		OS.gdk_draw_layout (window, gdkGC, x, y, layoutText);
 		int [] w = new int [1], h = new int [1];
 		OS.pango_layout_get_size (layoutText, w, h);
@@ -506,6 +508,8 @@ int /*long*/ gtk_expose_event (int /*long*/ widget, int /*long*/ eventPtr) {
 	}
 	if (layoutMessage != 0) {
 		x = BORDER + PADDING + INSET;
+		Color foreground = display.getSystemColor (SWT.COLOR_INFO_FOREGROUND);
+		OS.gdk_gc_set_foreground (gdkGC, foreground.handle);
 		OS.gdk_draw_layout (window, gdkGC, x, y, layoutMessage);
 	}
 	OS.g_object_unref (gdkGC);
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
index fc9d090..db619d7 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
index 1102499..c40dea4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java	
@@ -479,10 +479,10 @@ public Rectangle getBounds (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1449,8 +1449,6 @@ public void setFont (int index, Font font) {
  *
  * @param color the new color (or null)
  *
- * @since 2.0
- * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
  * </ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index 5da5ebe..48e0601 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java	
@@ -435,6 +435,7 @@ void destroyWidget () {
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -949,7 +950,7 @@ boolean isActive () {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
@@ -1184,8 +1185,31 @@ int /*long*/ rendererRenderProc (int /*long*/ cell, int /*long*/ window, int /*l
 }
 
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java
index 6f5e63f..73cd8bf 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java	
@@ -316,7 +316,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java
index df20a54..672ea19 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java	
@@ -91,6 +91,10 @@ Cursor (Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -418,7 +422,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java
index b03a199..8392403 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java
index 5e46f67..a00669c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java	
@@ -512,7 +512,7 @@ void init (FontData[] fds) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java
index 1a37e1f..b018d7a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
index c82db19..a49e469 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java	
@@ -3414,7 +3414,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java
index 2ec6fd8..340d524 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java	
@@ -1171,7 +1171,7 @@ public int internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -1188,7 +1188,7 @@ public void internal_dispose_GC (int gc, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java
index 252deb9..acf228a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java	
@@ -387,7 +387,7 @@ public boolean intersects (Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java
index e457680..2e42756 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/TextLayout.java	
@@ -157,7 +157,7 @@ void computeRuns () {
 					break;
 			}
 		}
-		if (wrapWidth != -1 && lineWidth + run.width > wrapWidth && !run.tab) {
+		if (wrapWidth != -1 && lineWidth + run.width > wrapWidth && !run.tab && run.length > 0) {
 			int start = 0;
 			char[] chars = new char[run.length];
 			text.getChars(run.start, run.start + run.length, chars, 0);
@@ -1312,6 +1312,17 @@ public int[] getSegments() {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1430,6 +1441,17 @@ public int getWidth () {
 	return wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout();
 	return wrapIndent;
@@ -1441,7 +1463,7 @@ public int getWrapIndent () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1659,7 +1681,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1668,6 +1690,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1739,7 +1763,7 @@ public void setSpacing (int spacing) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1748,12 +1772,18 @@ public void setSpacing (int spacing) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1771,6 +1801,23 @@ public void setSegments(int[] segments) {
 	this.segments = segments;
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
@@ -1951,6 +1998,20 @@ public void setWidth (int width) {
 	this.wrapWidth = width;
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout();
 	if (wrapIndent < 0) return;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java
index 2c10e59..5522a1b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java	
@@ -175,6 +175,12 @@ void _setText (String string) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java
index 2b4568a..eb75893 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java	
@@ -169,7 +169,7 @@ void reskinChildren (int flags) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java
index 8ad4709..2fe3d38 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java	
@@ -42,7 +42,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java
index 68362a6..ad42e78 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java	
@@ -303,6 +303,33 @@ void deregister () {
 void drawBackground (GC gc, int x, int y, int width, int height) {
 	drawBackground(gc, x, y, width, height, 0, 0);
 }
+/** 
+ * Fills the interior of the rectangle specified by the arguments,
+ * with the receiver's background. 
+ *
+ * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.</p>
+ * 
+ * @param gc the gc where the rectangle is to be filled
+ * @param x the x coordinate of the rectangle to be filled
+ * @param y the y coordinate of the rectangle to be filled
+ * @param width the width of the rectangle to be filled
+ * @param height the height of the rectangle to be filled
+ * @param offsetX the image background x offset 
+ * @param offsetY the image background y offset
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the gc has been disposed</li>
+ * </ul>
+ * @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>
+ * 
+ * @since 3.6
+ */
 public void drawBackground (GC gc, int x, int y, int width, int height, int offsetX, int offsetY) {
 	checkWidget ();
 	if (gc == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -354,7 +381,6 @@ public void drawBackground (GC gc, int x, int y, int width, int height, int offs
 				short [] control_x = new short [1], control_y = new short [1];
 				OS.XtTranslateCoords (control.handle, (short) 0, (short) 0, control_x, control_y);
 				int tileX = root_x[0] - control_x[0], tileY = root_y[0] - control_y[0];
-				System.out.println(tileX + ":" + tileY);
 				OS.XSetFillStyle (xDisplay, xGC, OS.FillTiled);
 				OS.XSetTSOrigin (xDisplay, xGC, -tileX - offsetX, -tileY - offsetY);
 				OS.XSetTile (xDisplay, xGC, control.backgroundImage.pixmap);
@@ -761,6 +787,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java
index 3b9f7e4..7a704b3 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java	
@@ -26,7 +26,8 @@ import org.eclipse.swt.accessibility.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -650,7 +651,7 @@ int defaultForeground () {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -691,7 +692,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1170,6 +1171,11 @@ int getMinimumHeight () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -3316,7 +3322,7 @@ int traversalCode (int key, XKeyEvent xEvent) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3353,7 +3359,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3490,7 +3496,8 @@ boolean traverse (Event event) {
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java
index 8e6358f..c4b0182 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java
index 8b6748a..20bf390 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java	
@@ -79,7 +79,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -1956,6 +1956,18 @@ public Image getSystemImage (int style) {
 	if (imagePixmap == 0) return null;
 	return Image.motif_new (this, SWT.ICON, imagePixmap, maskPixmap);
 }
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	return null;
@@ -2477,9 +2489,9 @@ public int internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data
+ * @param data the platform specific GC data 
  * 
- *  @noreference This method is not intended to be referenced by clients.
+ * @noreference This method is not intended to be referenced by clients.
  */
 public void internal_dispose_GC (int gc, GCData data) {
 	OS.XFreeGC(xDisplay, gc);
@@ -3416,6 +3428,8 @@ public static void setAppName (String name) {
  * Sets the application version to the argument.
  *
  * @param version the new app version
+ * 
+ * @since 3.6
  */
 public static void setAppVersion (String version) {
 	APP_VERSION = version;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Link.java
index 8d82436..3d3e43b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Link.java	
@@ -441,6 +441,18 @@ void setForegroundPixel (int pixel) {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java
index 9731e46..5dc8c8a 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java	
@@ -230,7 +230,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java
index 9397b08..3df6eef 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java
index 1a5def9..6415baf 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java	
@@ -294,8 +294,7 @@ public Point getSize () {
 	return new Point (argList [1] + borders, argList [3] + borders);
 }
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -312,6 +311,19 @@ public int getThumb () {
 	OS.XtGetValues (handle, argList, argList.length / 2);
 	return argList [1];
 }
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	int [] argList = {
@@ -358,6 +370,20 @@ public Rectangle getThumbBounds () {
 	rect.y -= root_y [0];
 	return rect;
 }
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	int [] argList = {
@@ -676,10 +702,13 @@ public void setSelection (int selection) {
 	display.setWarnings (warnings);
 }
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java
index d398d9c..744b821 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java
index 0ac37fc..0255d53 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java	
@@ -258,8 +258,7 @@ public int getSelection () {
 	return argList [1];
 }
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -440,10 +439,13 @@ public void setSelection (int value) {
 	display.setWarnings (warnings);
 }
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Spinner.java
index 1a4266f..11433a7 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Spinner.java	
@@ -697,11 +697,11 @@ public void setIncrement (int value) {
 }
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -720,11 +720,11 @@ public void setMaximum (int value) {
 }
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java
index bb12017..3e72a30 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java	
@@ -32,7 +32,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java
index 9908c46..3acbc23 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java	
@@ -140,6 +140,12 @@ public ToolItem (ToolBar parent, int style, int index) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java
index 997e427..34256cb 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java	
@@ -340,6 +340,7 @@ void destroyWidget () {
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -550,7 +551,7 @@ boolean hooks (int eventType) {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
@@ -769,8 +770,31 @@ protected void removeListener (int eventType, SWTEventListener handler) {
 	eventTable.unhook (eventType, handler);
 }
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java
index c7c70a3..5c3ea28 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java	
@@ -213,7 +213,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java
index 3ad36af..ba1491e 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java	
@@ -81,6 +81,10 @@ Cursor(Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -439,7 +443,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java
index f5f0c4f..8d1eafa 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java
index e94abad..36ad265 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java	
@@ -205,7 +205,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java
index 45c1c15..134cc77 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java
index fc4e82f..3d6deea 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java
index c744428..3b01e29 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java	
@@ -2547,7 +2547,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java
index 92fae76..93bb5dc 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java	
@@ -953,7 +953,7 @@ public int internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -967,7 +967,7 @@ public void internal_dispose_GC (int pmMC, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java
index 39ac431..9fb0d6d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java	
@@ -452,7 +452,7 @@ public boolean intersects (Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java
index 2910290..ec08b7c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java	
@@ -116,6 +116,12 @@ static int checkStyle (int style) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java
index 44d3d8a..eda2398 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java	
@@ -202,7 +202,7 @@ void reskinChildren (int flags) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java
index 8fc948a..0999db4 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java	
@@ -42,7 +42,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java
index 776c645..cc5652c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java	
@@ -285,6 +285,33 @@ void createScrolledHandle (int parentHandle) {
 	createScrollBars ();
 }
 
+/** 
+ * Fills the interior of the rectangle specified by the arguments,
+ * with the receiver's background. 
+ *
+ * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.</p>
+ * 
+ * @param gc the gc where the rectangle is to be filled
+ * @param x the x coordinate of the rectangle to be filled
+ * @param y the y coordinate of the rectangle to be filled
+ * @param width the width of the rectangle to be filled
+ * @param height the height of the rectangle to be filled
+ * @param offsetX the image background x offset 
+ * @param offsetY the image background y offset
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the gc has been disposed</li>
+ * </ul>
+ * @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>
+ * 
+ * @since 3.6
+ */
 public void drawBackground (GC gc, int x, int y, int width, int height, int offsetX, int offsetY) {
 	drawBackground(gc, offsetX, offsetY, width, height);
 }
@@ -767,6 +794,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java
index 0dfb6bf..2dffaa1 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java	
@@ -26,7 +26,8 @@ import org.eclipse.swt.accessibility.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -613,7 +614,7 @@ boolean drawGripper (int x, int y, int width, int height, boolean vertical) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -655,7 +656,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1046,6 +1047,11 @@ public Menu getMenu () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -3158,7 +3164,7 @@ int traversalCode (int key_sym, PhKeyEvent_t ke) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3196,7 +3202,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3344,7 +3350,8 @@ boolean traverse (Event event) {
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java
index 0129737..25282f2 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java
index fee5904..36adcfd 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java	
@@ -79,7 +79,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -955,6 +955,8 @@ public static void setAppName (String name) {
  * Sets the application version to the argument.
  *
  * @param version the new app version
+ * 
+ * @since 3.6
  */
 public static void setAppVersion (String version) {
 	APP_VERSION = version;
@@ -1348,6 +1350,18 @@ public Image getSystemImage (int id) {
 	return null;
 }
 
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	return null;
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Link.java
index 4864a59..70e1559 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Link.java	
@@ -595,6 +595,18 @@ public void setFont (Font font) {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java
index 4553d5e..ec4107d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java	
@@ -197,7 +197,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java
index 42117cd..5e0608d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java	
@@ -319,8 +319,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -338,12 +337,39 @@ public int getThumb () {
 	return args [1];
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	//TODO implement getThumbBounds()
 	return null;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	//TODO implement getThumbTrackBounds()
@@ -637,10 +663,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java
index 8de4424..5825034 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java	
@@ -282,8 +282,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -488,10 +487,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Spinner.java
index e8e5d1a..217890c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Spinner.java	
@@ -670,11 +670,11 @@ public void setIncrement (int value) {
 
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -689,11 +689,11 @@ public void setMaximum (int value) {
 
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java
index 4fdf962..b41ca62 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java	
@@ -32,7 +32,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java
index ee26514..74ea3c3 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java	
@@ -137,6 +137,12 @@ public ToolItem (ToolBar parent, int style, int index) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java
index 986994e..47cd148 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java	
@@ -422,6 +422,7 @@ void destroyWidget () {
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -641,7 +642,7 @@ void hookEvents () {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
@@ -916,8 +917,31 @@ protected void removeListener (int eventType, SWTEventListener handler) {
 }
 
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java
index 4099e9f..d1c6a09 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -285,7 +285,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java
index a62885f..7cff455 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -151,6 +151,10 @@ Cursor(Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -470,7 +474,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java
index c8bfd2d..a885a9d 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java
index 6fa4667..b21356c 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -218,7 +218,7 @@ void init (FontData fd) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java
index 0472dff..c091768 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java
index cd0c71d..6cec1e4 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java
index 8e7cce3..46b5929 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java	
@@ -2425,7 +2425,10 @@ void drawText(int /*long*/ gdipGraphics, String string, int x, int y, int flags,
 				case '\n':
 					if ((flags & SWT.DRAW_DELIMITER) != 0) {
 						int l = end - start - 1;
-						if (c == '\r' && end != length && chars[end] == '\n') end++;
+						if (c == '\r' && end != length && chars[end] == '\n') {
+							end++;
+							i++;
+						}
 						RectF bounds = drawText(gdipGraphics, chars, start, l, drawX, drawY, flags, mnemonicIndex, lptm, size == null);
 						drawY += Math.ceil(bounds.Height);
 						width = Math.max(width, drawX + (int)Math.ceil(bounds.Width));
@@ -3559,9 +3562,9 @@ public Pattern getForegroundPattern() {
  * 
  * @see GCData
  * 
- * @since 3.2
- * 
  * @noreference This method is not intended to be referenced by clients.
+ * 
+ * @since 3.2
  */
 public GCData getGCData() {
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
@@ -4013,7 +4016,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java
index 620c73b..9722cb6 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java	
@@ -2018,7 +2018,7 @@ public int /*long*/ internal_new_GC (GCData data) {
  * @param hDC the platform specific GC handle
  * @param data the platform specific GC data
  * 
- *  @noreference This method is not intended to be referenced by clients.
+ * @noreference This method is not intended to be referenced by clients.
  */
 public void internal_dispose_GC (int /*long*/ hDC, GCData data) {
 	OS.DeleteDC(hDC);
@@ -2030,7 +2030,7 @@ public void internal_dispose_GC (int /*long*/ hDC, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java
index 84e88e4..44c6bbb 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -541,7 +541,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Pattern.java
index 6de36e6..8c094dd 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Pattern.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -230,7 +230,7 @@ void destroy() {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java
index e4fdee7..f1d7800 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -405,7 +405,7 @@ public boolean intersects (Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java
index 10f6a04..4f72f56 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java	
@@ -277,7 +277,7 @@ void computeRuns (GC gc) {
 				}
 			}
 		} 
-		if (wrapWidth != -1 && lineWidth + run.width > wrapWidth && !run.tab) {
+		if (wrapWidth != -1 && lineWidth + run.width > wrapWidth && !run.tab && !run.lineBreak) {
 			int start = 0;
 			int[] piDx = new int[run.length];
 			if (run.style != null && run.style.metrics != null) {
@@ -2478,7 +2478,7 @@ public int getWrapIndent () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -2764,7 +2764,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied to the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -2827,7 +2827,7 @@ public void setOrientation (int orientation) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -2870,7 +2870,7 @@ public void setSegments(int[] segments) {
  * are set by calling <code>setSegments(int[])</code>. The application can
  * use this API to insert Unicode Control Characters in the text to control
  * the display of the text and bidi reordering. The characters are not 
- * accessible by any other API in </code>TextLayout<code>.
+ * accessible by any other API in <code>TextLayout</code>.
  * 
  * @param segmentsChars the segments characters 
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Transform.java
index a34a553..41fa940 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Transform.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -206,7 +206,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ImageList.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ImageList.java
index 7ee132b..b694c22 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ImageList.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/internal/ImageList.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java
index b83796e..6e50f11 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java
index c85456d..af29388 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1886,13 +1886,7 @@ public void setVisibleItemCount (int count) {
 	checkWidget ();
 	if (count < 0) return;
 	visibleCount = count;
-	if ((style & SWT.DROP_DOWN) != 0) {
-		forceResize ();
-		RECT rect = new RECT ();
-		OS.GetWindowRect (handle, rect);
-		int flags = OS.SWP_NOMOVE | OS.SWP_NOZORDER | OS.SWP_DRAWFRAME | OS.SWP_NOACTIVATE;
-		setBounds (0, 0, rect.right - rect.left, rect.bottom - rect.top, flags);
-	}
+	updateDropDownHeight ();
 }
 
 void subclass () {
@@ -1958,6 +1952,27 @@ void unsubclass () {
 	}
 }
 
+void updateDropDownHeight () {
+	/* 
+	* Feature in Windows.  If the combo box has the CBS_DROPDOWN
+	* or CBS_DROPDOWNLIST style, Windows uses the height that the
+	* programmer sets in SetWindowPos () to control height of the
+	* drop down list.  See #setBounds() for more details.
+	*/
+	if ((style & SWT.DROP_DOWN) != 0) {
+		RECT rect = new RECT ();
+		OS.SendMessage (handle, OS.CB_GETDROPPEDCONTROLRECT, 0, rect);
+		int visibleCount = getItemCount() == 0 ? VISIBLE_COUNT : this.visibleCount;
+		int height = getTextHeight () + (getItemHeight () * visibleCount) + 2;
+		if (height != (rect.bottom - rect.top)) {
+			forceResize ();
+			OS.GetWindowRect (handle, rect);
+			int flags = OS.SWP_NOMOVE | OS.SWP_NOZORDER | OS.SWP_DRAWFRAME | OS.SWP_NOACTIVATE;
+			SetWindowPos (handle, 0, 0, 0, rect.right - rect.left, height, flags);
+		}
+	}
+}
+
 String verifyText (String string, int start, int end, Event keyEvent) {
 	Event event = new Event ();
 	event.text = string;
@@ -2427,6 +2442,7 @@ LRESULT wmCommandChild (int /*long*/ wParam, int /*long*/ lParam) {
 			break;
 		case OS.CBN_DROPDOWN:
 			setCursor ();
+			updateDropDownHeight ();
 			break;
 		case OS.CBN_KILLFOCUS:
 			/*
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
index 7b46974..60cb2cf 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -319,7 +319,7 @@ void createHandle () {
  * with the receiver's background. 
  *
  * <p>The <code>offsetX</code> and <code>offsetY</code> are used to map from
- * the gc origin to the origin of the parent image background. This is useful
+ * the <code>gc</code> origin to the origin of the parent image background. This is useful
  * to ensure proper alignment of the image background.</p>
  * 
  * @param gc the gc where the rectangle is to be filled
@@ -733,7 +733,7 @@ public void layout (Control [] changed) {
  * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
  * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
  * appropriate (usually before the next event is handled). When this flag is set,
- * the application should not call <code>Composite.setLayoutDeferred()</code>.
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
  * </p>
  * <p>
  * Note: Layout is different from painting. If a child is
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java
index c59d93f..f14b8b2 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,7 +27,8 @@ import org.eclipse.swt.accessibility.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -3751,7 +3752,7 @@ public boolean traverse (int traversal) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3789,7 +3790,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java
index fa48bb2..6052f6b 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java
index 170293a..5e2b654 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -79,7 +79,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java
index a95e4d2..8d00eef 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java
index ad11e3b..fe9f650 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java
index 22a672f..b15be30 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Spinner.java
index 979ee9e..0729e2e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Spinner.java	
@@ -900,7 +900,7 @@ public void setIncrement (int value) {
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than or equals to the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -928,7 +928,7 @@ public void setMaximum (int value) {
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than or equals to the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java
index feaf560..f526242 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java
index 4351560..8f77963 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java
index b20b7be..5f28b56 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -195,10 +195,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TaskItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TaskItem.java
index 4044f25..07a9834 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TaskItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TaskItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java
index e01dff5..4469113 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
index 12f60a5..621d392 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
index 5e95b02..a259212 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -381,10 +381,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
index ba01aea..e3cd2ac 100755
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -419,6 +419,7 @@ int /*long*/ DeferWindowPos(int /*long*/ hWinPosInfo, int /*long*/ hWnd, int /*l
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -689,7 +690,7 @@ boolean hooks (int eventType) {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Color.java
index f2044be..a1664ee 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Color.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Color.java	
@@ -235,7 +235,7 @@ void init(int red, int green, int blue) {
  * <p>
  * This method gets the dispose state for the color.
  * When a color has been disposed, it is an error to
- * invoke any other method using the color.
+ * invoke any other method (except {@link #dispose()}) using the color.
  *
  * @return <code>true</code> when the color is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Cursor.java
index 438360f..865d702 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Cursor.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Cursor.java	
@@ -73,6 +73,10 @@ Cursor(Device device) {
  * <p>
  * You must dispose the cursor when it is no longer required. 
  * </p>
+ * NOTE:
+ * It is recommended to use {@link org.eclipse.swt.widgets.Display#getSystemCursor(int)}
+ * instead of using this constructor. This way you can avoid the 
+ * overhead of disposing the Cursor resource.
  *
  * @param device the device on which to allocate the cursor
  * @param style the style of cursor to allocate
@@ -426,7 +430,7 @@ public int hashCode () {
  * <p>
  * This method gets the dispose state for the cursor.
  * When a cursor has been disposed, it is an error to
- * invoke any other method using the cursor.
+ * invoke any other method (except {@link #dispose()}) using the cursor.
  *
  * @return <code>true</code> when the cursor is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Device.java
index 2b25adb..ba3f067 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Device.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Device.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Font.java
index 7531b4d..0d8afcc 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Font.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Font.java	
@@ -252,7 +252,7 @@ void init (FontData fd) {
  * <p>
  * This method gets the dispose state for the font.
  * When a font has been disposed, it is an error to
- * invoke any other method using the font.
+ * invoke any other method (except {@link #dispose()}) using the font.
  *
  * @return <code>true</code> when the font is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/FontData.java
index dffadc8..7701fe2 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/FontData.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/FontData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/GC.java
index 07df956..42114a9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/GC.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/GC.java	
@@ -2111,7 +2111,7 @@ public boolean isClipped() {
  * <p>
  * This method gets the dispose state for the GC.
  * When a GC has been disposed, it is an error to
- * invoke any other method using the GC.
+ * invoke any other method (except {@link #dispose()}) using the GC.
  *
  * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Image.java
index 04b487a..adffe22 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Image.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Image.java	
@@ -1018,7 +1018,7 @@ public int internal_new_GC (GCData data) {
  * </p>
  *
  * @param hDC the platform specific GC handle
- * @param data the platform specific GC data 
+ * @param data the platform specific GC data
  * 
  * @noreference This method is not intended to be referenced by clients.
  */
@@ -1049,7 +1049,7 @@ public void internal_dispose_GC (int dc, GCData data) {
  * <p>
  * This method gets the dispose state for the image.
  * When an image has been disposed, it is an error to
- * invoke any other method using the image.
+ * invoke any other method (except {@link #dispose()}) using the image.
  *
  * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Path.java
index 4716a12..660c61b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Path.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Path.java	
@@ -608,7 +608,7 @@ void init(PathData data) {
  * <p>
  * This method gets the dispose state for the Path.
  * When a Path has been disposed, it is an error to
- * invoke any other method using the Path.
+ * invoke any other method (except {@link #dispose()}) using the Path.
  *
  * @return <code>true</code> when the Path is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Pattern.java
index 6a28e5a..fdc45f4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Pattern.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Pattern.java	
@@ -197,7 +197,7 @@ void destroy() {
  * <p>
  * This method gets the dispose state for the Pattern.
  * When a Pattern has been disposed, it is an error to
- * invoke any other method using the Pattern.
+ * invoke any other method (except {@link #dispose()}) using the Pattern.
  *
  * @return <code>true</code> when the Pattern is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Region.java
index 33d5624..ef2497b 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Region.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Region.java	
@@ -496,7 +496,7 @@ public boolean intersects (Rectangle rect) {
  * <p>
  * This method gets the dispose state for the region.
  * When a region has been disposed, it is an error to
- * invoke any other method using the region.
+ * invoke any other method (except {@link #dispose()}) using the region.
  *
  * @return <code>true</code> when the region is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/TextLayout.java
index b4877cc..990b831 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/TextLayout.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/TextLayout.java	
@@ -1244,6 +1244,17 @@ public int[] getSegments () {
 	return segments;
 }
 
+/**
+ * Returns the segments characters of the receiver.
+ *
+ * @return the segments characters
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @since 3.6
+ */
 public char[] getSegmentsChars () {
 	checkLayout();
 	return segmentsChars;
@@ -1431,6 +1442,17 @@ public int getWidth () {
 	return wrapWidth;
 }
 
+/**
+* Returns the receiver's wrap indent.
+*
+* @return the receiver's wrap indent
+* 
+* @exception SWTException <ul>
+*    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+* </ul>
+* 
+* @since 3.6
+*/
 public int getWrapIndent () {
 	checkLayout();
 	return wrapIndent;
@@ -1442,7 +1464,7 @@ public int getWrapIndent () {
  * <p>
  * This method gets the dispose state for the text layout.
  * When a text layout has been disposed, it is an error to
- * invoke any other method using the text layout.
+ * invoke any other method (except {@link #dispose()}) using the text layout.
  * </p>
  *
  * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
@@ -1560,7 +1582,7 @@ public void setFont (Font font) {
 }
 
 /**
- * Sets the indent of the receiver. This indent it applied of the first line of 
+ * Sets the indent of the receiver. This indent is applied to the first line of 
  * each paragraph.  
  *
  * @param indent new indent
@@ -1569,6 +1591,8 @@ public void setFont (Font font) {
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
  * 
+ * @see #setWrapIndent(int)
+ * 
  * @since 3.2
  */
 public void setIndent (int indent) {
@@ -1621,7 +1645,7 @@ public void setOrientation (int orientation) {
 
 /**
  * Sets the offsets of the receiver's text segments. Text segments are used to
- * override the default behaviour of the bidirectional algorithm.
+ * override the default behavior of the bidirectional algorithm.
  * Bidirectional reordering can happen within a text segment but not 
  * between two adjacent segments.
  * <p>
@@ -1630,12 +1654,18 @@ public void setOrientation (int orientation) {
  * always be zero and the last one should always be equals to length of
  * the text.
  * </p>
+ * <p>
+ * When segments characters are set, the segments are the offsets where
+ * the characters are inserted in the text.
+ * <p> 
  * 
  * @param segments the text segments offset
  * 
  * @exception SWTException <ul>
  *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
  * </ul>
+ * 
+ * @see #setSegmentsChars(char[])
  */
 public void setSegments(int[] segments) {
 	checkLayout();
@@ -1653,6 +1683,23 @@ public void setSegments(int[] segments) {
 	this.segments = segments;
 }
 
+/**
+ * Sets the characters to be used in the segments boundaries. The segments 
+ * are set by calling <code>setSegments(int[])</code>. The application can
+ * use this API to insert Unicode Control Characters in the text to control
+ * the display of the text and bidi reordering. The characters are not 
+ * accessible by any other API in <code>TextLayout</code>.
+ * 
+ * @param segmentsChars the segments characters 
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setSegments(int[])
+ * 
+ * @since 3.6
+ */
 public void setSegmentsChars(char[] segmentsChars) {
 	checkLayout();
 	if (this.segmentsChars == null && segmentsChars == null) return;
@@ -1854,6 +1901,20 @@ public void setWidth (int width) {
 	this.wrapWidth = width;
 }
 
+/**
+ * Sets the wrap indent of the receiver. This indent is applied to all lines
+ * in the paragraph except the first line.  
+ *
+ * @param wrapIndent new wrap indent
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ * 
+ * @see #setIndent(int)
+ * 
+ * @since 3.6
+ */
 public void setWrapIndent (int wrapIndent) {
 	checkLayout();
 	if (wrapIndent < 0) return;	
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Transform.java
index 2649deb..820eda4 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Transform.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/graphics/Transform.java	
@@ -217,7 +217,7 @@ public void invert() {
  * <p>
  * This method gets the dispose state for the Transform.
  * When a Transform has been disposed, it is an error to
- * invoke any other method using the Transform.
+ * invoke any other method (except {@link #dispose()}) using the Transform.
  *
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Button.java
index 99237de..67c04ac 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Button.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Button.java	
@@ -102,6 +102,12 @@ public Button (Composite parent, int style) {
  * <code>widgetSelected</code> is called when the control is selected by the user.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Canvas.java
index 43a2698..952705e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Canvas.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Canvas.java	
@@ -216,7 +216,7 @@ public void drawBackground (GC gc, int x, int y, int width, int height) {
  * the source area to the destination and then causing the area
  * of the source which is not covered by the destination to
  * be repainted. Children that intersect the rectangle are
- * optionally moved during the operation. In addition, outstanding
+ * optionally moved during the operation. In addition, all outstanding
  * paint events are flushed before the source area is copied to
  * ensure that the contents of the canvas are drawn correctly.
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Combo.java
index 796bce5..2c07ac1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Combo.java	
@@ -41,7 +41,7 @@ import org.eclipse.swt.internal.wpf.OS;
  * <dt><b>Styles:</b></dt>
  * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Selection, Verify</dd>
+ * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified.
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Composite.java
index 5f3999e..cd63a46 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Composite.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Composite.java	
@@ -752,6 +752,64 @@ public void layout (Control [] changed) {
 	layout (changed, SWT.NONE);
 }
 
+/**
+ * Forces a lay out (that is, sets the size and location) of all widgets that 
+ * are in the parent hierarchy of the changed control up to and including the 
+ * receiver. 
+ * <p>
+ * The parameter <code>flags</code> may be a combination of:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be laid out</dd>
+ * <dt><b>SWT.CHANGED</b></dt>
+ * <dd>the layout must flush its caches</dd>
+ * <dt><b>SWT.DEFER</b></dt>
+ * <dd>layout will be deferred</dd>
+ * </dl>
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is specified, the flags <code>SWT.ALL</code>
+ * and <code>SWT.CHANGED</code> have no effect. In this case, the layouts in the 
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors.  The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ * </p>
+ * <p>
+ * When the <code>changed</code> array is not specified, the flag <code>SWT.ALL</code>
+ * indicates that the whole widget tree should be laid out. And the flag
+ * <code>SWT.CHANGED</code> indicates that the layouts should flush any cached
+ * information for all controls that are laid out. 
+ * </p>
+ * <p>
+ * The <code>SWT.DEFER</code> flag always causes the layout to be deferred by
+ * calling <code>Composite.setLayoutDeferred(true)</code> and scheduling a call
+ * to <code>Composite.setLayoutDeferred(false)</code>, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call <code>Composite.setLayoutDeferred(boolean)</code>.
+ * </p>
+ * <p>
+ * Note: Layout is different from painting. If a child is
+ * moved or resized such that an area in the parent is
+ * exposed, then the parent will paint. If no child is
+ * affected, the parent will not paint.
+ * </p>
+ * 
+ * @param changed a control that has had a state change which requires a recalculation of its size
+ * @param flags the flags specifying how the layout should happen
+ * 
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_ARGUMENT - if any of the controls in changed is null or has been disposed</li> 
+ *    <li>ERROR_INVALID_PARENT - if any control in changed is not in the widget tree of the receiver</li>
+ * </ul>
+ * @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>
+ *
+ * @since 3.6
+ */
 public void layout (Control [] changed, int flags) {
 	checkWidget ();
 	if (changed != null) {
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Control.java
index cc30af6..f84cf79 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Control.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Control.java	
@@ -28,7 +28,8 @@ import org.eclipse.swt.effects.*;
  * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
  * <dt><b>Events:</b>
  * <dd>DragDetect, FocusIn, FocusOut, Help, KeyDown, KeyUp, MenuDetect, MouseDoubleClick, MouseDown, MouseEnter,
- *     MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize, Traverse</dd>
+ *     MouseExit, MouseHover, MouseUp, MouseMove, MouseWheel, MouseHorizontalWheel, MouseVerticalWheel, Move,
+ *     Paint, Resize, Traverse</dd>
  * </dl>
  * </p><p>
  * Only one of LEFT_TO_RIGHT or RIGHT_TO_LEFT may be specified.
@@ -674,7 +675,7 @@ void destroyWidget () {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -716,7 +717,7 @@ public boolean dragDetect (Event event) {
  * @return <code>true</code> if the gesture occurred, and <code>false</code> otherwise.
  *
  * @exception IllegalArgumentException <ul>
- *   <li>ERROR_NULL_ARGUMENT when the event is null</li>
+ *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
  * </ul>
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1122,6 +1123,11 @@ public Menu getMenu () {
  * 
  * @return the receiver's monitor
  * 
+ * @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>
+ * 
  * @since 3.0
  */
 public Monitor getMonitor () {
@@ -3426,7 +3432,7 @@ boolean translateTraversal (int e) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3464,7 +3470,7 @@ public boolean traverse (int traversal, Event event) {
  * this from <code>event</code>
  * @param event the KeyDown event
  * 
- * @return true if the traversal succeeded
+ * @return <code>true</code> if the traversal succeeded
  *
  * @exception IllegalArgumentException <ul>
  *   <li>ERROR_NULL_ARGUMENT if the event is null</li>
@@ -3612,7 +3618,8 @@ boolean traverse (Event event) {
  * traversal action. The argument should be one of the constants:
  * <code>SWT.TRAVERSE_ESCAPE</code>, <code>SWT.TRAVERSE_RETURN</code>, 
  * <code>SWT.TRAVERSE_TAB_NEXT</code>, <code>SWT.TRAVERSE_TAB_PREVIOUS</code>, 
- * <code>SWT.TRAVERSE_ARROW_NEXT</code> and <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>.
+ * <code>SWT.TRAVERSE_ARROW_NEXT</code>, <code>SWT.TRAVERSE_ARROW_PREVIOUS</code>,
+ * <code>SWT.TRAVERSE_PAGE_NEXT</code> and <code>SWT.TRAVERSE_PAGE_PREVIOUS</code>.
  *
  * @param traversal the type of traversal
  * @return true if the traversal succeeded
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Decorations.java
index 8f002bf..bd31a07 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Decorations.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Decorations.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Display.java
index 23d1b8e..3b70638 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Display.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Display.java	
@@ -78,7 +78,7 @@ import org.eclipse.swt.graphics.*;
  * <dt><b>Styles:</b></dt>
  * <dd>(none)</dd>
  * <dt><b>Events:</b></dt>
- * <dd>Close, Dispose, Settings</dd>
+ * <dd>Close, Dispose, OpenDocument, Settings, Skin</dd>
  * </dl>
  * <p>
  * IMPORTANT: This class is <em>not</em> intended to be subclassed.
@@ -1643,6 +1643,18 @@ public Image getSystemImage (int id) {
 	return null;
 }
 
+/**
+ * Returns the single instance of the system taskBar or null
+ * when there is no system taskBar available for the platform.
+ *
+ * @return the system taskBar or <code>null</code>
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
+ * </ul>
+ *
+ * @since 3.6
+ */
 public TaskBar getSystemTaskBar () {
 	checkDevice ();
 	return null;
@@ -2822,10 +2834,16 @@ public void setData (Object data) {
 }
 
 /**
- * On platforms which support it, sets the application name
- * to be the argument. On Motif, for example, this can be used
- * to set the name used for resource lookup.  Specifying
- * <code>null</code> for the name clears it.
+ * Sets the application name to the argument.
+ * <p>
+ * The application name can be used in several ways,
+ * depending on the platform and tools being used.
+ * On Motif, for example, this can be used to set
+ * the name used for resource lookup. Accessibility
+ * tools may also ask for the application name.
+ * </p><p>
+ * Specifying <code>null</code> for the name clears it.
+ * </p>
  *
  * @param name the new app name or <code>null</code>
  */
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Link.java
index 4a6895c..60aad80 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Link.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Link.java	
@@ -376,6 +376,18 @@ void setForegroundBrush (int brush) {
  * include the mnemonic character and line delimiters. The only delimiter
  * the HREF attribute supports is the quotation mark (").
  * </p>
+ * <p>
+ * Mnemonics are indicated by an '&amp;' that causes the next
+ * character to be the mnemonic. The receiver can have a    
+ * mnemonic in the text preceding each link. When the user presses a
+ * key sequence that matches the mnemonic, focus is assigned
+ * to the link that follows the text. Mnemonics in links and in
+ * the trailing text are ignored. On most platforms,
+ * the mnemonic appears underlined but may be emphasised in a
+ * platform specific manner.  The mnemonic indicator character
+ * '&amp;' can be escaped by doubling it in the string, causing
+ * a single '&amp;' to be displayed.
+ * </p> 
  * 
  * @param string the new text
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/MenuItem.java
index bd7a4e0..a533ba9 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/MenuItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/MenuItem.java	
@@ -182,7 +182,13 @@ public void addHelpListener (HelpListener listener) {
  * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
- *
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
+ * 
  * @param listener the listener which should be notified when the menu item is selected by the user
  *
  * @exception IllegalArgumentException <ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ScrollBar.java
index c023abe..cd9f021 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ScrollBar.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ScrollBar.java	
@@ -322,8 +322,7 @@ public Point getSize () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -339,6 +338,19 @@ public int getThumb () {
 	return (int) OS.ScrollBar_ViewportSize (handle);
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb relative to its parent.
+ * 
+ * @return the thumb bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbBounds () {
 	checkWidget();
 	int track = OS.ScrollBar_Track(handle);
@@ -355,6 +367,20 @@ public Rectangle getThumbBounds () {
 	return rect;
 }
 
+/**
+ * Returns a rectangle describing the size and location of the
+ * receiver's thumb track relative to its parent. This rectangle
+ * comprises the areas 2, 3, and 4 as described in {@link ScrollBar}.
+ * 
+ * @return the thumb track bounds, relative to the {@link #getParent() parent}
+ *
+ * @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>
+ * 
+ * @since 3.6
+ */
 public Rectangle getThumbTrackBounds () {
 	checkWidget();
 	int track = OS.ScrollBar_Track(handle);
@@ -624,10 +650,13 @@ public void setSelection (int selection) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Shell.java
index c52dd5a..ba159fe 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Shell.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Shell.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Slider.java
index c806643..2e59ae1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Slider.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Slider.java	
@@ -255,8 +255,7 @@ public int getSelection () {
 }
 
 /**
- * Returns the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.
+ * Returns the receiver's thumb value.
  *
  * @return the thumb value
  *
@@ -429,10 +428,13 @@ public void setSelection (int value) {
 }
 
 /**
- * Sets the size of the receiver's thumb relative to the
- * difference between its maximum and minimum values.  This new
- * value will be ignored if it is less than one, and will be
+ * Sets the thumb value. The thumb value should be used to represent 
+ * the size of the visual portion of the current range. This value is
+ * usually the same as the page increment value.
+ * <p>
+ * This new value will be ignored if it is less than one, and will be 
  * clamped if it exceeds the receiver's current range.
+ * </p>
  *
  * @param value the new thumb value, which must be at least one and not
  * larger than the size of the current range
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Spinner.java
index 9368590..e91e0ce 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Spinner.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Spinner.java	
@@ -765,11 +765,11 @@ public void setIncrement (int value) {
 
 /**
  * Sets the maximum value that the receiver will allow.  This new
- * value will be ignored if it is not greater than the receiver's current
+ * value will be ignored if it is less than the receiver's current
  * minimum value.  If the new maximum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new maximum, which must be greater than the current minimum
+ * @param value the new maximum, which must be greater than or equal to the current minimum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -785,11 +785,11 @@ public void setMaximum (int value) {
 
 /**
  * Sets the minimum value that the receiver will allow.  This new
- * value will be ignored if it is not less than the receiver's
+ * value will be ignored if it is greater than the receiver's
  * current maximum value.  If the new minimum is applied then the receiver's
  * selection value will be adjusted if necessary to fall within its new range.
  *
- * @param value the new minimum, which must be less than the current maximum
+ * @param value the new minimum, which must be less than or equal to the current maximum
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TableItem.java
index 6e4946d..1575154 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TableItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TableItem.java	
@@ -333,10 +333,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Text.java
index b5295c1..322862c 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Text.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Text.java	
@@ -31,7 +31,7 @@ import org.eclipse.swt.events.*;
  * <dt><b>Styles:</b></dt>
  * <dd>CENTER, ICON_CANCEL, ICON_SEARCH, LEFT, MULTI, PASSWORD, SEARCH, SINGLE, RIGHT, READ_ONLY, WRAP</dd>
  * <dt><b>Events:</b></dt>
- * <dd>DefaultSelection, Modify, Verify</dd>
+ * <dd>DefaultSelection, Modify, Verify, OrientationChange</dd>
  * </dl>
  * <p>
  * Note: Only one of the styles MULTI and SINGLE may be specified,
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ToolItem.java
index 5dda1d3..203dba1 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ToolItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/ToolItem.java	
@@ -136,6 +136,12 @@ public ToolItem (ToolBar parent, int style, int index) {
  * the event object detail field contains the value <code>SWT.ARROW</code>.
  * <code>widgetDefaultSelected</code> is not called.
  * </p>
+ * <p>
+ * When the <code>SWT.RADIO</code> style bit is set, the <code>widgetSelected</code> method is
+ * also called when the receiver loses selection because another item in the same radio group 
+ * was selected by the user. During <code>widgetSelected</code> the application can use
+ * <code>getSelection()</code> to determine the current selected state of the receiver.
+ * </p>
  *
  * @param listener the listener which should be notified when the control is selected by the user,
  *
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TreeItem.java
index 24e2c25..0540cc5 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TreeItem.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/TreeItem.java	
@@ -575,10 +575,10 @@ public Color getBackground (int index) {
 }
 
 /**
- * Returns a rectangle describing the receiver's size and location
- * relative to its parent.
+ * Returns a rectangle describing the size and location of the receiver's
+ * text relative to its parent.
  *
- * @return the receiver's bounding rectangle
+ * @return the bounding rectangle of the receiver's text
  *
  * @exception SWTException <ul>
  *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
@@ -1305,8 +1305,6 @@ public void setFont (int index, Font font) {
  *
  * @param color the new color (or null)
  *
- * @since 2.0
- * 
  * @exception IllegalArgumentException <ul>
  *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
  * </ul>
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Widget.java
index c016e42..41a636e 100644
--- a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Widget.java	
+++ b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/wpf/org/eclipse/swt/widgets/Widget.java	
@@ -429,6 +429,7 @@ void destroyWidget () {
  * <code>true</code> when sent the message <code>isDisposed()</code>.
  * Any internal connections between the widgets in the tree will
  * have been removed to facilitate garbage collection.
+ * This method does nothing if the widget is already disposed.
  * <p>
  * NOTE: This method is not called recursively on the descendants
  * of the receiver. This means that, widget implementers can not
@@ -732,7 +733,7 @@ boolean hooks (int eventType) {
  * <p>
  * This method gets the dispose state for the widget.
  * When a widget has been disposed, it is an error to
- * invoke any other method using the widget.
+ * invoke any other method (except {@link #dispose()}) using the widget.
  * </p>
  *
  * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise
@@ -1008,8 +1009,31 @@ protected void removeListener (int eventType, SWTEventListener listener) {
 }
 
 /**
+ * Marks the widget to be skinned. 
+ * <p>
+ * The skin event is sent to the receiver's display when appropriate (usually before the next event
+ * is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
+ * id or class changes. The skin id and/or class can be changed by calling <code>Display.setData(String, Object)</code> 
+ * with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it 
+ * will not be sent again unless <code>reskin(int)</code> is called on the widget or on an ancestor 
+ * while specifying the <code>SWT.ALL</code> flag.  
+ * </p>
+ * <p>
+ * The parameter <code>flags</code> may be either:
+ * <dl>
+ * <dt><b>SWT.ALL</b></dt>
+ * <dd>all children in the receiver's widget tree should be skinned</dd>
+ * <dt><b>SWT.NONE</b></dt>
+ * <dd>only the receiver should be skinned</dd>
+ * </dl>
+ * </p>
+ * @param flags the flags specifying how to reskin
  * 
- * @param flags
+ * @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>
  * @since 3.6
  */
 public void reskin (int flags) {
diff --git a/eclipse/plugins/org.eclipse.swt/buildFragment.xml b/eclipse/plugins/org.eclipse.swt/buildFragment.xml
index 425770a..bf8a20a 100644
--- a/eclipse/plugins/org.eclipse.swt/buildFragment.xml
+++ b/eclipse/plugins/org.eclipse.swt/buildFragment.xml
@@ -1,4 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
+    Copyright (c) 2009, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+
 <project name="org.eclipse.swt.fragment" default="" basedir=".">
 
 	<target name="init" depends="properties">
diff --git a/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html b/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html
index b972bc8..2c2bd4b 100755
--- a/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html
+++ b/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html
@@ -11,6 +11,108 @@
 Eclipse Platform Build Notes<br>
 SWT</h1>
 
+<h2>SWT Build 3650b - Thursday June 03, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-31+21%3A36%3A12+%2B0000;chfieldto=2010-06-02+16%3A14%3A22+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3650a - Tuesday June 01, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-26+21%3A15%3A32+%2B0000;chfieldto=2010-05-31+21%3A32%3A10+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3650 - Thursday May 27, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-25+20%3A28%3A14+%2B0000;chfieldto=2010-05-26+21%3A11%3A33+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3649a - Wednesday May 26, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-20+20%3A34%3A55+%2B0000;chfieldto=2010-05-25+20%3A24%3A14+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3649 - Friday May 21, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-19+22%3A10%3A42+%2B0000;chfieldto=2010-05-20+20%3A30%3A58+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3648b - Thursday May 20, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-18+22%3A13%3A43+%2B0000;chfieldto=2010-05-19+22%3A06%3A48+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3648a - Wednesday May 19, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-17+21%3A14%3A28+%2B0000;chfieldto=2010-05-18+22%3A09%3A50+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3648 - Tuesday May 18, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-13+17%3A06%3A15+%2B0000;chfieldto=2010-05-17+21%3A10%3A36+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3647a - Friday May 14, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-12+22%3A43%3A25+%2B0000;chfieldto=2010-05-13+17%3A02%3A24+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3647 - Thursday May 13, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-10+22%3A24%3A22+%2B0000;chfieldto=2010-05-12+22%3A39%3A37+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3646a - Tuesday May 11, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-07+21%3A57%3A20+%2B0000;chfieldto=2010-05-10+22%3A20%3A34+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3646 - Saturday May 08, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-05-04+02%3A09%3A27+%2B0000;chfieldto=2010-05-07+21%3A53%3A32+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3645 - Tuesday May 04, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-04-29+15%3A15%3A36+%2B0000;chfieldto=2010-05-04+02%3A05%3A42+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3644b - Friday April 30, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-04-28+21%3A48%3A11+%2B0000;chfieldto=2010-04-29+15%3A11%3A50+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3644a - Thursday April 29, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-04-27+22%3A45%3A53+%2B0000;chfieldto=2010-04-28+21%3A44%3A30+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3644 - Wednesday April 28, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-04-22+21%3A55%3A32+%2B0000;chfieldto=2010-04-27+22%3A42%3A14+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
+<h2>SWT Build 3643 - Friday April 23, 2010</h2>
+
+<blockquote>
+<a href=https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=;bug_file_loc_type=allwordssubstr;bug_id=;bugidtype=include;chfield=resolution;target_milestone=;chfieldfrom=2010-04-19+22%3A37%3A12+%2B0000;chfieldto=2010-04-22+21%3A51%3A53+%2B0000;chfieldvalue=FIXED;classification=Eclipse;component=SWT;email1=;email2=;emailtype1=substring;emailtype2=substring;field-1-0-0=classification;field-1-1-0=product;field-1-2-0=component;field0-0-0=noop;keywords=;keywords_type=allwords;long_desc=;long_desc_type=allwordssubstr;product=Platform;query_format=advanced;remaction=;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type0-0-0=noop;value-1-0-0=Eclipse;value-1-1-0=Platform;value-1-2-0=SWT;value0-0-0=;votes=;query_based_on=>Bugs fixed</a>
+</blockquote>
+
 <h2>SWT Build 3642 - Tuesday April 20, 2010</h2>
 
 <blockquote>
diff --git a/eclipse/plugins/org.eclipse.swt/tasks/build.xml b/eclipse/plugins/org.eclipse.swt/tasks/build.xml
index f527648..6220f1a 100644
--- a/eclipse/plugins/org.eclipse.swt/tasks/build.xml
+++ b/eclipse/plugins/org.eclipse.swt/tasks/build.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
-    Copyright (c) 2009 IBM Corporation and others.
+    Copyright (c) 2009, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
@@ -30,7 +30,7 @@
 	 To void clean after build define a property named "clean" to empty ("").
 	 To run only clean define a property named "targets" to empty ("").
 	 
--->
+ -->
 
 <project name="swtbuild" basedir="../..">
 	<property name="tasks" value="org.eclipse.swt/tasks"/>
@@ -66,12 +66,18 @@
 
 	<target name="build_win32_x86" depends="init_build">
 		<property name="clean" value="clean"/>
-		<property name="targets" value="x86 install"/>
+		<property name="targets" value="x86 all install"/>
 		<exec dir="${basedir}/${builddir}" executable="${basedir}/${builddir}/build.bat" failonerror="true">
 			<env key="JAVA_HOME" value=""/>
 			<arg line="${targets}"/>
 			<arg line="${clean}"/>
 		</exec>
+		<exec dir="${basedir}/${builddir}" executable="${basedir}/${builddir}/build.bat" failonerror="true">
+			<env key="JAVA_HOME" value=""/>
+			<env key="BUILD_XULRUNNER" value="true"/>
+			<arg line="x86 make_xulrunner install"/>
+			<arg line="${clean}"/>
+		</exec>
 		<antcall target="refresh_fragment">
 			<param name="fragment" value="org.eclipse.swt.win32.win32.x86"/>
 		</antcall>
@@ -79,7 +85,7 @@
 
 	<target name="build_win32_x86_64" depends="init_build">
 		<property name="clean" value="clean"/>
-		<property name="targets" value="x86_64 install"/>
+		<property name="targets" value="x86_64 all install"/>
 		<exec dir="${basedir}/${builddir}" executable="${basedir}/${builddir}/build.bat" failonerror="true">
 			<env key="JAVA_HOME" value=""/>
 			<arg line="${targets}"/>
@@ -92,7 +98,7 @@
 
 	<target name="build_win32_ia64" depends="init_build">
 		<property name="clean" value="clean"/>
-		<property name="targets" value="ia64 install"/>
+		<property name="targets" value="ia64 all install"/>
 		<exec dir="${basedir}/${builddir}" executable="${basedir}/${builddir}/build.bat" failonerror="true">
 			<env key="JAVA_HOME" value=""/>
 			<arg line="${targets}"/>
@@ -261,25 +267,41 @@
 	</target>
 	
 	<target name="build_gtk_linux_s390" depends="init_build">
-		<echo>gtk_linux_s390 is not being built</echo>
+		<property name="clean" value="clean"/>
+		<property name="targets" value="make_mozilla make_xulrunner make_xpcominit install"/>
+		<exec dir="${basedir}/${builddir}" executable="sh" failonerror="true">
+			<arg value="build.sh"/>
+			<env key="JAVA_HOME" value="/home/swtbuild/java5/ibm-java2-s390-50"/>
+			<env key="MODEL" value="s390"/>
+			<env key="MOZILLA_SDK" value="/home/swtbuild/mozilla-1.7.13/mozilla/dist/sdk"/>
+			<env key="MOZILLA_INCLUDES" value="-include ${MOZILLA_SDK}/include/mozilla-config.h -I${MOZILLA_SDK}/../include/xpcom -I${MOZILLA_SDK}/../include/nspr -I${MOZILLA_SDK}/../include/embed_base -I${MOZILLA_SDK}/../include/embedstring -I${MOZILLA_SDK}/../include/string"/>
+			<env key="MOZILLA_LIBS" value="-L${MOZILLA_SDK}/lib -L${MOZILLA_SDK}/bin -lxpcom -lnspr4 -lplds4 -lplc4"/>
+			<env key="XULRUNNER_SDK" value="/home/swtbuild/xulrunner-1.8.0.1/mozilla/dist/sdk"/>
+			<env key="XULRUNNER_INCLUDES" value="-include ${XULRUNNER_SDK}/include/mozilla-config.h -I${XULRUNNER_SDK}/include"/>
+			<env key="XULRUNNER_LIBS" value="-L${XULRUNNER_SDK}/lib -lxpcomglue"/>
+			<env key="PKG_CONFIG_PATH" value="/usr/local/lib/pkgconfig"/>
+			<arg line="${targets}"/>
+			<arg line="${clean}"/>
+		</exec>
+		<antcall target="refresh_fragment">
+			<param name="fragment" value="org.eclipse.swt.gtk.linux.s390"/>
+		</antcall>
 	</target>
 	
 	<target name="build_gtk_linux_s390x" depends="init_build">
 		<property name="clean" value="clean"/>
-		<property name="targets" value="install"/>
+		<property name="targets" value="make_mozilla make_xulrunner make_xpcominit install"/>
 		<exec dir="${basedir}/${builddir}" executable="sh" failonerror="true">
 			<arg value="build.sh"/>
 			<env key="JAVA_HOME" value="/home/swtbuild/java5/ibm-java2-s390x-50"/>
 			<env key="MODEL" value="s390x"/>
-			<!--
-			<env key="MOZILLA_SDK" value="/bluebird/teamswt/swt-builddir/mozilla/1.4/linux_gtk2/mozilla/dist/sdk"/>
-			<env key="XULRUNNER_SDK" value="/bluebird/teamswt/swt-builddir/geckoSDK/1.8.0.4/gecko-sdk"/>
-			<env key="MOZILLA_INCLUDES" value="-include ${MOZILLA_SDK}/mozilla-config.h -I${MOZILLA_SDK}/../include/xpcom -I${MOZILLA_SDK}/../include/nspr -I${MOZILLA_SDK}/../include/embed_base -I${MOZILLA_SDK}/../include/embedstring -I${MOZILLA_SDK}/../include/string"/>
-			<env key="MOZILLA_LIBS" value="${MOZILLA_SDK}/../lib/libembedstring.a -L${MOZILLA_SDK}/../bin -L${MOZILLA_SDK}/../lib/ -lxpcom -lnspr4 -lplds4 -lplc4"/>
+			<env key="MOZILLA_SDK" value="/home/swtbuild/mozilla1.7.13/mozilla/dist/sdk"/>
+			<env key="MOZILLA_INCLUDES" value="-include ${MOZILLA_SDK}/include/mozilla-config.h -I${MOZILLA_SDK}/../include/xpcom -I${MOZILLA_SDK}/../include/nspr -I${MOZILLA_SDK}/../include/embed_base -I${MOZILLA_SDK}/../include/embedstring -I${MOZILLA_SDK}/../include/string"/>
+			<env key="MOZILLA_LIBS" value="-L${MOZILLA_SDK}/lib -L${MOZILLA_SDK}/bin -lxpcom -lnspr4 -lplds4 -lplc4"/>
+			<env key="XULRUNNER_SDK" value="/home/swtbuild/xulrunner-1.8.0.1/mozilla/dist/sdk"/>
 			<env key="XULRUNNER_INCLUDES" value="-include ${XULRUNNER_SDK}/include/mozilla-config.h -I${XULRUNNER_SDK}/include"/>
 			<env key="XULRUNNER_LIBS" value="-L${XULRUNNER_SDK}/lib -lxpcomglue"/>
-			<env key="PKG_CONFIG_PATH" value="/bluebird/teamswt/swt-builddir/cairo_1.0.2/linux_x86/lib/pkgconfig"/>
-			-->
+			<env key="PKG_CONFIG_PATH" value="/usr/local/cairo64/lib/pkgconfig"/>
 			<arg line="${targets}"/>
 			<arg line="${clean}"/>
 		</exec>
@@ -452,7 +474,7 @@
 			<param name="fragment" value="org.eclipse.swt.gtk.linux.x86"/>
 		</antcall>
 		<antcall target="check_fragment_libraries">
-			<param name="library_count" value="12"/>
+			<param name="library_count" value="11"/>
 			<param name="fragment" value="org.eclipse.swt.gtk.linux.x86_64"/>
 		</antcall>
 		<antcall target="check_fragment_libraries">
@@ -465,6 +487,14 @@
 		</antcall>
 		<antcall target="check_fragment_libraries">
 			<param name="library_count" value="10"/>
+			<param name="fragment" value="org.eclipse.swt.gtk.linux.s390"/>
+		</antcall>
+		<antcall target="check_fragment_libraries">
+			<param name="library_count" value="10"/>
+			<param name="fragment" value="org.eclipse.swt.gtk.linux.s390x"/>
+		</antcall>
+		<antcall target="check_fragment_libraries">
+			<param name="library_count" value="9"/>
 			<param name="fragment" value="org.eclipse.swt.motif.linux.x86"/>
 		</antcall>
 		<antcall target="check_fragment_libraries">
@@ -483,8 +513,8 @@
 	
 	<target name="check_fragment_libraries" depends="get_version">
 		<property name="checkdir" value="~/build/check_libraries"/>
-		<property name="library_count" value="112"/>
-		<property name="fragment" value="org.eclipse.swt.win32.win32.x86 org.eclipse.swt.win32.win32.x86_64 org.eclipse.swt.win32.win32.ia64 org.eclipse.swt.win32.wce_ppc.arm org.eclipse.swt.wpf.win32.x86 org.eclipse.swt.photon.qnx.x86 org.eclipse.swt.carbon.macosx org.eclipse.swt.cocoa.macosx org.eclipse.swt.cocoa.macosx.x86_64 org.eclipse.swt.gtk.linux.ppc org.eclipse.swt.gtk.linux.ppc64 org.eclipse.swt.gtk.linux.x86 org.eclipse.swt.gtk.linux.x86_64 org.eclipse.swt.gtk.solaris.sparc org.eclipse.swt.gtk.solaris.x86 org.eclipse.swt.motif.linux.x86 org.eclipse.swt.motif.aix.ppc org.eclipse.swt.motif.hpux.ia64_32 org.eclipse.swt.motif.solaris.sparc"/>
+		<property name="library_count" value="130"/>
+		<property name="fragment" value="org.eclipse.swt.win32.win32.x86 org.eclipse.swt.win32.win32.x86_64 org.eclipse.swt.win32.win32.ia64 org.eclipse.swt.win32.wce_ppc.arm org.eclipse.swt.wpf.win32.x86 org.eclipse.swt.photon.qnx.x86 org.eclipse.swt.carbon.macosx org.eclipse.swt.cocoa.macosx org.eclipse.swt.cocoa.macosx.x86_64 org.eclipse.swt.gtk.linux.ppc org.eclipse.swt.gtk.linux.ppc64 org.eclipse.swt.gtk.linux.x86 org.eclipse.swt.gtk.linux.x86_64 org.eclipse.swt.gtk.linux.s390 org.eclipse.swt.gtk.linux.s390x org.eclipse.swt.gtk.solaris.sparc org.eclipse.swt.gtk.solaris.x86 org.eclipse.swt.motif.linux.x86 org.eclipse.swt.motif.aix.ppc org.eclipse.swt.motif.hpux.ia64_32 org.eclipse.swt.motif.solaris.sparc"/>
 		<sshexec host="${m_linux_x86}" 
 			username="swtbuild" 
 			keyfile="${keyfile}" 
@@ -550,17 +580,20 @@
 			keyfile="${keyfile}" 
 			trust="true"
 			command="hostname"/>
-		<sshexec host="${m_linux_s390}" 
+		</parallel>
+	</target>
+
+	<target name="check_s390_machines">
+		<sshexec host="${m_linux_x86}" 
 			username="swtbuild" 
-			keyfile="${keyfile}" 
+			keyfile="${keyfile}"
 			trust="true"
-			command="hostname"/>
+			command="hostname; ping -c 1 ${m_linux_s390};"/>
 		<sshexec host="${m_linux_x86}" 
 			username="swtbuild" 
 			keyfile="${keyfile}" 
 			trust="true"
-			command="hostname; ping -c 1 ${m_linux_s390};"/>
-		</parallel>
+			command="hostname; ping -c 1 ${m_linux_s390x};"/>
 	</target>
 	
 	<target name="check_compilation">
@@ -1004,7 +1037,7 @@
 		</copy>
 		<condition property="real_target" value="build_s390" else="${build_target}">
 			<or>
-				<!--equals arg1="${build_target}" arg2="build_gtk_linux_s390"/-->
+				<equals arg1="${build_target}" arg2="build_gtk_linux_s390"/>
 				<equals arg1="${build_target}" arg2="build_gtk_linux_s390x"/>
 			</or>
 		</condition>
@@ -1079,8 +1112,11 @@
 	<target name="build_s390">
 		<property name="zipname" value="${fragment}"/>		
 		<property name="remotetmpdir" value="~/build/${zipname}"/>
-		<property name="remotemachine" value="${m_linux_s390}"/>
-		<property name="s390_path" value="/home/swtbuild/ant/apache-ant-1.8.0RC1/bin:/home/swtbuild/java5/ibm-java2-s390x-50/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/swtbuild/bin"/>
+		<condition property="remotemachine" value="${m_linux_s390}" else="${m_linux_s390x}">
+			<or>
+				<equals arg1="${build_target}" arg2="build_gtk_linux_s390"/>
+			</or>
+		</condition>
 		<zip destfile="../${zipname}.zip" basedir=".." includes="${zipname}/**/*"/>
 		<exec executable="scp">
 		    <arg value="../${zipname}.zip"/>
@@ -1090,7 +1126,7 @@
 			username="swtbuild" 
 			keyfile="${keyfile}" 
 			trust="true"
- 			command="export PATH=${s390_path}; cd ~/build; rm -rf ${remotetmpdir}; unzip -qq ~/build/${zipname}.zip; rm ~/build/${zipname}.zip; cd ${remotetmpdir}/${tasks}; if ant -f build.xml ${build_target}; then cd ~/build; zip -q -r ${zipname}.zip ${zipname}; rm -rf ${remotetmpdir}; else cd; rm -rf ${remotetmpdir}; exit 1; fi"/>
+ 			command="echo $PATH; cd ~/build; rm -rf ${remotetmpdir}; unzip -qq ~/build/${zipname}.zip; rm ~/build/${zipname}.zip; cd ${remotetmpdir}/${tasks}; if ant -f build.xml ${build_target}; then cd ~/build; zip -q -r ${zipname}.zip ${zipname}; rm -rf ${remotetmpdir}; else cd; rm -rf ${remotetmpdir}; exit 1; fi"/>
 		<exec executable="scp">
 		    <arg value="swtbuild@${remotemachine}:~/build/${zipname}.zip"/>
 		    <arg value=".."/>
@@ -1218,10 +1254,14 @@
 	</target>
 	
 	<target name="gtk_linux_s390">
-		<antcall target="build_local">
+		<property name="thefragment" value="org.eclipse.swt.gtk.linux.s390"/>
+		<antcall target="build_ssh">
+			<param name="machine" value="${m_linux_x86}"/>
 			<param name="cp" value="${cp_gtk}"/>
-			<param name="fragment" value="org.eclipse.swt.gtk.linux.s390"/>
+			<param name="fragment" value="${thefragment}"/>
 			<param name="build_target" value="build_gtk_linux_s390"/>
+			<param name="pre_commands1" value="cp ~/build/fixed_tasks/* ~/build/${thefragment}/${tasks}; "/>
+			<param name="pre_commands" value="export JAVA_HOME=~/build/JRE/x32/jdk1.6.0_14; export PATH=${ant_home}/bin:$PATH; "/>
 		</antcall>
 	</target>
 
diff --git a/eclipse/plugins/org.eclipse.swt/tasks/properties.xml b/eclipse/plugins/org.eclipse.swt/tasks/properties.xml
index b759a06..d0c74de 100644
--- a/eclipse/plugins/org.eclipse.swt/tasks/properties.xml
+++ b/eclipse/plugins/org.eclipse.swt/tasks/properties.xml
@@ -1,3 +1,13 @@
+<!--
+    Copyright (c) 2009, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
 <project name="org.eclipse.swt.build.properties" basedir=".">
 	<!-- Machine names -->
 	<property name="m_linux_x86" value="na"/>
@@ -7,6 +17,7 @@
 	<property name="m_linux_ppc"  value="na"/>
 	<property name="m_linux_ppc64"  value="na"/>
 	<property name="m_linux_s390"  value="na"/>
+	<property name="m_linux_s390x"  value="na"/>
 	<property name="m_solaris_sparc"  value="na"/>
 	<property name="m_solaris_x86"  value="na"/>
 	<property name="m_aix"  value="na"/>
diff --git a/eclipse/plugins/org.eclipse.team.core/buildnotes_team.html b/eclipse/plugins/org.eclipse.team.core/buildnotes_team.html
index d96c95d..2420a4d 100644
--- a/eclipse/plugins/org.eclipse.team.core/buildnotes_team.html
+++ b/eclipse/plugins/org.eclipse.team.core/buildnotes_team.html
@@ -12,6 +12,59 @@
 <h1>Eclipse Platform Build Notes (3.5)<br>
 Team, Compare and CVS</h1>
 
+<p>Integration Build (May 27, 2010, 1:46 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312596">Bug 312596</a>. Sync view does not update error decorator of resources anymore (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 26, 2010, 1:50 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309430">Bug 309430</a>. DBCS3.6: CVS can not display DBCS correctly in "Apply Patch" dialog under UTF-8. (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 18, 2010, 11:55 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311850">Bug 311850</a>. org.eclipse.compare.structureCreators extension point definition specifies wrong interface (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 13, 2010, 12:26 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=305994">Bug 305994</a>. [Sync View][Apply Patch] Allow to apply patch via Paste in Synchronize view (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312641">Bug 312641</a>. Change label and icon informing about capped comparison results (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 11, 2010, 1:57 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=256396">Bug 256396</a>. Duplicated code in Team's compare actions (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311597">Bug 311597</a>. [History View] CVS should keep branch numbers (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311704">Bug 311704</a>. please tag these resources/team bundles so they include source references for the 3.6 release (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312217">Bug 312217</a>. Restore CompareRevisionAction#findReusableCompareEditor(CompareEditorInput , IWorkbenchPage) (FIXED)<br>
+  </p>
+
+<p>Integration Build (April 28, 2010, 4:52 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=294747">Bug 294747</a>. StringIndexOutOfBoundsException during synchronize operation (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306641">Bug 306641</a>. BIDI3.6_BDL: Compare - Dates are displayed corrupted in National Hebrew calendar format (FIXED)<br>
+  </p>
+
+<p>Integration Build (April 22, 2010, 10:37 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=267171">Bug 267171</a>. Compare editor on local file: 'Open' action should set selection (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=305993">Bug 305993</a>. [Sync View][Apply Patch] Add preference that allows Team > Apply Patch to show result in Synchronize view (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306314">Bug 306314</a>. Three-way merge wrongly detects conflict to adjoining (not overlapping) changes (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=307757">Bug 307757</a>. [compare][navigation] Quick Outline and hyperlinks should remove element filter (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309754">Bug 309754</a>. Compile errors in N20100419-2000 (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309793">Bug 309793</a>. Team UI should not require navigator.resources (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309921">Bug 309921</a>. [Sync View][Apply Patch] Move "Apply patch in Synchronize view" to Team preferences (FIXED)<br>
+  </p>
+
 <p>Integration Build (April 20, 2010, 11:19 a.m.)</p>
   <p>Problem reports updated</p>
   <p>
diff --git a/eclipse/plugins/org.eclipse.team.core/src/org/eclipse/team/core/Team.java b/eclipse/plugins/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
index f572c06..3fc8c34 100644
--- a/eclipse/plugins/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
+++ b/eclipse/plugins/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
index 00e651c..72bd6dd 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.cvs.core; singleton:=true
-Bundle-Version: 3.3.200.qualifier
+Bundle-Version: 3.3.300.qualifier
 Bundle-Activator: org.eclipse.team.internal.ccvs.core.CVSProviderPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java
index 8cc60f5..94588c0 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,8 +33,9 @@ public class CVSTag implements ITag {
 	public static final CVSTag BASE = new CVSTag("BASE", VERSION); //$NON-NLS-1$
 	
 	protected String name;
+	protected String branchNumber;
 	protected int type;
-	
+
 	private static final String DATE_TAG_NAME_FORMAT = "dd MMM yyyy HH:mm:ss Z";//$NON-NLS-1$
 	private static final SimpleDateFormat tagNameFormat = new SimpleDateFormat(DATE_TAG_NAME_FORMAT, Locale.US);
 	protected static synchronized String dateToTagName(Date date){
@@ -60,6 +61,13 @@ public class CVSTag implements ITag {
 		this.name = name;
 		this.type = type;
 	}
+
+	public CVSTag(String name, String branchNumber, int type) {		
+		this.name = name;
+		this.branchNumber = branchNumber;
+		this.type = type;
+	}
+
 	//Write a date in local date tag format
 	public CVSTag(Date date) {
 		this(dateToTagName(date), DATE);
@@ -79,6 +87,10 @@ public class CVSTag implements ITag {
 		return name;
 	}
 
+	public String getBranchNumber() {
+		return branchNumber;
+	}
+
 	public int getType() {
 		// TODO: getType() will not return accurate types for Tags retrieved from the local CVS Entries file.  See Bug: 36758
 		return type;
diff --git a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java
index b4063e8..0e84908 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -163,9 +163,10 @@ public class LogListener extends CommandOutputListener {
     			// get the author name
     			int endOfAuthorIndex = line.indexOf(';', endOfDateIndex + 1);
     			author = internAndCopyString(line.substring(endOfDateIndex + 11, endOfAuthorIndex));
-    
+
     			// get the file state (because this revision might be "dead")
-    			fileState = internAndCopyString(line.substring(endOfAuthorIndex + 10, line.indexOf(';', endOfAuthorIndex + 1)));
+    			int endOfStateIndex = line.indexOf(';', endOfAuthorIndex + 1) < 0 ? line.length() : line.indexOf(';', endOfAuthorIndex + 1);
+    			fileState = internAndCopyString(line.substring(endOfAuthorIndex + 10, endOfStateIndex));
     			comment = new StringBuffer();
     			state = COMMENT;
     			break;
@@ -197,8 +198,9 @@ public class LogListener extends CommandOutputListener {
     			
     			if (tagRevision.equals(revision) ||
     				revision.equals(BRANCH_REVISION)) {
+    				String branchNumber = version.getBranchNumber();
     				int type = version.isBranch() ? CVSTag.BRANCH : CVSTag.VERSION;
-    				thisRevisionTags.add(new CVSTag(tagName, type));
+    				thisRevisionTags.add(new CVSTag(tagName, branchNumber, type));
     				if (revision.equals(BRANCH_REVISION)){
     					//also record the tag revision
     					revisionVersions.add(tagRevision);
@@ -268,6 +270,7 @@ public class LogListener extends CommandOutputListener {
     private static class VersionInfo {
 		private final boolean isBranch;
 		private String tagRevision;
+		private String branchNumber;
 		private final String tagName;
 		
     	public VersionInfo(String version, String tagName) {
@@ -284,10 +287,11 @@ public class LogListener extends CommandOutputListener {
 						lastDot = lastDot - 2;
 					}
 					tagRevision = version.substring(0, lastDot);
+					branchNumber = version.substring(lastDot+1);
 				}
 			}
     	}
-    	
+
 		public String getTagName() {
 			return this.tagName;
 		}
@@ -320,5 +324,9 @@ public class LogListener extends CommandOutputListener {
         	if (tagName.charAt(lastDot - 1) == '0' && tagName.charAt(lastDot - 2) == '.') return true;
         	return false;
         }
+
+		public String getBranchNumber() {
+			return branchNumber;
+		}
     }
 }
diff --git a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java
index 142200b..06a3aec 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
index 75fa7c7..f5783c9 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.team.cvs.ssh2/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.cvs.ssh2; singleton:=true
-Bundle-Version: 3.2.200.qualifier
+Bundle-Version: 3.2.300.qualifier
 Bundle-Activator: org.eclipse.team.internal.ccvs.ssh2.CVSSSH2Plugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java b/eclipse/plugins/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
index 8cb47f7..59686b9 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.team.cvs.ui/META-INF/MANIFEST.MF
index 71debf5..2b4724a 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/META-INF/MANIFEST.MF
@@ -29,10 +29,9 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.3.0,4.0.0)";resolution:=op
  org.eclipse.team.ui;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.team.cvs.core;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.compare;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.ui.navigator.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.2.0,4.0.0)"
-Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
 Import-Package: com.ibm.icu.text,
  com.ibm.icu.util
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java
index 0c54be7..0ae12a1 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,12 +10,11 @@
  *******************************************************************************/
 package org.eclipse.team.internal.ccvs.ui;
 
-
 import org.eclipse.team.internal.ccvs.ui.repo.RepositoriesView;
 import org.eclipse.team.ui.history.IHistoryView;
 import org.eclipse.team.ui.synchronize.ISynchronizeView;
 import org.eclipse.ui.*;
-import org.eclipse.ui.navigator.resources.ProjectExplorer;
+
 
 public class CVSPerspective implements IPerspectiveFactory {
     
@@ -30,7 +29,7 @@ public class CVSPerspective implements IPerspectiveFactory {
 	}
 
 	/**
-	 * Defines the initial actions for a page.  
+	 * Defines the initial actions for a page.
 	 */
 	public void defineActions(IPageLayout layout) {
 
@@ -40,7 +39,7 @@ public class CVSPerspective implements IPerspectiveFactory {
 		layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file"); //$NON-NLS-1$
 
 		// Add "show views".
-		layout.addShowViewShortcut(ProjectExplorer.VIEW_ID);
+		layout.addShowViewShortcut(IPageLayout.ID_PROJECT_EXPLORER);
 		layout.addShowViewShortcut(IPageLayout.ID_OUTLINE);
 		layout.addShowViewShortcut(IPageLayout.ID_TASK_LIST);
 		layout.addShowViewShortcut(IHistoryView.VIEW_ID);
@@ -53,7 +52,7 @@ public class CVSPerspective implements IPerspectiveFactory {
 	}
 
 	/**
-	 * Defines the initial layout for a page.  
+	 * Defines the initial layout for a page.
 	 */
 	public void defineLayout(IPageLayout layout) {
 		String editorArea = layout.getEditorArea();
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java
index 1620ac2..23a6af9 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005 Maik Schreiber.
+ * Copyright (c) 2005, 2006 Maik Schreiber.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
index 7dd721c..881f2ff 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ApplyPatchAction.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ApplyPatchAction.java
index 88fb09b..cec2df0 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ApplyPatchAction.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ApplyPatchAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,7 +11,6 @@
 package org.eclipse.team.internal.ccvs.ui.mappings;
 
 import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.patch.ApplyPatchOperation;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.*;
@@ -20,6 +19,7 @@ import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.team.core.diff.*;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchOperation;
 import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
 
 public class ApplyPatchAction extends CVSModelProviderAction implements
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
index e9e1d80..66d3ef4 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ApplyPatchAction.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ApplyPatchAction.java
index e1582bc..80fea1f 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ApplyPatchAction.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ApplyPatchAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,7 +11,6 @@
 package org.eclipse.team.internal.ccvs.ui.subscriber;
 
 import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.patch.ApplyPatchOperation;
 import org.eclipse.compare.structuremergeviewer.IDiffElement;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
@@ -20,6 +19,7 @@ import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.internal.ui.synchronize.SynchronizeModelElement;
+import org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchOperation;
 import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
 import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
 
diff --git a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java
index bd264d4..9132fad 100644
--- a/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java
+++ b/eclipse/plugins/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/.options b/eclipse/plugins/org.eclipse.team.ui/.options
index c1e86f7..1128797 100644
--- a/eclipse/plugins/org.eclipse.team.ui/.options
+++ b/eclipse/plugins/org.eclipse.team.ui/.options
@@ -7,4 +7,7 @@ org.eclipse.team.ui/debug=false
 org.eclipse.team.ui/syncmodels=false
 
 # Shows history debugging information
-org.eclipse.team.ui/history=false
\ No newline at end of file
+org.eclipse.team.ui/history=false
+
+# Shows DnD related debugging information
+org.eclipse.team.ui/dnd=false
diff --git a/eclipse/plugins/org.eclipse.team.ui/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.team.ui/META-INF/MANIFEST.MF
index 45d93b6..e8ba30b 100644
--- a/eclipse/plugins/org.eclipse.team.ui/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.team.ui/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@ Export-Package: org.eclipse.team.internal.ui;x-friends:="org.eclipse.team.cvs.ss
  org.eclipse.team.internal.ui.registry;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
  org.eclipse.team.internal.ui.synchronize;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
  org.eclipse.team.internal.ui.synchronize.actions;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
- org.eclipse.team.internal.ui.synchronize.patch;x-internal:=true,
+ org.eclipse.team.internal.ui.synchronize.patch;x-friends:="org.eclipse.jdt.ui",
  org.eclipse.team.internal.ui.wizards;x-friends:="org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui",
  org.eclipse.team.ui,
  org.eclipse.team.ui.history,
@@ -30,9 +30,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.3.0,4.0.0)";resolution:=op
  org.eclipse.ui.forms;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.ui.navigator.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.3.0,4.0.0)"
-Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
 Import-Package: com.ibm.icu.text,
  com.ibm.icu.util
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/eclipse/plugins/org.eclipse.team.ui/plugin.properties b/eclipse/plugins/org.eclipse.team.ui/plugin.properties
index a174d76..0b8476b 100644
--- a/eclipse/plugins/org.eclipse.team.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.team.ui/plugin.properties
@@ -17,7 +17,7 @@ synchronizeParticipants=Synchronize Participants
 synchronizeWizards=Synchronize Wizards
 logicalViews=Logical Synchronize Views
 
-PreferenceKeywords.Team=team
+PreferenceKeywords.Team=team apply patch synchronize compare
 PreferenceKeywords.FileContent=team file content type
 PreferenceKeywords.ProjectSet=repository
 TeamPreferencePage.name=Team
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPreferenceIds.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPreferenceIds.java
index e3a9ff3..88e0873 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPreferenceIds.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPreferenceIds.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -53,7 +53,12 @@ public interface IPreferenceIds {
 	 * Preference to enable the import of a project set to be run in the background 
 	 */
 	public static final String RUN_IMPORT_IN_BACKGROUND= PREFIX + "run_import_in_background_"; //$NON-NLS-1$
-	
+
+	/*
+	 * Preference to enable synchronizing with a patch via Apply Patch action
+	 */
+	public static final String APPLY_PATCH_IN_SYNCHRONIZE_VIEW = PREFIX + "apply_patch_in_sychronize_view"; //$NON-NLS-1$
+
 	/*
 	 * Preference to manage the perspective used to synchronize.
 	 */
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
index cbca15c..4094518 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,12 +10,11 @@
  *******************************************************************************/
 package org.eclipse.team.internal.ui;
 
-
-
 import java.util.ResourceBundle;
 
 import org.eclipse.core.runtime.*;
 
+
 /**
  * Policy implements NLS convenience methods for the plugin and
  * makes progress monitor policy decisions
@@ -24,12 +23,13 @@ public class Policy {
 	//debug constants
 	public static boolean DEBUG_SYNC_MODELS = false;
 	public static boolean DEBUG_HISTORY = false;
+	public static boolean DEBUG_DND = false;
     
     private static String ACTION_BUNDLE = "org.eclipse.team.internal.ui.actions.actions"; //$NON-NLS-1$
     private static ResourceBundle actionBundle = null;
 
     /*
-     * Returns a resource bundle, creating one if it none is available. 
+     * Returns a resource bundle, creating one if it none is available.
      */
     public static ResourceBundle getActionBundle() {
         // thread safety
@@ -44,6 +44,7 @@ public class Policy {
 		if (TeamUIPlugin.getPlugin().isDebugging()) {
 			DEBUG_SYNC_MODELS = "true".equalsIgnoreCase(Platform.getDebugOption(TeamUIPlugin.ID + "/syncmodels"));//$NON-NLS-1$ //$NON-NLS-2$
 			DEBUG_HISTORY = "true".equalsIgnoreCase(Platform.getDebugOption(TeamUIPlugin.ID + "/history"));//$NON-NLS-1$ //$NON-NLS-2$
+			DEBUG_DND = "true".equalsIgnoreCase(Platform.getDebugOption(TeamUIPlugin.ID + "/dnd"));//$NON-NLS-1$ //$NON-NLS-2$
 		}
 	}
 	
@@ -57,7 +58,7 @@ public class Policy {
 		if (monitor.isCanceled()) {
 			throw new OperationCanceledException();
 		}
-	}	
+	}
 	
 	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
 		if (monitor == null)
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
index 5a6e1bd..1a39e2a 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
@@ -279,6 +279,7 @@ public class TeamUIMessages extends NLS {
 	public static String SyncViewerPreferencePage_44;
 	public static String SyncViewerPreferencePage_45;
 	public static String SyncViewerPreferencePage_46;
+	public static String SyncViewerPreferencePage_47;
 
 	public static String TeamAction_internal;
 	public static String TextPreferencePage_add;
@@ -540,6 +541,11 @@ public class TeamUIMessages extends NLS {
 	public static String CopyToClipboardAction_3;
 	public static String CopyToClipboardAction_4;
 
+	public static String PasteAction_1;
+	public static String PasteAction_2;
+	public static String PasteAction_3;
+	public static String PasteAction_4;
+
 	public static String FlatModelProvider_6;
 	public static String FlatModelProvider_7;
 	public static String FlatModelProvider_8;
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
index 796ce59..749746a 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -146,6 +146,7 @@ public class TeamUIPlugin extends AbstractUIPlugin {
 		store.setDefault(IPreferenceIds.MAKE_FILE_WRITTABLE_IF_CONTEXT_MISSING, false);
 		store.setDefault(IPreferenceIds.REUSE_OPEN_COMPARE_EDITOR, true);
 		store.setDefault(IPreferenceIds.RUN_IMPORT_IN_BACKGROUND, false);
+		store.setDefault(IPreferenceIds.APPLY_PATCH_IN_SYNCHRONIZE_VIEW, false);
 		store.setDefault(IPreferenceIds.SYNCVIEW_COMPRESS_FOLDERS, true);
 		store.setDefault(IPreferenceIds.SYNCVIEW_DEFAULT_LAYOUT, IPreferenceIds.COMPRESSED_LAYOUT);
 		store.setDefault(IPreferenceIds.SYNCVIEW_DEFAULT_PERSPECTIVE, TeamSynchronizingPerspective.ID);
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
index 611acb1..6c035f6 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
@@ -16,6 +16,7 @@ import java.util.*;
 import java.util.List;
 
 import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.CompareEditorInput;
 import org.eclipse.compare.structuremergeviewer.IDiffContainer;
 import org.eclipse.compare.structuremergeviewer.IDiffElement;
 import org.eclipse.core.resources.*;
@@ -1176,4 +1177,49 @@ public class Utils {
 		return id;
 	}
 	
+	/**
+	 * Returns an editor that can be re-used. An open compare editor that has
+	 * un-saved changes cannot be re-used.
+	 * 
+	 * @param input
+	 *            the input being opened
+	 * @param page
+	 * @param editorInputClasses 
+	 * @return an EditorPart or <code>null</code> if none can be found
+	 */
+	public static IEditorPart findReusableCompareEditor(
+			CompareEditorInput input, IWorkbenchPage page,
+			Class[] editorInputClasses) {
+		IEditorReference[] editorRefs = page.getEditorReferences();
+		// first loop looking for an editor with the same input
+		for (int i = 0; i < editorRefs.length; i++) {
+			IEditorPart part = editorRefs[i].getEditor(false);
+			if (part != null && part instanceof IReusableEditor) {
+				for (int j = 0; j < editorInputClasses.length; j++) {
+					// check if the editor input type 
+					// complies with the types given by the caller
+					if (editorInputClasses[j].isInstance(part.getEditorInput())
+							&& part.getEditorInput().equals(input))
+						return part;
+				}
+			}
+		}
+		// if none found and "Reuse open compare editors" preference is on use
+		// a non-dirty editor
+		if (TeamUIPlugin.getPlugin().getPreferenceStore()
+				.getBoolean(IPreferenceIds.REUSE_OPEN_COMPARE_EDITOR)) {
+			for (int i = 0; i < editorRefs.length; i++) {
+				IEditorPart part = editorRefs[i].getEditor(false);
+				if (part != null
+						&& (part.getEditorInput() instanceof SaveableCompareEditorInput)
+						&& part instanceof IReusableEditor && !part.isDirty()) {
+					return part;
+				}
+			}
+		}
+
+		// no re-usable editor found
+		return null;
+	}
+	
 }
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ApplyPatchAction.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ApplyPatchAction.java
index 0a7debb..1d077ec 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ApplyPatchAction.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ApplyPatchAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,7 +13,6 @@ package org.eclipse.team.internal.ui.actions;
 import java.lang.reflect.InvocationTargetException;
 
 import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.patch.ApplyPatchOperation;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
@@ -21,6 +20,7 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchOperation;
 
 public class ApplyPatchAction extends TeamAction {
 
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareAction.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareAction.java
index bf3cd86..e028657 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareAction.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,6 +25,8 @@ import org.eclipse.swt.events.*;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.team.internal.ui.TeamUIMessages;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.internal.ui.history.CompareFileRevisionEditorInput;
 import org.eclipse.team.internal.ui.synchronize.SaveablesCompareEditorInput;
 import org.eclipse.ui.*;
 
@@ -68,8 +70,9 @@ public class CompareAction extends TeamAction {
 		IWorkbenchPage workBenchPage = getTargetPage();
 		CompareEditorInput input = new SaveablesCompareEditorInput(ancestor,
 				left, right, workBenchPage);
-		IEditorPart editor = CompareRevisionAction.findReusableCompareEditor(
-				input, workBenchPage);
+		IEditorPart editor = Utils.findReusableCompareEditor(input,
+				workBenchPage,
+				new Class[] { CompareFileRevisionEditorInput.class });
 		if (editor != null) {
 			IEditorInput otherInput = editor.getEditorInput();
 			if (otherInput.equals(input)) {
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareRevisionAction.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareRevisionAction.java
index 5c7d0e2..50c2932 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareRevisionAction.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/CompareRevisionAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -122,7 +122,9 @@ public class CompareRevisionAction extends BaseSelectionListenerAction {
 	private void openInCompare(ITypedElement left, ITypedElement right) {
 		CompareEditorInput input = createCompareEditorInput(left, right, page.getSite().getPage());
 		IWorkbenchPage workBenchPage = page.getSite().getPage();
-		IEditorPart editor = findReusableCompareEditor(input, workBenchPage);
+		IEditorPart editor = Utils.findReusableCompareEditor(input,
+				workBenchPage,
+				new Class[] { CompareFileRevisionEditorInput.class });
 		if (editor != null) {
 			IEditorInput otherInput = editor.getEditorInput();
 			if (otherInput.equals(input)) {
@@ -168,41 +170,14 @@ public class CompareRevisionAction extends BaseSelectionListenerAction {
 	}
 
 	/**
-	 * Returns an editor that can be re-used. An open compare editor that
-	 * has un-saved changes cannot be re-used.
-	 * @param input the input being opened
-	 * @param page 
-	 * @return an EditorPart or <code>null</code> if none can be found
+	 * DO NOT REMOVE, used in a product.
+	 * 
+	 * @deprecated As of 3.5, replaced by
+	 *             {@link Utils#findReusableCompareEditor(CompareEditorInput, IWorkbenchPage, Class[])}
 	 */
-	public static IEditorPart findReusableCompareEditor(
-			CompareEditorInput input, IWorkbenchPage page) {
-		IEditorReference[] editorRefs = page.getEditorReferences();
-		// first loop looking for an editor with the same input
-		for (int i = 0; i < editorRefs.length; i++) {
-			IEditorPart part = editorRefs[i].getEditor(false);
-			if (part != null
-					&& (part.getEditorInput() instanceof CompareFileRevisionEditorInput)
-					&& part instanceof IReusableEditor
-					&& part.getEditorInput().equals(input)) {
-				return part;
-			}
-		}
-
-		// if none found and "Reuse open compare editors" preference is on use
-		// a non-dirty editor
-		if (isReuseOpenEditor()) {
-			for (int i = 0; i < editorRefs.length; i++) {
-				IEditorPart part = editorRefs[i].getEditor(false);
-				if (part != null
-						&& (part.getEditorInput() instanceof SaveableCompareEditorInput)
-						&& part instanceof IReusableEditor && !part.isDirty()) {
-					return part;
-				}
-			}
-		}
-
-		// no re-usable editor found
-		return null;
+	public static IEditorPart findReusableCompareEditor(IWorkbenchPage workbenchPage) {
+		return Utils.findReusableCompareEditor(null, workbenchPage,
+				new Class[] { CompareFileRevisionEditorInput.class });
 	}
 	
 	protected boolean updateSelection(IStructuredSelection selection) {
@@ -248,8 +223,4 @@ public class CompareRevisionAction extends BaseSelectionListenerAction {
 		
 		return true;
 	}
-
-	private static boolean isReuseOpenEditor() {
-		return TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(IPreferenceIds.REUSE_OPEN_COMPARE_EDITOR);
-	}
 }
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/CompareFileRevisionEditorInput.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/CompareFileRevisionEditorInput.java
index 17a9093..e60fa48 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/CompareFileRevisionEditorInput.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/CompareFileRevisionEditorInput.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2008 IBM Corporation and others.
+ *  Copyright (c) 2006, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@ import org.eclipse.compare.structuremergeviewer.ICompareInput;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.osgi.util.TextProcessor;
 import org.eclipse.team.internal.core.history.LocalFileRevision;
 import org.eclipse.team.internal.ui.*;
 import org.eclipse.team.internal.ui.mapping.AbstractCompareInput;
@@ -159,7 +160,7 @@ public class CompareFileRevisionEditorInput extends SaveableCompareEditorInput {
 			String leftLabel = getFileRevisionLabel(getLeftRevision());
 			cc.setLeftLabel(leftLabel);
 		} else if (getResource(input) != null) {
-			String label = NLS.bind(TeamUIMessages.CompareFileRevisionEditorInput_workspace, new Object[]{ input.getLeft().getName() });
+			String label = NLS.bind(TeamUIMessages.CompareFileRevisionEditorInput_workspace, new Object[]{ TextProcessor.process(input.getLeft().getName())});
 			cc.setLeftLabel(label);
 		}
 		if (getRightRevision() != null) {
@@ -173,7 +174,7 @@ public class CompareFileRevisionEditorInput extends SaveableCompareEditorInput {
 		if (fileObject instanceof LocalFileRevision){
 			IFileState state = ((LocalFileRevision) fileObject).getState();
 			if (state != null) {
-				return NLS.bind(TeamUIMessages.CompareFileRevisionEditorInput_localRevision, new Object[]{element.getName(), element.getTimestamp()});
+				return NLS.bind(TeamUIMessages.CompareFileRevisionEditorInput_localRevision, new Object[]{TextProcessor.process(element.getName()), element.getTimestamp()});
 			} 
 		} else {
 			return NLS.bind(TeamUIMessages.CompareFileRevisionEditorInput_repository, new Object[]{ element.getName(), element.getContentIdentifier(), element.getAuthor()});
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
index d3e1945..f474a39 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,8 +18,10 @@ import org.eclipse.jface.action.*;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.team.core.TeamException;
@@ -35,7 +37,6 @@ import org.eclipse.team.ui.synchronize.ModelSynchronizeParticipant;
 import org.eclipse.ui.*;
 import org.eclipse.ui.actions.ActionContext;
 import org.eclipse.ui.navigator.*;
-import org.eclipse.ui.navigator.resources.ResourceDragAdapterAssistant;
 import org.eclipse.ui.part.IPageSite;
 
 /**
@@ -309,10 +310,16 @@ public class CommonViewerAdvisor extends AbstractTreeViewerAdvisor implements IN
 			});
 			dlp.setDecorationContext(decorationContext);
 		} else if (provider instanceof DecoratingStyledCellLabelProvider) {
-			DecoratingStyledCellLabelProvider dlp = (DecoratingStyledCellLabelProvider) provider;
-			ILabelDecorator decorator = ((SynchronizePageConfiguration)configuration).getLabelDecorator();
+			DecoratingStyledCellLabelProvider dsclp = (DecoratingStyledCellLabelProvider) provider;
+			ILabelDecorator decorator = ((SynchronizePageConfiguration) configuration)
+					.getLabelDecorator();
 			if (decorator != null) {
-				dlp.setLabelDecorator(decorator);
+				IStyledLabelProvider slp = dsclp.getStyledStringProvider();
+				dsclp = new DecoratingStyledCellLabelProvider(
+						new MyDecoratingStyledCellLabelProvider(slp, decorator),
+						PlatformUI.getWorkbench().getDecoratorManager()
+								.getLabelDecorator(), null);
+				viewer.setLabelProvider(dsclp);
 			}
 			DecorationContext decorationContext = new DecorationContext();
 			decorationContext.putProperty(SynchronizationStateTester.PROP_TESTER, new SynchronizationStateTester() {
@@ -320,7 +327,30 @@ public class CommonViewerAdvisor extends AbstractTreeViewerAdvisor implements IN
 					return false;
 				}
 			});
-			dlp.setDecorationContext(decorationContext);
+			dsclp.setDecorationContext(decorationContext);
+		}
+	}
+
+	private class MyDecoratingStyledCellLabelProvider extends
+			DecoratingStyledCellLabelProvider implements IStyledLabelProvider,
+			IFontProvider {
+
+		private IStyledLabelProvider slp;
+
+		public MyDecoratingStyledCellLabelProvider(IStyledLabelProvider slp,
+				ILabelDecorator decorator) {
+			super(slp, decorator, null);
+			this.slp = slp;
+		}
+
+		public StyledString getStyledText(Object element) {
+			return slp.getStyledText(element);
+		}
+
+		public Font getFont(Object element) {
+			// DelegatingStyledCellLabelProvider does not implement
+			// IFontProvider
+			return super.getFont(element);
 		}
 	}
 	
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
index c225f2d..d0abb4a 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceDragAdapterAssistant.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceDragAdapterAssistant.java
new file mode 100644
index 0000000..3793bec
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceDragAdapterAssistant.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     Anton Leherbauer (Wind River Systems) - http://bugs.eclipse.org/247294
+ ******************************************************************************/
+package org.eclipse.team.internal.ui.mapping;
+
+import java.util.*;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.dnd.*;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
+import org.eclipse.ui.part.ResourceTransfer;
+
+
+/**
+ * Drag adapter assistant used for the Common Navigator based viewer for use by a
+ * {@link ModelSynchronizePage}.
+ * 
+ * @since 3.6
+ */
+public class ResourceDragAdapterAssistant extends CommonDragAdapterAssistant {
+
+	private static final Transfer[] SUPPORTED_TRANSFERS = new Transfer[] {
+			ResourceTransfer.getInstance(),
+			FileTransfer.getInstance() };
+
+	private static final Class IRESOURCE_TYPE = IResource.class;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#getSupportedTransferTypes()
+	 */
+	public Transfer[] getSupportedTransferTypes() {
+		return SUPPORTED_TRANSFERS;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#setDragData(org.eclipse.swt.dnd.DragSourceEvent,
+	 *      org.eclipse.jface.viewers.IStructuredSelection)
+	 */
+	public boolean setDragData(DragSourceEvent anEvent,
+			IStructuredSelection aSelection) {
+
+		IResource[] resources = getSelectedResources(aSelection);
+		if (resources.length > 0) {
+			if (ResourceTransfer.getInstance().isSupportedType(anEvent.dataType)) {
+				anEvent.data = resources;
+				if (Policy.DEBUG_DND) {
+					System.out
+							.println("ResourceDragAdapterAssistant.dragSetData set ResourceTransfer"); //$NON-NLS-1$
+				}
+				return true;
+			}
+				
+			if (FileTransfer.getInstance().isSupportedType(anEvent.dataType)) {
+				// Get the path of each file and set as the drag data
+				final int length = resources.length;
+				int actualLength = 0;
+				String[] fileNames = new String[length];
+				for (int i = 0; i < length; i++) {
+					IPath location = resources[i].getLocation();
+					// location may be null. See bug 29491.
+					if (location != null) {
+						fileNames[actualLength++] = location.toOSString();
+					}
+				}
+				if (actualLength > 0) {
+					// was one or more of the locations null?
+					if (actualLength < length) {
+						String[] tempFileNames = fileNames;
+						fileNames = new String[actualLength];
+						for (int i = 0; i < actualLength; i++)
+							fileNames[i] = tempFileNames[i];
+					}
+					anEvent.data = fileNames;
+		
+					if (Policy.DEBUG_DND)
+						System.out
+								.println("ResourceDragAdapterAssistant.dragSetData set FileTransfer"); //$NON-NLS-1$
+					return true;
+				}
+			}
+		}
+		return false;
+
+	}
+
+	private IResource[] getSelectedResources(IStructuredSelection aSelection) {
+		Set resources = new LinkedHashSet();
+		IResource resource = null;
+		for (Iterator iter = aSelection.iterator(); iter.hasNext();) {
+			Object selected = iter.next();
+			resource = adaptToResource(selected);
+			if (resource != null) {
+				resources.add(resource);
+		}
+		}
+		return (IResource[]) resources.toArray(new IResource[resources.size()]);
+	}
+
+	private IResource adaptToResource(Object selected) {
+		IResource resource;
+		if (selected instanceof IResource) {
+			resource = (IResource) selected;
+		} else if (selected instanceof IAdaptable) {
+			resource = (IResource) ((IAdaptable) selected)
+					.getAdapter(IRESOURCE_TYPE);
+		} else {
+			resource = (IResource) Platform.getAdapterManager().getAdapter(
+					selected, IRESOURCE_TYPE);
+		}
+		return resource;
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
index 01c0ff6..81259e8 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
@@ -198,6 +198,7 @@ SyncViewerPreferencePage_43=Show the &file author in compare editors
 SyncViewerPreferencePage_44=When &editing file in non-shared projects, automatically make files writable if prompting is not possible
 SyncViewerPreferencePage_45=Re&use open compare editors when opening comparisons
 SyncViewerPreferencePage_46=Run Project Set import in the &background
+SyncViewerPreferencePage_47=&Apply patch in Synchronize view
 
 PreferencePageContainerDialog_6=Synchronize Preferences
 
@@ -379,6 +380,11 @@ CopyToClipboardAction_2= Copy
 CopyToClipboardAction_3=Problem Copying to Clipboard
 CopyToClipboardAction_4=There was a problem when accessing the system clipboard. Retry?
 
+PasteAction_1=&Paste patch
+PasteAction_2=Paste patch
+PasteAction_3=Cannot paste the clipboard contents.
+PasteAction_4=Clipboard does not contain a valid patch.
+
 FlatModelProvider_6=Sort &Resources By
 FlatModelProvider_7=&Name
 FlatModelProvider_8=&Path
@@ -580,7 +586,7 @@ PatchParsedPage_clickFinishToGoToSynchronizeView=Click finish button to go to Sy
 # PatchInaccessibleProjectsPage
 #
 PatchInaccessibleProjectsPage_title=Inaccessible Projects
-PatchInaccessibleProjectsPage_message=Select projects to open for applying the patch. Inaccessbile projects will not appear in the Synchronize View.
+PatchInaccessibleProjectsPage_message=Select projects to open before applying the patch. Inaccessible projects will not appear in the Synchronize view.
 PatchInaccessibleProjectsPage_projectDoesNotExistInWorkspace={0} (Project does not exist in workspace)
 PatchInaccessibleProjectsPage_selectExisting=Select Existing
 PatchInaccessibleProjectsPage_deselectAll=Deselect All
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
index 6813d2e..5c52ec8 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -94,8 +94,14 @@ public class SyncViewerPreferencePage extends FieldEditorPreferencePage implemen
 				RUN_IMPORT_IN_BACKGROUND, 
 		        TeamUIMessages.SyncViewerPreferencePage_46, 
 				BooleanFieldEditor.DEFAULT, 
-				getFieldEditorParent()));		
-		
+				getFieldEditorParent()));
+
+		addField(new BooleanFieldEditor(
+				APPLY_PATCH_IN_SYNCHRONIZE_VIEW, 
+		        TeamUIMessages.SyncViewerPreferencePage_47, 
+				BooleanFieldEditor.DEFAULT, 
+				getFieldEditorParent()));
+
 		if (isIncludeDefaultLayout()) {
 		    defaultLayout = new RadioGroupFieldEditor(SYNCVIEW_DEFAULT_LAYOUT, 
 		            TeamUIMessages.SyncViewerPreferencePage_0, 3,  
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SaveablesCompareEditorInput.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SaveablesCompareEditorInput.java
index 49676c7..01f8730 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SaveablesCompareEditorInput.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SaveablesCompareEditorInput.java
@@ -14,8 +14,7 @@ import java.lang.reflect.InvocationTargetException;
 
 import org.eclipse.compare.*;
 import org.eclipse.compare.structuremergeviewer.*;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.jface.action.*;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -28,6 +27,7 @@ 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.graphics.Point;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.team.internal.ui.*;
 import org.eclipse.team.internal.ui.history.CompareFileRevisionEditorInput;
@@ -38,8 +38,10 @@ import org.eclipse.team.ui.mapping.SaveableComparison;
 import org.eclipse.team.ui.synchronize.SaveableCompareEditorInput;
 import org.eclipse.ui.*;
 import org.eclipse.ui.actions.*;
+import org.eclipse.ui.ide.IGotoMarker;
 import org.eclipse.ui.keys.IBindingService;
 import org.eclipse.ui.services.IDisposable;
+import org.eclipse.ui.texteditor.ITextEditor;
 
 /**
  * A compare editor input that makes use of a {@link Saveable} to manage the
@@ -524,8 +526,7 @@ public class SaveablesCompareEditorInput extends CompareEditorInput implements
 		if (lLeftSaveable instanceof LocalResourceSaveableComparison) {
 			pMenuManager.addMenuListener(new IMenuListener() {
 				public void menuAboutToShow(IMenuManager manager) {
-					handleMenuAboutToShow(manager, lLeftSaveable, lLeftElement,
-							pSelectionProvider);
+					handleMenuAboutToShow(manager, getContainer(), lLeftSaveable, lLeftElement, pSelectionProvider);
 				}
 			});
 		}
@@ -535,8 +536,7 @@ public class SaveablesCompareEditorInput extends CompareEditorInput implements
 		if (lRightSaveable instanceof LocalResourceSaveableComparison) {
 			pMenuManager.addMenuListener(new IMenuListener() {
 				public void menuAboutToShow(IMenuManager manager) {
-					handleMenuAboutToShow(manager, lRightSaveable,
-							lRightElement, pSelectionProvider);
+					handleMenuAboutToShow(manager, getContainer(), lRightSaveable, lRightElement, pSelectionProvider);
 				}
 			});
 		}
@@ -628,45 +628,7 @@ public class SaveablesCompareEditorInput extends CompareEditorInput implements
 		return true;
 	}
 
-	private void handleMenuAboutToShow(IMenuManager manager, Saveable saveable,
-			ITypedElement element, ISelectionProvider provider) {
-		if (provider instanceof ITextViewer) {
-			ITextViewer v = (ITextViewer) provider;
-			IDocument d = v.getDocument();
-			IDocument other = (IDocument) Utils.getAdapter(saveable,
-					IDocument.class);
-			if (d == other) {
-				if (element instanceof IResourceProvider) {
-					IResourceProvider rp = (IResourceProvider) element;
-					IResource resource = rp.getResource();
-					StructuredSelection selection = new StructuredSelection(
-							resource);
-					IWorkbenchPart workbenchPart = getContainer()
-							.getWorkbenchPart();
-					if (workbenchPart != null) {
-						IWorkbenchSite ws = workbenchPart.getSite();
-						MenuManager submenu1 = new MenuManager(
-								getShowInMenuLabel());
-						IContributionItem showInMenu = ContributionItemFactory.VIEWS_SHOW_IN
-								.create(ws.getWorkbenchWindow());
-						submenu1.add(showInMenu);
-						manager.insertAfter("file", submenu1); //$NON-NLS-1$
-						MenuManager submenu2 = new MenuManager(
-								TeamUIMessages.OpenWithActionGroup_0);
-						submenu2.add(new OpenWithMenu(ws.getPage(), resource));
-						manager.insertAfter("file", submenu2); //$NON-NLS-1$
-
-						OpenFileAction openFileAction = new OpenFileAction(ws
-								.getPage());
-						openFileAction.selectionChanged(selection);
-						manager.insertAfter("file", openFileAction); //$NON-NLS-1$
-					}
-				}
-			}
-		}
-	}
-
-	private String getShowInMenuLabel() {
+	private static String getShowInMenuLabel() {
 		String keyBinding = null;
 
 		IBindingService bindingService = (IBindingService) PlatformUI
@@ -784,4 +746,116 @@ public class SaveablesCompareEditorInput extends CompareEditorInput implements
 			return false;
 		}
 	}
+
+	public static void handleMenuAboutToShow(IMenuManager manager, ICompareContainer container, Saveable saveable, ITypedElement element, ISelectionProvider provider) {
+		if (provider instanceof ITextViewer) {
+			final ITextViewer v= (ITextViewer)provider;
+			IDocument d= v.getDocument();
+			IDocument other= (IDocument)Utils.getAdapter(saveable, IDocument.class);
+			if (d == other) {
+				if (element instanceof IResourceProvider) {
+					IResourceProvider rp= (IResourceProvider)element;
+					IResource resource= rp.getResource();
+					StructuredSelection selection= new StructuredSelection(resource);
+					IWorkbenchPart workbenchPart= container.getWorkbenchPart();
+					if (workbenchPart != null) {
+						final IWorkbenchSite ws= workbenchPart.getSite();
+
+						MenuManager submenu1= new MenuManager(getShowInMenuLabel());
+						IContributionItem showInMenu= ContributionItemFactory.VIEWS_SHOW_IN.create(ws.getWorkbenchWindow());
+						submenu1.add(showInMenu);
+						manager.insertAfter("file", submenu1); //$NON-NLS-1$
+						MenuManager submenu2= new MenuManager(TeamUIMessages.OpenWithActionGroup_0);
+
+						// XXX: Internal reference will get fixed during 3.7, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=307026
+						submenu2.add(new OpenWithMenu(ws.getPage(), resource) {
+							/*
+							 * (non-Javadoc)
+							 * 
+							 * @see org.eclipse.ui.actions.OpenWithMenu#openEditor(org.eclipse.ui.
+							 * IEditorDescriptor, boolean)
+							 */
+							protected void openEditor(IEditorDescriptor editorDescriptor, boolean openUsingDescriptor) {
+								super.openEditor(editorDescriptor, openUsingDescriptor);
+								IEditorPart editor= ws.getPage().getActiveEditor();
+								Point selectedRange= v.getSelectedRange();
+								revealInEditor(editor, selectedRange.x, selectedRange.y);
+							}
+						});
+						manager.insertAfter("file", submenu2); //$NON-NLS-1$
+
+						// XXX: Internal reference will get fixed during 3.7, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=307026
+						OpenFileAction openFileAction= new OpenFileAction(ws.getPage()) {
+							/*
+							 * (non-Javadoc)
+							 * 
+							 * @see org.eclipse.ui.actions.OpenSystemEditorAction#run()
+							 */
+							public void run() {
+								super.run();
+								IEditorPart editor= ws.getPage().getActiveEditor();
+								Point selectedRange= v.getSelectedRange();
+								revealInEditor(editor, selectedRange.x, selectedRange.y);
+							}
+						};
+						openFileAction.selectionChanged(selection);
+						manager.insertAfter("file", openFileAction); //$NON-NLS-1$
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Selects and reveals the given offset and length in the given editor part.
+	 * 
+	 * @param editor the editor part
+	 * @param offset the offset
+	 * @param length the length
+	 * @since 3.6
+	 */
+	private static void revealInEditor(IEditorPart editor, final int offset, final int length) {
+		if (editor instanceof ITextEditor) {
+			((ITextEditor)editor).selectAndReveal(offset, length);
+			return;
+		}
+
+		// Support for non-text editor - try IGotoMarker interface
+		final IGotoMarker gotoMarkerTarget;
+		if (editor instanceof IGotoMarker)
+			gotoMarkerTarget= (IGotoMarker)editor;
+		else
+			gotoMarkerTarget= editor != null ? (IGotoMarker)editor.getAdapter(IGotoMarker.class) : null;
+		if (gotoMarkerTarget != null) {
+			final IEditorInput input= editor.getEditorInput();
+			if (input instanceof IFileEditorInput) {
+				WorkspaceModifyOperation op= new WorkspaceModifyOperation() {
+					protected void execute(IProgressMonitor monitor) throws CoreException {
+						IMarker marker= null;
+						try {
+							marker= ((IFileEditorInput)input).getFile().createMarker(IMarker.TEXT);
+							marker.setAttribute(IMarker.CHAR_START, offset);
+							marker.setAttribute(IMarker.CHAR_END, offset + length);
+
+							gotoMarkerTarget.gotoMarker(marker);
+
+						} finally {
+							if (marker != null)
+								marker.delete();
+						}
+					}
+				};
+
+				try {
+					op.run(null);
+				} catch (InvocationTargetException ex) {
+					// reveal failed
+				} catch (InterruptedException e) {
+					Assert.isTrue(false, "this operation can not be canceled"); //$NON-NLS-1$
+				}
+			}
+			return;
+		}
+	}
+
 }
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeView.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeView.java
index cbc555c..b63d243 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeView.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeView.java
@@ -17,8 +17,7 @@ import org.eclipse.compare.structuremergeviewer.ICompareInput;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.*;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.*;
 import org.eclipse.jface.commands.ActionHandler;
 import org.eclipse.jface.dialogs.*;
 import org.eclipse.jface.util.IPropertyChangeListener;
@@ -89,9 +88,15 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 	private RemoveSynchronizeParticipantAction fRemoveAllAction;
 	
 	private ToggleLinkingAction fToggleLinkingAction;
+
+	/**
+	 * Action to paste patch into the view, starting a new synchronization.
+	 */
+	private PasteAction fPastePatchAction;
 	private boolean fLinkingEnabled;
 	private OpenAndLinkWithEditorHelper fOpenAndLinkWithEditorHelper;
 
+
 	/**
 	 * Preference key to save
 	 */
@@ -271,6 +276,7 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 		TeamUI.getSynchronizeManager().removeSynchronizeParticipantListener(this);
 		// Pin action is hooked up to listeners, must call dispose to un-register.
 		fPinAction.dispose();
+		fPastePatchAction.dispose();
 		// Remember the last active participant
 		if(activeParticipantRef != null) {
 			rememberCurrentParticipant();
@@ -383,6 +389,7 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 		fToggleLinkingAction = new ToggleLinkingAction(this);
 		fRemoveCurrentAction = new RemoveSynchronizeParticipantAction(this, false);
 		fRemoveAllAction = new RemoveSynchronizeParticipantAction(this, true);
+		fPastePatchAction = new PasteAction(this);
 		updateActionEnablements();
 	}
 
@@ -399,6 +406,10 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 		if (fRemoveCurrentAction != null) {
 			fRemoveCurrentAction.setEnabled(getParticipant() != null);
 		}
+		if (fPastePatchAction != null) {
+			// The action is always enabled
+			fPastePatchAction.setEnabled(true); 
+		}
 	}
 
 	/**
@@ -418,6 +429,7 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 
 		IHandlerService handlerService= (IHandlerService) this.getViewSite().getService(IHandlerService.class);
 		handlerService.activateHandler(IWorkbenchCommandConstants.NAVIGATE_TOGGLE_LINK_WITH_EDITOR, new ActionHandler(fToggleLinkingAction));
+		handlerService.activateHandler(ActionFactory.PASTE.getCommandId(), new ActionHandler(fPastePatchAction));
 	}
 
 	/* (non-Javadoc)
@@ -1063,4 +1075,8 @@ public class SynchronizeView extends PageBookView implements ISynchronizeView, I
 		}
 		return false;
 	}
+
+	public IAction getPastePatchAction() {
+		return fPastePatchAction;
+	}
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TeamSynchronizingPerspective.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TeamSynchronizingPerspective.java
index 83b66fa..2e208ba 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TeamSynchronizingPerspective.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TeamSynchronizingPerspective.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,7 +13,6 @@ package org.eclipse.team.internal.ui.synchronize;
 import org.eclipse.team.ui.history.IHistoryView;
 import org.eclipse.team.ui.synchronize.ISynchronizeView;
 import org.eclipse.ui.*;
-import org.eclipse.ui.navigator.resources.ProjectExplorer;
 
 public class TeamSynchronizingPerspective implements IPerspectiveFactory {
 
@@ -40,7 +39,7 @@ public class TeamSynchronizingPerspective implements IPerspectiveFactory {
 
 		// Add "show views".
 		layout.addShowViewShortcut(ISynchronizeView.VIEW_ID);
-		layout.addShowViewShortcut(ProjectExplorer.VIEW_ID);
+		layout.addShowViewShortcut(IPageLayout.ID_PROJECT_EXPLORER);
 		layout.addShowViewShortcut(IPageLayout.ID_OUTLINE);
 		layout.addShowViewShortcut(IPageLayout.ID_TASK_LIST);
 		layout.addShowViewShortcut(IPageLayout.ID_PROBLEM_VIEW);
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/OpenInCompareAction.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/OpenInCompareAction.java
index 99cfa7d..8fbfdab 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/OpenInCompareAction.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/OpenInCompareAction.java
@@ -24,7 +24,7 @@ import org.eclipse.jface.util.OpenStrategy;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.team.core.synchronize.SyncInfo;
-import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.internal.ui.mapping.ModelCompareEditorInput;
 import org.eclipse.team.internal.ui.synchronize.SyncInfoModelElement;
 import org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchModelCompareEditorInput;
@@ -205,7 +205,9 @@ public class OpenInCompareAction extends Action {
     public static void openCompareEditor(CompareEditorInput input, IWorkbenchPage page, boolean reuseEditorIfPossible) {
         if (page == null || input == null) 
             return;
-        IEditorPart editor = findReusableCompareEditor(input, page);
+		IEditorPart editor = Utils.findReusableCompareEditor(input, page,
+				new Class[] { SyncInfoCompareInput.class,
+						ModelCompareEditorInput.class });
         // reuse editor only for single selection
         if(editor != null && reuseEditorIfPossible) {
         	IEditorInput otherInput = editor.getEditorInput();
@@ -221,46 +223,6 @@ public class OpenInCompareAction extends Action {
         	CompareUI.openCompareEditorOnPage(input, page);
         }
     }
-	
-	/**
-	 * Returns an editor that can be re-used. An open compare editor that has
-	 * un-saved changes cannot be re-used.
-	 * 
-	 * @param input
-	 *            the input being opened
-	 * @param page
-	 * @return an EditorPart or <code>null</code> if none can be found
-	 */
-	public static IEditorPart findReusableCompareEditor(
-			CompareEditorInput input, IWorkbenchPage page) {
-		IEditorReference[] editorRefs = page.getEditorReferences();
-		// first loop looking for an editor with the same input
-		for (int i = 0; i < editorRefs.length; i++) {
-			IEditorPart part = editorRefs[i].getEditor(false);
-			if (part != null
-					&& (part.getEditorInput() instanceof SyncInfoCompareInput || part
-							.getEditorInput() instanceof ModelCompareEditorInput)
-					&& part instanceof IReusableEditor
-					&& part.getEditorInput().equals(input)) {
-				return part;
-			}
-		}
-		// if none found and "Reuse open compare editors" preference is on use
-		// a non-dirty editor
-		if (isReuseOpenEditor()) {
-			for (int i = 0; i < editorRefs.length; i++) {
-				IEditorPart part = editorRefs[i].getEditor(false);
-				if (part != null
-						&& (part.getEditorInput() instanceof SaveableCompareEditorInput)
-						&& part instanceof IReusableEditor && !part.isDirty()) {
-					return part;
-				}
-			}
-		}
-
-		// no re-usable editor found
-		return null;
-	}
 
 	/**
 	 * Returns an editor handle if a SyncInfoCompareInput compare editor is opened on 
@@ -317,8 +279,4 @@ public class OpenInCompareAction extends Action {
 		}
 		return null;
 	}
-	
-	private static boolean isReuseOpenEditor() {
-		return TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(IPreferenceIds.REUSE_OPEN_COMPARE_EDITOR);
-	}
 }
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/PasteAction.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/PasteAction.java
new file mode 100644
index 0000000..8f496d6
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/PasteAction.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.team.internal.ui.synchronize.actions;
+
+import java.io.*;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.dnd.*;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.team.internal.ui.TeamUIMessages;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.synchronize.patch.ApplyPatchOperation;
+import org.eclipse.ui.*;
+import org.eclipse.ui.actions.SelectionListenerAction;
+
+public class PasteAction extends SelectionListenerAction {
+
+	private final static String ID = TeamUIPlugin.PLUGIN_ID
+			+ ".synchronize.action.paste"; //$NON-NLS-1$
+	private Shell fShell;
+	private Clipboard fClipboard;
+
+	public PasteAction(IWorkbenchPart part) {
+		super(TeamUIMessages.PasteAction_1);
+		
+		final ISharedImages images = PlatformUI.getWorkbench().getSharedImages();
+		setActionDefinitionId(IWorkbenchCommandConstants.EDIT_PASTE);
+		setImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
+		setDisabledImageDescriptor(images.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED));
+		
+		fShell = part.getSite().getShell();
+		Assert.isNotNull(fShell);
+		fClipboard = new Clipboard(fShell.getDisplay());
+		setToolTipText(TeamUIMessages.PasteAction_2);
+		setId(ID);
+	}
+
+	public void run() {
+		IStorage patchStorage = getPatchStorage();
+		if (patchStorage != null) {
+			IResource resource = null;
+			IResource[] resources = (IResource[]) getSelectedResources()
+					.toArray(new IResource[0]);
+			if (resources.length > 0) {
+				resource = resources[0];
+			}
+			// XXX: This will be fixed in 3.7, see
+			// https://bugs.eclipse.org/309803
+			ApplyPatchOperation operation = new ApplyPatchOperation(null,
+					patchStorage, resource, new CompareConfiguration()) {
+				protected boolean isApplyPatchInSynchronizeView() {
+					// ignore the preference, apply in the sync view
+					return true;
+				};
+			};
+			operation.openWizard();
+		} else {
+			MessageDialog.openError(fShell, TeamUIMessages.PasteAction_3,
+					TeamUIMessages.PasteAction_4);
+		}
+	}
+
+	private IStorage getPatchStorage() {
+		final String text = getClipboardText();
+		if (text == null)
+			return null;
+
+		IStorage storage = new IEncodedStorage() {
+			public Object getAdapter(Class adapter) {
+				return null;
+			}
+
+			public boolean isReadOnly() {
+				return false;
+			}
+
+			public String getName() {
+				return null;
+			}
+
+			public IPath getFullPath() {
+				return null;
+			}
+
+			public InputStream getContents() throws CoreException {
+				try {
+					return new ByteArrayInputStream(text.getBytes(getCharset()));
+				} catch (UnsupportedEncodingException e) {
+					throw new CoreException(new Status(IStatus.ERROR,
+							TeamUIPlugin.ID, IStatus.ERROR, e.getMessage(), e));
+				}
+			}
+
+			public String getCharset() throws CoreException {
+				return "UTF-8"; //$NON-NLS-1$
+			}
+		};
+
+		try {
+			if (ApplyPatchOperation.isPatch(storage)) {
+				return storage;
+			}
+		} catch (CoreException e) {
+			// ignore
+		}
+		return null;
+	}
+
+	private String getClipboardText() {
+		Transfer transfer = TextTransfer.getInstance();
+		if (isAvailable(transfer, fClipboard.getAvailableTypes())) {
+			return (String) getContents(fClipboard, transfer, fShell);
+		}
+		return null;
+	}
+
+	private static boolean isAvailable(Transfer transfer,
+			TransferData[] availableDataTypes) {
+		for (int i = 0; i < availableDataTypes.length; i++) {
+			if (transfer.isSupportedType(availableDataTypes[i]))
+				return true;
+		}
+		return false;
+	}
+
+	private static Object getContents(final Clipboard clipboard,
+			final Transfer transfer, Shell shell) {
+		// see bug 33028 for explanation why we need this
+		final Object[] result = new Object[1];
+		shell.getDisplay().syncExec(new Runnable() {
+			public void run() {
+				result[0] = clipboard.getContents(transfer);
+			}
+		});
+		return result[0];
+	}
+
+	public void dispose() {
+		fClipboard.dispose();
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/RefactorActionGroup.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/RefactorActionGroup.java
index 2da6a66..0c0c6d9 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/RefactorActionGroup.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/RefactorActionGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,10 +15,12 @@ import java.util.List;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.internal.ui.synchronize.SynchronizeView;
 import org.eclipse.team.ui.synchronize.ISynchronizePageSite;
 import org.eclipse.ui.*;
 import org.eclipse.ui.actions.*;
@@ -50,6 +52,13 @@ public class RefactorActionGroup extends ActionGroup {
 
 	public void fillContextMenu(IMenuManager parentMenu, String groupId) {
 		parentMenu.appendToGroup(groupId, copyAction);
+		// the paste action has been already created in the Sync view
+		IWorkbenchPart part = site.getPart();
+		if (part instanceof SynchronizeView) {
+			SynchronizeView sv = (SynchronizeView) part;
+			IAction pasteAction = sv.getPastePatchAction();
+			parentMenu.appendToGroup(groupId, pasteAction);
+		}
 		parentMenu.appendToGroup(groupId, deleteAction);
 		parentMenu.appendToGroup(groupId, moveAction);
 		parentMenu.appendToGroup(groupId, renameAction);
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchOperation.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchOperation.java
new file mode 100644
index 0000000..f316ce9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchOperation.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.team.internal.ui.synchronize.patch;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.internal.ComparePreferencePage;
+import org.eclipse.compare.internal.CompareUIPlugin;
+import org.eclipse.compare.internal.core.patch.FilePatch2;
+import org.eclipse.compare.internal.core.patch.PatchReader;
+import org.eclipse.compare.internal.patch.*;
+import org.eclipse.compare.patch.IFilePatch;
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.team.internal.ui.IPreferenceIds;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * An operation that provides an interface to the Apply Patch Wizard. Users specify
+ * the input in terms of an <code>IStorage</code> (note: input must be in unified diff
+ * format), an <code>IResource</code> target to apply the patch to and can provide <code>CompareConfiguration</code>
+ * elements to supply the label and images used on the preview page and hunk merge page. Finally, the
+ * user can also supply a title and image to override the default ones provided by the Apply Patch Wizard.
+ * Note that the Apply Patch Wizard does not require any particular set of inputs, and in the absence of
+ * any user supplied values, it will work in default mode.
+ * <p>
+ * This is copy of {@link org.eclipse.compare.patch.ApplyPatchOperation} which additionally honors
+ * the preference whether to show the patch in a wizard or in the Synchronize view.
+ * </p>
+ * <p>
+ * FIXME: This class will be removed with the fix for https://bugs.eclipse.org/309803
+ * </p>
+ * 
+ * @since 3.3
+ *
+ */
+public class ApplyPatchOperation implements Runnable {
+
+	private IWorkbenchPart part;
+	
+	/**
+	 * Used for the Preview Patch page.
+	 */
+	private CompareConfiguration configuration;
+	
+	/**
+	 * The patch to use as an input into the Apply Patch wizard
+	 */
+	private IStorage patch;
+	
+	/**
+	 * Specific <code>IResource</code> target to patch.
+	 */
+	private IResource target;
+	
+	/**
+	 * An optional image for the patch wizard
+	 */
+	private ImageDescriptor patchWizardImage;
+	
+	
+	/**
+	 * An optional title for the patchWizard
+	 */
+	private String patchWizardTitle;
+
+	private boolean saveAllEditors = true;
+	
+	/**
+	 * Return whether the given storage contains a patch.
+	 * @param storage the storage
+	 * @return whether the given storage contains a patch
+	 * @throws CoreException if an error occurs reading the contents from the storage
+	 */
+	public static boolean isPatch(IStorage storage) throws CoreException {
+		return internalParsePatch(storage).length > 0;
+	}
+	
+	/**
+	 * Parse the given patch and return the set of file patches that it contains.
+	 * @param storage the storage that contains the patch
+	 * @return the set of file patches that the storage contains
+	 * @throws CoreException if an error occurs reading the contents from the storage
+	 */
+	public static IFilePatch[] parsePatch(IStorage storage) throws CoreException {
+		return internalParsePatch(storage);
+	}
+	
+	/**
+	 * Creates a new ApplyPatchOperation with the supplied compare configuration, patch and target.
+	 * The behaviour of the Apply Patch wizard is controlled by the number of parameters supplied:
+	 * <ul>
+	 * <li>If a patch is supplied, the initial input page is skipped. If a patch is not supplied the wizard
+	 * will open on the input page.</li>
+	 * <li>If the patch is a workspace patch, the target selection page is skipped and the preview page is 
+	 * displayed.</li>
+	 * <li>If the patch is not a workspace patch and the target is specified, the target page is still
+	 * shown with the target selected.</li>
+	 * </ul> 
+	 * 
+	 * @param part 	an IWorkbenchPart or <code>null</code>
+	 * @param patch		an IStorage containing a patch in unified diff format or <code>null</code>
+	 * @param target	an IResource which the patch is to be applied to or <code>null</code>
+	 * @param configuration	a CompareConfiguration supplying the labels and images for the preview patch page
+	 */
+	public ApplyPatchOperation(IWorkbenchPart part, IStorage patch, IResource target, CompareConfiguration configuration) {
+		Assert.isNotNull(configuration);
+		this.part = part;
+		this.patch = patch;
+		this.target = target;
+		this.configuration = configuration;
+	}
+	
+	/**
+	 * Create an operation for the given part and resource. This method is a convenience
+	 * method that calls {@link #ApplyPatchOperation(IWorkbenchPart, IStorage, IResource, CompareConfiguration)}
+	 * with appropriate defaults for the other parameters.
+	 * @param targetPart an IResource which the patch is to be applied to or <code>null</code>
+	 * @param resource an IResource which the patch is to be applied to or <code>null</code>
+	 * @see #ApplyPatchOperation(IWorkbenchPart, IStorage, IResource, CompareConfiguration)
+	 */
+	public ApplyPatchOperation(IWorkbenchPart targetPart, IResource resource) {
+		this(targetPart, null, resource, new CompareConfiguration());
+	}
+
+	/**
+	 * Open the Apply Patch wizard using the values associated with this operation.
+	 * This method must be called from the UI thread.
+	 */
+	public void openWizard() {
+		saveAllEditors();
+
+		if (saveAllEditors) {
+			PatchWizard wizard = createPatchWizard(patch, target, configuration);
+			if (patchWizardImage != null)
+				wizard.setDefaultPageImageDescriptor(patchWizardImage);
+			if (patchWizardTitle != null)
+				wizard.setWindowTitle(patchWizardTitle);
+			wizard.setNeedsProgressMonitor(true);
+
+			if (wizard instanceof ApplyPatchSynchronizationWizard
+					&& ((ApplyPatchSynchronizationWizard) wizard).isComplete())
+				wizard.performFinish();
+			else
+				new PatchWizardDialog(getShell(), wizard).open();
+		}
+	}
+
+	private PatchWizard createPatchWizard(IStorage patch, IResource target,
+			CompareConfiguration configuration) {
+		if (isApplyPatchInSynchronizeView())
+			return new ApplyPatchSynchronizationWizard(patch, target,
+					configuration);
+		return new PatchWizard(patch, target, configuration);
+	}
+
+	protected boolean isApplyPatchInSynchronizeView() {
+		return TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(
+				IPreferenceIds.APPLY_PATCH_IN_SYNCHRONIZE_VIEW);
+	}
+	
+	/**
+	 * Return the parent shell to be used when the wizard is opened.
+	 * By default, the site of the part is used to get the shell.
+	 * Subclasses may override.
+	 * @return the parent shell to be used when the wizard is opened
+	 */
+	protected Shell getShell() {
+		if (part == null)
+			return CompareUIPlugin.getShell();
+		return part.getSite().getShell();
+	}
+	
+	/**
+	 * This method will save all dirty editors. It will prompt the user if the Compare preference to save
+	 * dirty editors before viewing a patch is <code>false</code>. Clients can use this or provide their own
+	 * implementation.
+	 */
+	protected void saveAllEditors(){
+		saveAllEditors = IDE.saveAllEditors(new IResource[]{ResourcesPlugin.getWorkspace().getRoot()}, !ComparePreferencePage.getSaveAllEditors());
+	}
+	
+	/**
+	 * Sets the title of the patch wizard. Needs to be set before {@link #openWizard()} is called.
+	 * @param title	a string to display in the title bar
+	 */
+	public void setPatchWizardTitle(String title){
+		this.patchWizardTitle = title;
+	}
+	
+	/**
+	 * Sets the image descriptor to use in the patch wizard. Needs to be set before  {@link #openWizard()} is called.
+	 * @param descriptor an image descriptor
+	 */
+	public void setPatchWizardImageDescriptor(ImageDescriptor descriptor){
+		this.patchWizardImage = descriptor;
+	}
+	
+	/* (non-Javadoc)
+	 * @see java.lang.Runnable#run()
+	 */
+	public void run() {
+		openWizard();
+	}
+	
+	private static IFilePatch[] internalParsePatch(IStorage storage)
+			throws CoreException {
+		BufferedReader reader = Utilities.createReader(storage);
+		try {
+			PatchReader patchReader = new PatchReader() {
+				protected FilePatch2 createFileDiff(IPath oldPath, long oldDate,
+						IPath newPath, long newDate) {
+					return new FilePatch(oldPath, oldDate, newPath,
+							newDate);
+				}
+			};
+			patchReader.parse(reader);
+			FilePatch2[] fileDiffs = patchReader.getAdjustedDiffs();
+
+			IFilePatch[] filePatch = new IFilePatch[fileDiffs.length];
+			for (int i = 0; i < fileDiffs.length; i++) {
+				filePatch[i] = (FilePatch) fileDiffs[i];
+			}
+
+			return filePatch;
+		} catch (IOException e) {
+			throw new CoreException(new Status(IStatus.ERROR,
+					CompareUIPlugin.PLUGIN_ID, 0, e.getMessage(), e));
+		} finally {
+			try {
+				reader.close();
+			} catch (IOException e) { // ignored
+			}
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSynchronizationWizard.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSynchronizationWizard.java
index 01e702f..a44fde1 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSynchronizationWizard.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSynchronizationWizard.java
@@ -34,9 +34,12 @@ public class ApplyPatchSynchronizationWizard extends PatchWizard implements
 	private PatchInaccessibleProjectsPage fPatchInaccessibleProjectsPage;
 
 	public ApplyPatchSynchronizationWizard() {
-		// TODO: get selection, available when launched from toolbar or main
-		// menu
-		super((IStorage) null, (IResource) null, new CompareConfiguration());
+		this(null, null, new CompareConfiguration());
+	}
+
+	public ApplyPatchSynchronizationWizard(IStorage patch, IResource target,
+			CompareConfiguration configuration) {
+		super(patch, target, configuration);
 		setNeedsProgressMonitor(true);
 	}
 
@@ -88,9 +91,10 @@ public class ApplyPatchSynchronizationWizard extends PatchWizard implements
 		if (getPatch() == null || !getPatcher().isWorkspacePatch())
 			addPage(fPatchTargetPage = new PatchTargetPage(getPatcher()) {
 				public IWizardPage getNextPage() {
-					if (!isTargetingInaccessibleProjects())
-						return super.getNextPage().getNextPage();
-					return super.getNextPage();
+					IWizardPage nextPage = super.getNextPage();
+					if (!isTargetingInaccessibleProjects() && nextPage != this)
+						return nextPage.getNextPage();
+					return nextPage;
 				}
 			});
 		if (getPatch() == null || isTargetingInaccessibleProjects())
@@ -99,6 +103,13 @@ public class ApplyPatchSynchronizationWizard extends PatchWizard implements
 		addPage(new PatchParsedPage());
 	}
 
+	public boolean isComplete() {
+		if (getPatch() == null || !getPatcher().isWorkspacePatch()
+				|| isTargetingInaccessibleProjects())
+			return false;
+		return true;
+	}
+
 	private boolean isTargetingInaccessibleProjects() {
 		DiffProject[] diffProjects = getPatcher().getDiffProjects();
 		if (diffProjects != null) {
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/DiffProjectResourceMapping.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/DiffProjectResourceMapping.java
index 376e9b8..eab387c 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/DiffProjectResourceMapping.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/DiffProjectResourceMapping.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/FilePatchResourceMapping.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/FilePatchResourceMapping.java
index 2795d5f..f774ec6 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/FilePatchResourceMapping.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/FilePatchResourceMapping.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/HunkResourceMapping.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/HunkResourceMapping.java
index 9bd50fc..0cfc760 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/HunkResourceMapping.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/HunkResourceMapping.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchAdapter.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchAdapter.java
index d8cc104..ef1a3e4 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchAdapter.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchLabelProvider.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchLabelProvider.java
index 38f903e..2ee1a21 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchWorkbenchLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
index 6803258..3ef827f 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
index 9748fd2..debda36 100644
--- a/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
+++ b/eclipse/plugins/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SaveableCompareEditorInput.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,10 +20,9 @@ import org.eclipse.core.runtime.*;
 import org.eclipse.jface.action.*;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
@@ -31,13 +30,10 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.team.internal.ui.*;
 import org.eclipse.team.internal.ui.history.CompareFileRevisionEditorInput;
-import org.eclipse.team.internal.ui.synchronize.LocalResourceSaveableComparison;
-import org.eclipse.team.internal.ui.synchronize.LocalResourceTypedElement;
 import org.eclipse.team.internal.ui.synchronize.EditableSharedDocumentAdapter.ISharedDocumentAdapterListener;
+import org.eclipse.team.internal.ui.synchronize.*;
 import org.eclipse.team.ui.mapping.SaveableComparison;
 import org.eclipse.ui.*;
-import org.eclipse.ui.actions.*;
-import org.eclipse.ui.keys.IBindingService;
 import org.eclipse.ui.services.IDisposable;
 
 /**
@@ -472,59 +468,13 @@ public abstract class SaveableCompareEditorInput extends CompareEditorInput impl
 		super.registerContextMenu(menu, selectionProvider);
 		final Saveable saveable = getSaveable();
 		if (saveable instanceof LocalResourceSaveableComparison) {
+			final ITypedElement element= getFileElement(getCompareInput(), this);
 			menu.addMenuListener(new IMenuListener() {
 				public void menuAboutToShow(IMenuManager manager) {
-					handleMenuAboutToShow(manager, saveable, selectionProvider);
+					SaveablesCompareEditorInput.handleMenuAboutToShow(manager, getContainer(), saveable, element, selectionProvider);
 				}
 			});
 		}
 	}
 	
-	/* package */ void handleMenuAboutToShow (IMenuManager manager, Saveable saveable, ISelectionProvider provider) {
-		if (provider instanceof ITextViewer) {
-			ITextViewer v = (ITextViewer) provider;
-			IDocument d = v.getDocument();
-			IDocument other = (IDocument)Utils.getAdapter(saveable, IDocument.class);
-			if (d == other) {
-				ITypedElement element = getFileElement(getCompareInput(), this);
-				if (element instanceof IResourceProvider) {
-					IResourceProvider rp = (IResourceProvider) element;
-					IResource resource = rp.getResource();
-					StructuredSelection selection = new StructuredSelection(resource);
-					IWorkbenchPart workbenchPart = getContainer().getWorkbenchPart();
-					if (workbenchPart != null) {
-						IWorkbenchSite ws = workbenchPart.getSite();
-						
-						MenuManager submenu1 =
-							new MenuManager(getShowInMenuLabel());
-						IContributionItem showInMenu = ContributionItemFactory.VIEWS_SHOW_IN.create(ws.getWorkbenchWindow());
-						submenu1.add(showInMenu);
-						manager.insertAfter("file", submenu1); //$NON-NLS-1$
-						MenuManager submenu2 =
-							new MenuManager(TeamUIMessages.OpenWithActionGroup_0);
-						submenu2.add(new OpenWithMenu(ws.getPage(), resource));
-						manager.insertAfter("file", submenu2); //$NON-NLS-1$
-						
-						OpenFileAction openFileAction = new OpenFileAction(ws.getPage());
-						openFileAction.selectionChanged(selection);
-						manager.insertAfter("file", openFileAction); //$NON-NLS-1$
-					}
-				}
-			}
-		}
-	}
-	
-	private String getShowInMenuLabel() {
-		String keyBinding= null;
-		
-		IBindingService bindingService= (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);
-		if (bindingService != null)
-			keyBinding= bindingService.getBestActiveBindingFormattedFor(IWorkbenchCommandConstants.NAVIGATE_SHOW_IN_QUICK_MENU);
-		
-		if (keyBinding == null)
-			keyBinding= ""; //$NON-NLS-1$
-		
-		return NLS.bind(TeamUIMessages.SaveableCompareEditorInput_0, keyBinding);
-	}
-
 }
diff --git a/eclipse/plugins/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java b/eclipse/plugins/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java
index d1c3a0d..0fe28d2 100644
--- a/eclipse/plugins/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java
+++ b/eclipse/plugins/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java
@@ -806,7 +806,7 @@ public class ProjectionDocument extends AbstractDocument {
 		Position[] segments= getSegments();
 		for (int i= 0; i < segments.length; i++) {
 			Segment segment= (Segment) segments[i];
-			if (segment.isDeleted() || (segment.getLength() == 0 && i < segments.length - 1)) {
+			if (segment.isDeleted() || (segment.getLength() == 0 && (i < segments.length - 1 || (i > 0 && segments[i - 1].isDeleted())))) {
 				try {
 					removePosition(fSegmentsCategory, segment);
 					fMasterDocument.removePosition(fFragmentsCategory, segment.fragment);
diff --git a/eclipse/plugins/org.eclipse.ui.browser/plugin.xml b/eclipse/plugins/org.eclipse.ui.browser/plugin.xml
index 24fa371..cb73929 100644
--- a/eclipse/plugins/org.eclipse.ui.browser/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.browser/plugin.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
-     All rights reserved. This program and the accompanying materials
-     are made available under the terms of the Eclipse Public License v1.0
-     which accompanies this distribution, and is available at
-     http://www.eclipse.org/legal/epl-v10.html
-    
-     Contributors:
+<?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
          IBM Corporation - initial API and implementation
           Martin Oberhuber (Wind River) - [292882] Default Browser on Solaris
  -->
@@ -255,5 +256,4 @@
             id="org.eclipse.ui.browser.elementFactory">
       </factory>
    </extension>
-
-</plugin>
+</plugin>
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ui.carbon/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.carbon/META-INF/MANIFEST.MF
index c5dce85..92cb22a 100644
--- a/eclipse/plugins/org.eclipse.ui.carbon/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.carbon/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.ui.carbon; singleton:=true
-Bundle-Version: 4.0.0.qualifier
+Bundle-Version: 4.0.100.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)"
 Bundle-Localization: fragment-carbon
diff --git a/eclipse/plugins/org.eclipse.ui.carbon/fragment-carbon.properties b/eclipse/plugins/org.eclipse.ui.carbon/fragment-carbon.properties
index 17bd88d..b608c3e 100644
--- a/eclipse/plugins/org.eclipse.ui.carbon/fragment-carbon.properties
+++ b/eclipse/plugins/org.eclipse.ui.carbon/fragment-carbon.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.cheatsheets/plugin.xml b/eclipse/plugins/org.eclipse.ui.cheatsheets/plugin.xml
index af3896f..feb0170 100644
--- a/eclipse/plugins/org.eclipse.ui.cheatsheets/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.cheatsheets/plugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
+<?eclipse version="3.0"?>
+<!--
      Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.ui.cocoa/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.cocoa/META-INF/MANIFEST.MF
index 18bbf9a..1b13459 100644
--- a/eclipse/plugins/org.eclipse.ui.cocoa/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.cocoa/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.ui.cocoa;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.2.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)"
 Bundle-Localization: fragment-cocoa
diff --git a/eclipse/plugins/org.eclipse.ui.cocoa/fragment-cocoa.properties b/eclipse/plugins/org.eclipse.ui.cocoa/fragment-cocoa.properties
index 4508d3a..3349f7c 100644
--- a/eclipse/plugins/org.eclipse.ui.cocoa/fragment-cocoa.properties
+++ b/eclipse/plugins/org.eclipse.ui.cocoa/fragment-cocoa.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2008 Adobe Systems, Inc. and others.
+# Copyright (c) 2008, 2009 Adobe Systems, Inc. and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.console/plugin.xml b/eclipse/plugins/org.eclipse.ui.console/plugin.xml
index ca30ab1..6fd8a38 100644
--- a/eclipse/plugins/org.eclipse.ui.console/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.console/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
index b036c00..aea898a 100644
--- a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
+++ b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
@@ -43,6 +43,7 @@ import org.eclipse.ui.console.IConsolePageParticipant;
 import org.eclipse.ui.console.IConsoleView;
 import org.eclipse.ui.console.IPatternMatchListener;
 import org.eclipse.ui.console.TextConsole;
+import org.eclipse.ui.progress.UIJob;
 import org.eclipse.ui.progress.WorkbenchJob;
 
 /**
@@ -356,8 +357,8 @@ public class ConsoleManager implements IConsoleManager {
 	public void warnOfContentChange(final IConsole console) {
 		if (!fWarnQueued) {
 			fWarnQueued = true;
-			ConsolePlugin.getStandardDisplay().asyncExec(new Runnable(){
-				public void run() {
+			Job job = new UIJob(ConsolePlugin.getStandardDisplay(), ConsoleMessages.ConsoleManager_consoleContentChangeJob) {
+				public IStatus runInUIThread(IProgressMonitor monitor) {
 					IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
 					if (window != null) {
 						IWorkbenchPage page= window.getActivePage();
@@ -369,8 +370,11 @@ public class ConsoleManager implements IConsoleManager {
 						} 
 					}	
 					fWarnQueued = false;
-				}			
-			});
+					return Status.OK_STATUS;
+				}
+			};
+			job.setSystem(true);
+			job.schedule();
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java
index eaf17b1..e6212af 100644
--- a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,8 @@ public class ConsoleMessages extends NLS {
 
 	public static String ConsoleManager_0;
 
+	public static String ConsoleManager_consoleContentChangeJob;
+
 	public static String ConsoleView_0;
 
 	public static String PinConsoleAction_0;
diff --git a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties
index 3d835a4..d873a37 100644
--- a/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties
+++ b/eclipse/plugins/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@ ConsoleDropDownAction_0=Select Console
 ConsoleDropDownAction_1=Display Selected Console
 
 ConsoleManager_0=An exception occurred during console notification
+ConsoleManager_consoleContentChangeJob=Console content change
 
 ConsoleView_0=No consoles to display at this time.
 
diff --git a/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/SourceViewerInformationControl.java b/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/SourceViewerInformationControl.java
index 0c6c559..5de5b32 100644
--- a/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/SourceViewerInformationControl.java
+++ b/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/SourceViewerInformationControl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,7 @@ import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.FontData;
 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.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -31,6 +32,8 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 
+import org.eclipse.core.runtime.Assert;
+
 import org.eclipse.jface.resource.JFaceResources;
 
 import org.eclipse.jface.text.BadLocationException;
@@ -73,6 +76,12 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 	private Label fSeparator;
 	/** The font of the optional status text label.*/
 	private Font fStatusTextFont;
+	/**
+	 * The color of the optional status text label or <code>null</code> if none.
+	 * 
+	 * @since 3.6
+	 */
+	private Color fStatusTextForegroundColor;
 	/** The maximal widget width. */
 	private int fMaxWidth;
 	/** The maximal widget height. */
@@ -167,8 +176,8 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 			GridData gd2= new GridData(GridData.FILL_VERTICAL | GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
 			fStatusField.setLayoutData(gd2);
 
-			// Regarding the color see bug 41128
-			fStatusField.setForeground(display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
+			fStatusTextForegroundColor= new Color(fStatusField.getDisplay(), blend(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB(), display.getSystemColor(SWT.COLOR_INFO_FOREGROUND).getRGB(), 0.56f));
+			fStatusField.setForeground(fStatusTextForegroundColor);
 
 			fStatusField.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
 		}
@@ -176,6 +185,32 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 		addDisposeListener(this);
 	}
 
+	/**
+	 * Returns an RGB that lies between the given foreground and background
+	 * colors using the given mixing factor. A <code>factor</code> of 1.0 will produce a
+	 * color equal to <code>fg</code>, while a <code>factor</code> of 0.0 will produce one
+	 * equal to <code>bg</code>.
+	 * @param bg the background color
+	 * @param fg the foreground color
+	 * @param factor the mixing factor, must be in [0,&nbsp;1]
+	 *
+	 * @return the interpolated color
+	 * @since 3.6
+	 */
+	private static RGB blend(RGB bg, RGB fg, float factor) {
+		// copy of org.eclipse.jface.internal.text.revisions.Colors#blend(..)
+		Assert.isLegal(bg != null);
+		Assert.isLegal(fg != null);
+		Assert.isLegal(factor >= 0f && factor <= 1f);
+		
+		float complement= 1f - factor;
+		return new RGB(
+				(int) (complement * bg.red + factor * fg.red),
+				(int) (complement * bg.green + factor * fg.green),
+				(int) (complement * bg.blue + factor * fg.blue)
+		);
+	}
+	
 	/*
 	 * @see org.eclipse.jface.text.IInformationControlExtension2#setInput(java.lang.Object)
 	 */
@@ -217,8 +252,11 @@ class SourceViewerInformationControl implements IInformationControl, IInformatio
 	public void widgetDisposed(DisposeEvent event) {
 		if (fStatusTextFont != null && !fStatusTextFont.isDisposed())
 			fStatusTextFont.dispose();
-
 		fStatusTextFont= null;
+		if (fStatusTextForegroundColor != null && !fStatusTextForegroundColor.isDisposed())
+			fStatusTextForegroundColor.dispose();
+		fStatusTextForegroundColor= null;
+		
 		fTextFont= null;
 		fShell= null;
 		fText= null;
diff --git a/eclipse/plugins/org.eclipse.ui.externaltools/plugin.xml b/eclipse/plugins/org.eclipse.ui.externaltools/plugin.xml
index faa0222..8360fda 100644
--- a/eclipse/plugins/org.eclipse.ui.externaltools/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.externaltools/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-    Copyright (c) 2005, 2009 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
index 16fd09e..b14427b 100644
--- a/eclipse/plugins/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
@@ -11,7 +11,6 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.ui.navigator.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.net;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.core.filesystem;bundle-version="1.3.0"
 Export-Package: org.eclipse.ui.internal.ide.application;x-internal:=true,
diff --git a/eclipse/plugins/org.eclipse.ui.ide.application/plugin.properties b/eclipse/plugins/org.eclipse.ui.ide.application/plugin.properties
index c900ecd..feb602a 100644
--- a/eclipse/plugins/org.eclipse.ui.ide.application/plugin.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide.application/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
+# Copyright (c) 2006, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/ResourcePerspective.java b/eclipse/plugins/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/ResourcePerspective.java
index 237618b..7e803c9 100644
--- a/eclipse/plugins/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/ResourcePerspective.java
+++ b/eclipse/plugins/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/ResourcePerspective.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,6 @@ package org.eclipse.ui.internal.ide.application;
 import org.eclipse.ui.IFolderLayout;
 import org.eclipse.ui.IPageLayout;
 import org.eclipse.ui.IPerspectiveFactory;
-import org.eclipse.ui.navigator.resources.ProjectExplorer;
 import org.eclipse.ui.wizards.newresource.BasicNewFileResourceWizard;
 import org.eclipse.ui.wizards.newresource.BasicNewFolderResourceWizard;
 
@@ -32,7 +31,7 @@ public class ResourcePerspective implements IPerspectiveFactory {
     }
 
     /**
-     * Defines the initial layout for a perspective.  
+     * Defines the initial layout for a perspective.
      *
      * Implementors of this method may add additional views to a
      * perspective.  The perspective already contains an editor folder
@@ -51,7 +50,7 @@ public class ResourcePerspective implements IPerspectiveFactory {
     }
 
     /**
-     * Defines the initial actions for a page.  
+     * Defines the initial actions for a page.
      * @param layout The layout we are filling
      */
     public void defineActions(IPageLayout layout) {
@@ -60,7 +59,7 @@ public class ResourcePerspective implements IPerspectiveFactory {
         layout.addNewWizardShortcut(BasicNewFileResourceWizard.WIZARD_ID);
 
         // Add "show views".
-        layout.addShowViewShortcut(ProjectExplorer.VIEW_ID);
+		layout.addShowViewShortcut(IPageLayout.ID_PROJECT_EXPLORER);
         layout.addShowViewShortcut(IPageLayout.ID_BOOKMARKS);
         layout.addShowViewShortcut(IPageLayout.ID_OUTLINE);
         layout.addShowViewShortcut(IPageLayout.ID_PROP_SHEET);
@@ -72,7 +71,7 @@ public class ResourcePerspective implements IPerspectiveFactory {
     }
 
     /**
-     * Defines the initial layout for a page.  
+     * Defines the initial layout for a page.
      * @param layout The layout we are filling
      */
     public void defineLayout(IPageLayout layout) {
@@ -82,7 +81,7 @@ public class ResourcePerspective implements IPerspectiveFactory {
         // Top left.
         IFolderLayout topLeft = layout.createFolder(
                 "topLeft", IPageLayout.LEFT, (float) 0.26, editorArea);//$NON-NLS-1$
-        topLeft.addView(ProjectExplorer.VIEW_ID);
+		topLeft.addView(IPageLayout.ID_PROJECT_EXPLORER);
         topLeft.addPlaceholder(IPageLayout.ID_BOOKMARKS);
 
         // Add a placeholder for the old navigator to maintain compatibility
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseResourceAction.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseResourceAction.java
index 1f5816e..ea199f1 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseResourceAction.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseResourceAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
index 2208c00..c0eb17f 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
@@ -48,16 +48,20 @@ import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.window.Window;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.IOverwriteQuery;
+import org.eclipse.ui.ide.dialogs.ImportTypeDialog;
 import org.eclipse.ui.ide.undo.AbstractWorkspaceOperation;
 import org.eclipse.ui.ide.undo.CopyResourcesOperation;
 import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
+import org.eclipse.ui.internal.ide.IDEInternalPreferences;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
 import org.eclipse.ui.internal.ide.StatusUtil;
@@ -68,6 +72,7 @@ import org.eclipse.ui.wizards.datatransfer.ImportOperation;
 
 import com.ibm.icu.text.MessageFormat;
 
+
 /**
  * Perform the copy of file and folder resources from the clipboard when paste
  * action is invoked.
@@ -739,15 +744,75 @@ public class CopyFilesAndFoldersOperation {
 	}
 
 	/**
-	 * Copies the given files and folders to the destination. The current Thread
-	 * is halted while the resources are copied using a
-	 * WorkspaceModifyOperation. This method should be called from the UI
-	 * Thread.
+	 * Depending on the 'Linked Resources' preferences it copies the given files and folders to the
+	 * destination or creates links or shows a dialog that lets the user choose. The current thread
+	 * is halted while the resources are copied using a {@link WorkspaceModifyOperation}. This
+	 * method should be called from the UI Thread.
 	 * 
-	 * @param fileNames
-	 *            names of the files to copy
-	 * @param destination
-	 *            destination to which files will be copied
+	 * @param fileNames names of the files to copy
+	 * @param destination destination to which files will be copied
+	 * @param dropOperation the drop operation ({@link DND#DROP_NONE}, {@link DND#DROP_MOVE}
+	 *            {@link DND#DROP_COPY}, {@link DND#DROP_LINK}, {@link DND#DROP_DEFAULT})
+	 * @see WorkspaceModifyOperation
+	 * @see Display#getThread()
+	 * @see Thread#currentThread()
+	 * @since 3.6
+	 */
+	public void copyOrLinkFiles(final String[] fileNames, IContainer destination, int dropOperation) {
+		IPreferenceStore store= IDEWorkbenchPlugin.getDefault().getPreferenceStore();
+		boolean targetIsVirtual= destination.isVirtual();
+		String dndPreference= store.getString(targetIsVirtual ? IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE : IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE);
+
+		int mode= ImportTypeDialog.IMPORT_NONE;
+		String variable= null;
+
+		//check if resource linking is disabled
+		if (ResourcesPlugin.getPlugin().getPluginPreferences().getBoolean(ResourcesPlugin.PREF_DISABLE_LINKING))
+			mode= ImportTypeDialog.IMPORT_COPY;
+		else {
+			if (dndPreference.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_PROMPT)) {
+				ImportTypeDialog dialog= new ImportTypeDialog(messageShell, dropOperation, fileNames, destination);
+				dialog.setResource(destination);
+				if (dialog.open() == Window.OK) {
+					mode= dialog.getSelection();
+					variable= dialog.getVariable();
+				}
+			} else if (dndPreference.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_MOVE_COPY)) {
+				mode= ImportTypeDialog.IMPORT_COPY;
+			} else if (dndPreference.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK)) {
+				mode= ImportTypeDialog.IMPORT_LINK;
+			} else if (dndPreference.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK_AND_VIRTUAL_FOLDER)) {
+				mode= ImportTypeDialog.IMPORT_VIRTUAL_FOLDERS_AND_LINKS;
+			}
+		}
+
+		switch (mode) {
+			case ImportTypeDialog.IMPORT_COPY:
+				copyFiles(fileNames, destination);
+				break;
+			case ImportTypeDialog.IMPORT_VIRTUAL_FOLDERS_AND_LINKS:
+				if (variable != null)
+					setRelativeVariable(variable);
+				createVirtualFoldersAndLinks(fileNames, destination);
+				break;
+			case ImportTypeDialog.IMPORT_LINK:
+				if (variable != null)
+					setRelativeVariable(variable);
+				linkFiles(fileNames, destination);
+				break;
+			case ImportTypeDialog.IMPORT_NONE:
+				break;
+		}
+
+	}
+
+	/**
+	 * Copies the given files and folders to the destination. The current Thread is halted while the
+	 * resources are copied using a WorkspaceModifyOperation. This method should be called from the
+	 * UI Thread.
+	 * 
+	 * @param fileNames names of the files to copy
+	 * @param destination destination to which files will be copied
 	 * @see WorkspaceModifyOperation
 	 * @see Display#getThread()
 	 * @see Thread#currentThread()
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java
index 9a4b564..28b5d2c 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyResourceAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
index 6bc44b2..f7649d5 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
@@ -130,7 +130,9 @@ public class FilteredResourcesSelectionDialog extends
 	 * @param container
 	 *            the container to select resources from, e.g. the workspace root
 	 * @param typesMask
-	 *            the types mask
+	 *            a mask specifying which resource types should be shown in the dialog.
+	 *            The mask should contain one or more of the resource type bit masks
+	 *            defined in {@link IResource#getType()}
 	 */
 	public FilteredResourcesSelectionDialog(Shell shell, boolean multi,
 			IContainer container, int typesMask) {
@@ -940,18 +942,25 @@ public class FilteredResourcesSelectionDialog extends
 				filenamePattern = stringPattern.substring(sep + 1, stringPattern.length());
 				if ("*".equals(filenamePattern)) //$NON-NLS-1$
 					filenamePattern= "**"; //$NON-NLS-1$
-				patternMatcher.setPattern(filenamePattern);
+				
 				if (sep > 0) {
+					if (filenamePattern.length() == 0) // relative patterns don't need a file name
+						filenamePattern= "**"; //$NON-NLS-1$
+						
 					String containerPattern = stringPattern.substring(0, sep);
-					if (!containerPattern.startsWith("" + IPath.SEPARATOR)) //$NON-NLS-1$
-						containerPattern = IPath.SEPARATOR + containerPattern;
-					this.containerPattern= new SearchPattern(SearchPattern.RULE_EXACT_MATCH | SearchPattern.RULE_PREFIX_MATCH | SearchPattern.RULE_PATTERN_MATCH);
-					this.containerPattern.setPattern(containerPattern);
+					
 					if (searchContainer != null) {
 						relativeContainerPattern = new SearchPattern(SearchPattern.RULE_EXACT_MATCH | SearchPattern.RULE_PATTERN_MATCH);
 						relativeContainerPattern.setPattern(searchContainer.getFullPath().append(containerPattern).toString());
 					}
+					
+					if (!containerPattern.startsWith("" + IPath.SEPARATOR)) //$NON-NLS-1$
+						containerPattern = IPath.SEPARATOR + containerPattern;
+					this.containerPattern= new SearchPattern(SearchPattern.RULE_EXACT_MATCH | SearchPattern.RULE_PREFIX_MATCH | SearchPattern.RULE_PATTERN_MATCH);
+					this.containerPattern.setPattern(containerPattern);
 				}
+				patternMatcher.setPattern(filenamePattern);
+				
 			} else {
 				filenamePattern= stringPattern;
 			}
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/NewFolderDialog.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/NewFolderDialog.java
index 47573dd..86199d4 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/NewFolderDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/NewFolderDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFileCreationPage.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFileCreationPage.java
index bfe9a87..94f2805 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFileCreationPage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFileCreationPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -209,7 +209,15 @@ public class WizardNewFileCreationPage extends WizardPage implements Listener {
 						IResource resource = root.findMember(path);
 						if (resource != null && resource instanceof IContainer) {
 							String resourceName = resourceGroup.getResource();
-							return ((IContainer) resource).getFile(Path.fromOSString(resourceName.length() > 0 ? resourceName:"foo")); //$NON-NLS-1$
+							if (resourceName.length() > 0) {
+								try {
+									return ((IContainer) resource).getFile(Path
+											.fromOSString(resourceName));
+								} catch (IllegalArgumentException e) {
+									// continue below.
+								}
+							}
+							return resource;
 						}
 						return resource;
 					}
@@ -376,26 +384,28 @@ public class WizardNewFileCreationPage extends WizardPage implements Listener {
 		if (linkTargetPath != null) {
 			URI resolvedPath = newFileHandle.getPathVariableManager().resolveURI(linkTargetPath);
 			try {
-				IFileStore store = EFS.getStore(resolvedPath);
-				if (!store.fetchInfo().exists()) {
-					MessageDialog dlg = new MessageDialog(getContainer().getShell(),
-							IDEWorkbenchMessages.WizardNewFileCreationPage_createLinkLocationTitle,
-							null, 
-							NLS.bind(
-									IDEWorkbenchMessages.WizardNewFileCreationPage_createLinkLocationQuestion, linkTargetPath),
-							MessageDialog.QUESTION_WITH_CANCEL,
-							new String[] { IDialogConstants.YES_LABEL,
-				                    IDialogConstants.NO_LABEL,
-				                    IDialogConstants.CANCEL_LABEL },
-							0);
-					int result = dlg.open();
-					if (result == Window.OK) {
-						store.getParent().mkdir(0, new NullProgressMonitor());
-						OutputStream stream = store.openOutputStream(0, new NullProgressMonitor());
-						stream.close();
+				if (resolvedPath.getScheme() != null && resolvedPath.getSchemeSpecificPart() != null) {
+					IFileStore store = EFS.getStore(resolvedPath);
+					if (!store.fetchInfo().exists()) {
+						MessageDialog dlg = new MessageDialog(getContainer().getShell(),
+								IDEWorkbenchMessages.WizardNewFileCreationPage_createLinkLocationTitle,
+								null, 
+								NLS.bind(
+										IDEWorkbenchMessages.WizardNewFileCreationPage_createLinkLocationQuestion, linkTargetPath),
+								MessageDialog.QUESTION_WITH_CANCEL,
+								new String[] { IDialogConstants.YES_LABEL,
+					                    IDialogConstants.NO_LABEL,
+					                    IDialogConstants.CANCEL_LABEL },
+								0);
+						int result = dlg.open();
+						if (result == Window.OK) {
+							store.getParent().mkdir(0, new NullProgressMonitor());
+							OutputStream stream = store.openOutputStream(0, new NullProgressMonitor());
+							stream.close();
+						}
+						if (result == 2)
+							return null;
 					}
-					if (result == 2)
-						return null;
 				}
 			} catch (CoreException e) {
 				MessageDialog
diff --git a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
index b54096a..363ff10 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
@@ -110,7 +110,7 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 	private CreateLinkedResourceGroup linkedResourceGroup;
 
 	private Composite advancedComposite;
-
+	
 	private Composite linkedResourceComposite;
 	private Composite linkedGroupComposite;
 
@@ -200,8 +200,14 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 							IResource resource = root.findMember(path);
 							if (resource != null && resource instanceof IContainer) {
 								String resourceName = resourceGroup.getResource();
-								if (resourceName.length() > 0)
-									return ((IContainer) resource).getFolder(Path.fromOSString(resourceName));
+								if (resourceName.length() > 0) {
+									try {
+										return ((IContainer) resource).getFolder(Path
+												.fromOSString(resourceName));
+									} catch (IllegalArgumentException e) {
+										// continue below.
+									}
+								}
 								return resource;
 							}
 							return resource;
@@ -546,6 +552,7 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 			shell.setSize(shellSize.x, shellSize.y - linkedResourceGroupHeight);
 			advancedButton.setText(IDEWorkbenchMessages.showAdvanced);
 		} else {
+			Point oldCompositeSize = advancedComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
 			
 			ImageDescriptor folderDescriptor = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
 	                ISharedImages.IMG_OBJ_FOLDER);
@@ -614,6 +621,7 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 			linkedGroupComposite = new Composite(advancedComposite, 0);
 			data = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
 			data.horizontalIndent = indent;
+			linkedGroupComposite.setFont(advancedComposite.getFont());
 			linkedGroupComposite.setLayoutData(data);
 
 			GridLayout layout = new GridLayout();
@@ -629,7 +637,6 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 				linkedResourceGroupHeight = groupSize.y;
 			}
 			linkedResourceGroup.setEnabled(false);
-			shell.setSize(shellSize.x, shellSize.y + linkedResourceGroupHeight);
 
 			filterButton = new Button(advancedComposite, SWT.PUSH);
 			filterButton.setFont(advancedComposite.getFont());
@@ -645,8 +652,12 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
 			});
 
 			setupLinkedResourceTarget();
-			composite.layout();
 			advancedButton.setText(IDEWorkbenchMessages.hideAdvanced);
+
+			Point newCompositeSize = advancedComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+			linkedResourceGroupHeight = newCompositeSize.y - oldCompositeSize.y;
+			getShell().setSize(shellSize.x, shellSize.y + linkedResourceGroupHeight);
+			composite.layout(true);
 		}
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.ide/icons/full/eview16/pview.gif b/eclipse/plugins/org.eclipse.ui.ide/icons/full/eview16/pview.gif
index 4aa54a6..e3af1ba 100644
Binary files a/eclipse/plugins/org.eclipse.ui.ide/icons/full/eview16/pview.gif and b/eclipse/plugins/org.eclipse.ui.ide/icons/full/eview16/pview.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui.ide/plugin.properties b/eclipse/plugins/org.eclipse.ui.ide/plugin.properties
index d473b35..66c79b4 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/plugin.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/plugin.xml b/eclipse/plugins/org.eclipse.ui.ide/plugin.xml
index 5294c1c..3c81979 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.ide/plugin.xml
@@ -700,10 +700,9 @@
             id="org.eclipse.ui.propertypages.resource.filters"
             name="%PropertyPages.resource.filters">
          <enabledWhen>
-            <or>
-            	<adapt type="org.eclipse.core.resources.IProject"/>
-           		<adapt type="org.eclipse.core.resources.IFolder"/>
-           	</or>
+            <adapt type="org.eclipse.core.resources.IResource">
+            	<instanceof value="org.eclipse.core.resources.IContainer"/>
+            </adapt>
          </enabledWhen>
       </page>
       <page
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/ImportTypeDialog.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/ImportTypeDialog.java
index 05b19a7..275d5f5 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/ImportTypeDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/ImportTypeDialog.java
@@ -17,37 +17,34 @@ import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.TrayDialog;
 import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.dnd.DND;
+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.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
 import org.eclipse.ui.internal.ide.IDEInternalPreferences;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
 import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
+import org.eclipse.ui.internal.ide.dialogs.LinkedResourcesPreferencePage;
 import org.eclipse.ui.internal.ide.dialogs.RelativePathVariableGroup;
-import org.eclipse.ui.internal.ide.misc.OverlayIcon;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
+
 
 /**
- * Dialog to let the user customise how files and resources are created in a project 
+ * Dialog to let the user customise how files and resources are created in a project
  * hierarchy after the user drag and drop items on a workspace container.
  * 
- * Files and folders can be created either by copying the source objects, creating 
+ * Files and folders can be created either by copying the source objects, creating
  * linked resources, and/or creating virtual folders.
  * @noextend This class is not intended to be subclassed by clients.
  * @since 3.6
@@ -80,31 +77,20 @@ public class ImportTypeDialog extends TrayDialog {
 	 */
 	public final static int IMPORT_VIRTUAL_FOLDERS_AND_LINKS = 2;
 	
-	private Button alwaysPerformThisOperation = null;
-
-
 	private Button copyButton = null;
 
 	private int currentSelection;
-	private Image fileImage;
-
-	private Image folderAndFileImage;
 
 	private Button linkButton = null;
 
-	private Image linkedFileImage;
-
-	private Image linkedFolderAndFileImage;
-
 	private Button moveButton = null;
 
 	private int operationMask;
 	private String preferredVariable;
 	private IResource receivingResource = null;
 	private Button shadowCopyButton = null;
-	private boolean targetIsVirtual;
 	private String variable = null;
-	private Image virtualFolderAndFileImage;
+	
 	private RelativePathVariableGroup relativePathVariableGroup;
 	
 	/**
@@ -122,11 +108,11 @@ public class ImportTypeDialog extends TrayDialog {
 	 */
 	public ImportTypeDialog(Shell shell, int dropOperation,
 			IResource[] sources, IContainer target) {
-		this(shell, selectAppropriateMask(dropOperation, sources, target), RelativePathVariableGroup.getPreferredVariable(sources, target), target.isVirtual());
+		this(shell, selectAppropriateMask(dropOperation, sources, target), RelativePathVariableGroup.getPreferredVariable(sources, target));
 	}
 	
 	/**
-	 * Creates the Import Type Dialog when files are dragged and dropped from the 
+	 * Creates the Import Type Dialog when files are dragged and dropped from the
 	 * operating system's shell (Windows Explorer on Windows Platform, for example).
 	 * 
 	 * @param shell
@@ -139,19 +125,18 @@ public class ImportTypeDialog extends TrayDialog {
 	 * 		The target container onto which the files were dropped
 	 */
 	public ImportTypeDialog(Shell shell, int dropOperation, String[] names, IContainer target) {
-		this(shell, selectAppropriateMask(dropOperation, names, target), RelativePathVariableGroup.getPreferredVariable(names, target), target.isVirtual());
+		this(shell, selectAppropriateMask(dropOperation, names, target), RelativePathVariableGroup.getPreferredVariable(names, target));
 	}
 	
 	/**
 	 * @param parentShell
 	 * @param operationMask
 	 */
-	private ImportTypeDialog(Shell parentShell, int operationMask, String preferredVariable, boolean targetIsVirtual) {
+	private ImportTypeDialog(Shell parentShell, int operationMask, String preferredVariable) {
 		super(parentShell);
 		
 		this.preferredVariable = preferredVariable;
 		this.operationMask = operationMask;
-		this.targetIsVirtual = targetIsVirtual;
 		currentSelection = 0;
 		String tmp = readContextPreference(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_TYPE);
 		if (tmp.length() > 0)
@@ -163,39 +148,7 @@ public class ImportTypeDialog extends TrayDialog {
 			else
 				currentSelection = IMPORT_MOVE;
 		}
-		ImageDescriptor fileDescriptor = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
-                ISharedImages.IMG_OBJ_FILE);
-		ImageDescriptor folderDescriptor = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
-                ISharedImages.IMG_OBJ_FOLDER);
-
-		ImageDescriptor[][] linkedResourceOverlayMap = new ImageDescriptor[4][1];
-		linkedResourceOverlayMap[1]= new ImageDescriptor[] {AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-		"$nl$/icons/full/ovr16/link_ovr.gif")}; //$NON-NLS-1$
-		
-		CompositeImageDescriptor linkedFileDescriptor = new OverlayIcon(fileDescriptor, linkedResourceOverlayMap, new Point(16, 16)); 
-
-		CompositeImageDescriptor linkedFolderDescriptor = new OverlayIcon(folderDescriptor, linkedResourceOverlayMap, new Point(16, 16)); 
-
-		ImageDescriptor[][] virtualFolderOverlayMap = new ImageDescriptor[4][1];
-		virtualFolderOverlayMap[1]= new ImageDescriptor[] {AbstractUIPlugin.imageDescriptorFromPlugin(
-				IDEWorkbenchPlugin.IDE_WORKBENCH,
-			"$nl$/icons/full/ovr16/virt_ovr.gif")}; //$NON-NLS-1$
-		CompositeImageDescriptor virtualFolderDescriptor = new OverlayIcon(folderDescriptor, virtualFolderOverlayMap, new Point(16, 16)); 
-
-		fileImage = fileDescriptor.createImage();
-		
-		linkedFileImage = linkedFileDescriptor.createImage();
-
-		CompositeImageDescriptor desc = new AlignedCompositeImageDescriptor(fileDescriptor, folderDescriptor);
-		folderAndFileImage = desc.createImage();
 
-		desc = new AlignedCompositeImageDescriptor(linkedFileDescriptor, virtualFolderDescriptor);
-		virtualFolderAndFileImage = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(linkedFileDescriptor, linkedFolderDescriptor);
-		linkedFolderAndFileImage = desc.createImage();
-		
 		IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
 		if (store.getBoolean(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_RELATIVE))
 			variable = preferredVariable;
@@ -205,11 +158,6 @@ public class ImportTypeDialog extends TrayDialog {
 	 * @see org.eclipse.jface.dialogs.TrayDialog#close()
 	 */
 	public boolean close() {
-		fileImage.dispose();
-		linkedFileImage.dispose();
-		folderAndFileImage.dispose();
-		virtualFolderAndFileImage.dispose();
-		linkedFolderAndFileImage.dispose();
 		return super.close();
 	}
 	
@@ -222,43 +170,13 @@ public class ImportTypeDialog extends TrayDialog {
 	}
 	
 	/**
-	 * Get the selected variable if the selection is either IMPORT_VIRTUAL_FOLDERS_AND_LINKS or IMPORT_LINK 
+	 * Get the selected variable if the selection is either IMPORT_VIRTUAL_FOLDERS_AND_LINKS or IMPORT_LINK
 	 * @return The currently selected variable, or AUTOMATIC or ABSOLUTE_PATH
 	 */
 	public String getVariable() {
 		return variable;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.MessageDialog#open()
-	 */
-	public int open() {
-		IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
-		
-		String mode = store.getString(targetIsVirtual? IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE:IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE);
-
-		if (mode.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_PROMPT))
-			return super.open();
-		if (mode.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_MOVE_COPY) && hasFlag(IMPORT_COPY)) {
-			this.currentSelection = IMPORT_COPY;
-			return Window.OK;
-		}
-		if (mode.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_MOVE_COPY) && hasFlag(IMPORT_MOVE)) {
-			this.currentSelection = IMPORT_MOVE;
-			return Window.OK;
-		}
-		if (mode.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK) && hasFlag(IMPORT_LINK)) {
-			this.currentSelection = IMPORT_LINK;
-			return Window.OK;
-		}
-		if (mode.equals(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK_AND_VIRTUAL_FOLDER) && hasFlag(IMPORT_VIRTUAL_FOLDERS_AND_LINKS)) {
-			this.currentSelection = IMPORT_VIRTUAL_FOLDERS_AND_LINKS;
-			return Window.OK;
-		}
-
-		return super.open();
-	}
-	
 	/** Set the project that is the destination of the import operation
 	 * @param resource
 	 */
@@ -331,22 +249,6 @@ public class ImportTypeDialog extends TrayDialog {
 
 			IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
 			store.putValue(IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_RELATIVE, Boolean.toString(variable != null));
-			if (alwaysPerformThisOperation.getSelection()) {
-				String mode = IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_PROMPT;
-				switch(currentSelection) {
-				case IMPORT_COPY:
-				case IMPORT_MOVE:
-					mode = IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_MOVE_COPY;
-					break;
-				case IMPORT_LINK:
-					mode = IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK;
-					break;
-				case IMPORT_VIRTUAL_FOLDERS_AND_LINKS:
-					mode = IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK_AND_VIRTUAL_FOLDER;
-					break;
-				}
-				store.putValue(targetIsVirtual? IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE:IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE, mode);
-			}
 		}
 		super.buttonPressed(buttonId);
 	}
@@ -368,6 +270,7 @@ public class ImportTypeDialog extends TrayDialog {
 		Composite composite = new Composite(parent, 0);
 		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
  		composite.setLayoutData(gridData);
+ 		composite.setFont(parent.getFont());
 
 		
 		GridLayout layout = new GridLayout();
@@ -399,8 +302,7 @@ public class ImportTypeDialog extends TrayDialog {
 			copyButton.setLayoutData(gridData);
 			copyButton.setData(new Integer(IMPORT_COPY));
 			copyButton.addSelectionListener(listener);
-			if (hasFlag(IMPORT_VIRTUAL_FOLDERS_AND_LINKS | IMPORT_LINK))
-				copyButton.setImage(hasFlag(IMPORT_FILES_ONLY) ? fileImage:folderAndFileImage);
+			copyButton.setFont(parent.getFont());
 		}
 		
 		if (hasFlag(IMPORT_MOVE)) {
@@ -410,6 +312,7 @@ public class ImportTypeDialog extends TrayDialog {
 			moveButton.setLayoutData(gridData);
 			moveButton.setData(new Integer(IMPORT_MOVE));
 			moveButton.addSelectionListener(listener);
+			moveButton.setFont(parent.getFont());
 		}
 
 		if (hasFlag(IMPORT_LINK) && !linkIsOnlyChoice) {
@@ -419,7 +322,7 @@ public class ImportTypeDialog extends TrayDialog {
 			linkButton.setLayoutData(gridData);
 			linkButton.setData(new Integer(IMPORT_LINK));
 			linkButton.addSelectionListener(listener);
-			linkButton.setImage(hasFlag(IMPORT_FILES_ONLY) ? linkedFileImage:linkedFolderAndFileImage);
+			linkButton.setFont(parent.getFont());
 		}
 
 		if (hasFlag(IMPORT_VIRTUAL_FOLDERS_AND_LINKS) && !hasFlag(IMPORT_FILES_ONLY)) {
@@ -429,7 +332,7 @@ public class ImportTypeDialog extends TrayDialog {
 			shadowCopyButton.setLayoutData(gridData);
 			shadowCopyButton.setData(new Integer(IMPORT_VIRTUAL_FOLDERS_AND_LINKS));
 			shadowCopyButton.addSelectionListener(listener);
-			shadowCopyButton.setImage(virtualFolderAndFileImage);
+			shadowCopyButton.setFont(parent.getFont());
 		}
 
 		if (hasFlag(IMPORT_VIRTUAL_FOLDERS_AND_LINKS | IMPORT_LINK)) {
@@ -445,9 +348,25 @@ public class ImportTypeDialog extends TrayDialog {
 				}
 			});
 			
+			int groupIndent = 0;
+			
+			if (!linkIsOnlyChoice) {
+				Button tmp = new Button(composite, SWT.CHECK);
+				tmp.setText("."); //$NON-NLS-1$
+				groupIndent = tmp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+				tmp.dispose();
+				
+				Label tmpLabel = new Label(composite, SWT.NONE);
+				tmpLabel.setText("."); //$NON-NLS-1$
+				groupIndent -= tmpLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+				tmpLabel.dispose();
+			}
+			
 			Composite variableGroup = new Composite(composite, 0);
 			gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+			gridData.horizontalIndent = groupIndent;
 			variableGroup.setLayoutData(gridData);
+			variableGroup.setFont(parent.getFont());
 
 			layout = new GridLayout();
 			layout.numColumns = 2;
@@ -466,20 +385,37 @@ public class ImportTypeDialog extends TrayDialog {
 			currentSelection = IMPORT_LINK;
 			parent.getShell().setText(IDEWorkbenchMessages.ImportTypeDialog_titleFilesLinking);
 		}
-		alwaysPerformThisOperation = new Button(parent, SWT.CHECK);
-		alwaysPerformThisOperation.setText(linkIsOnlyChoice? IDEWorkbenchMessages.ImportTypeDialog_alwaysUseLocationWhenLinkingFiles: IDEWorkbenchMessages.ImportTypeDialog_alwaysPerformThisOperation);
-		gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-		gridData.horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		alwaysPerformThisOperation.setLayoutData(gridData);
-
+		createLinkControl(parent);
 		refreshSelection();
 		return composite;
 	}
 
+	private Control createLinkControl(Composite composite) {
+		Link link= new Link(composite, SWT.WRAP | SWT.RIGHT);
+		link.setText(IDEWorkbenchMessages.ImportTypeDialog_configureSettings);
+		link.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				openSettingsPage();
+			}
+		});
+		GridData gridData= new GridData(GridData.FILL, GridData.CENTER, true, false);
+		gridData.horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+		link.setLayoutData(gridData);
+		link.setFont(composite.getFont());
+
+		return link;
+	}
+
+	protected void openSettingsPage() {
+		String prefID = LinkedResourcesPreferencePage.PREF_ID;
+		PreferencesUtil.createPreferenceDialogOn(getShell(), prefID, new String[] {prefID}, null).open();
+	}
+
 	protected Control createMessageArea(Composite parent) {
 		Composite composite = new Composite(parent, 0);
 		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
  		composite.setLayoutData(gridData);
+		composite.setFont(parent.getFont());
 
 		
 		GridLayout layout = new GridLayout();
@@ -494,6 +430,7 @@ public class ImportTypeDialog extends TrayDialog {
 		// create message
 		if (message != null) {
 			Label messageLabel = new Label(composite, SWT.WRAP);
+			messageLabel.setFont(parent.getFont());
 			messageLabel.setText(message);
 			gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
 			messageLabel.setLayoutData(gridData);
@@ -567,31 +504,4 @@ public class ImportTypeDialog extends TrayDialog {
 			mask |= ImportTypeDialog.IMPORT_FILES_ONLY;
 		return mask;
 	}
-
-	private class AlignedCompositeImageDescriptor extends CompositeImageDescriptor {
-
-		private int SPACE = 4;
-		
-		ImageDescriptor first, second;
-		AlignedCompositeImageDescriptor(ImageDescriptor first, ImageDescriptor second) {
-			this.first = first;
-			this.second = second;
-		}
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int)
-		 */
-		protected void drawCompositeImage(int width, int height) {
-            drawImage(first.getImageData(), 0, 0);
-            drawImage(second.getImageData(), first.getImageData().width + SPACE, 0);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize()
-		 */
-		protected Point getSize() {
-			return new Point(first.getImageData().width + second.getImageData().width + SPACE, 
-					Math.max(first.getImageData().height, second.getImageData().height));
-		}
-		
-	}
 }
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java
index 128564e..05c529d 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java
@@ -88,6 +88,7 @@ public final class PathVariableSelectionDialog extends SelectionDialog {
                         updateExtendButtonState();
                     }
                 });
+        pathVariablesGroup.setSaveVariablesOnChange(true);
         setShellStyle(getShellStyle() | SWT.SHEET);
     }
 
@@ -99,33 +100,31 @@ public final class PathVariableSelectionDialog extends SelectionDialog {
         if (buttonId == EXTEND_ID) {
             PathVariablesGroup.PathVariableElement selection = pathVariablesGroup
                     .getSelection()[0];
-			if (currentResource != null) {
-				FileFolderSelectionDialog dialog = new FileFolderSelectionDialog(
-						getShell(), false, variableType);
-				dialog
-						.setTitle(IDEWorkbenchMessages.PathVariableSelectionDialog_ExtensionDialog_title);
-				dialog
-						.setMessage(NLS
-								.bind(
-										IDEWorkbenchMessages.PathVariableSelectionDialog_ExtensionDialog_description,
-										selection.name));
-				// XXX This only works for variables that refer to local file
-				// system locations
-				IPath selectionPath = selection.path;
-				if (currentResource != null)
-					selectionPath = URIUtil.toPath(currentResource.getPathVariableManager()
-							.resolveURI(URIUtil.toURI(selectionPath)));
-	            try {
-						dialog.setInput(EFS.getStore(URIUtil.toURI(selectionPath)));
-				} catch (CoreException e) {
-					ErrorDialog.openError(getShell(), null, null, e.getStatus());
-				}
-	            if (dialog.open() == Window.OK
-	                    && pathVariablesGroup.performOk()) {
-	                setExtensionResult(selection, (IFileStore) dialog.getResult()[0]);
-	                super.okPressed();
-	            }
+			FileFolderSelectionDialog dialog = new FileFolderSelectionDialog(
+					getShell(), false, variableType);
+			dialog
+					.setTitle(IDEWorkbenchMessages.PathVariableSelectionDialog_ExtensionDialog_title);
+			dialog
+					.setMessage(NLS
+							.bind(
+									IDEWorkbenchMessages.PathVariableSelectionDialog_ExtensionDialog_description,
+									selection.name));
+			// XXX This only works for variables that refer to local file
+			// system locations
+			IPath selectionPath = selection.path;
+			if (currentResource != null)
+				selectionPath = URIUtil.toPath(currentResource.getPathVariableManager()
+						.resolveURI(URIUtil.toURI(selectionPath)));
+            try {
+					dialog.setInput(EFS.getStore(URIUtil.toURI(selectionPath)));
+			} catch (CoreException e) {
+				ErrorDialog.openError(getShell(), null, null, e.getStatus());
 			}
+            if (dialog.open() == Window.OK
+                    && pathVariablesGroup.performOk()) {
+                setExtensionResult(selection, (IFileStore) dialog.getResult()[0]);
+                super.okPressed();
+            }
         } else {
 			super.buttonPressed(buttonId);
 		}
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/UIResourceFilterDescription.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/UIResourceFilterDescription.java
index 0ccf1f9..496602d 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/UIResourceFilterDescription.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/UIResourceFilterDescription.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEPreferenceInitializer.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEPreferenceInitializer.java
index 7fbd2ea..279d539 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEPreferenceInitializer.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEPreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
index c53f1a4..c9ca7a8 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java
@@ -61,7 +61,8 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String ResourceFilterPage_columnFilterTarget;
 	public static String ResourceFilterPage_columnFilterPattern;
 	public static String ResourceFilterPage_applyRecursivelyToFolderStructure;
-	public static String ResourceFilterPage_condition;
+	public static String ResourceFilterPage_recursive;
+	public static String ResourceFilterPage_details;
 	public static String ResourceFilterPage_caseSensitive;
 	public static String ResourceFilterPage_regularExpression;
 	public static String ResourceFilterPage_multiMatcher_Matcher;
@@ -77,8 +78,8 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String ResourceFilterPage_files;
 	public static String ResourceFilterPage_folders;
 	public static String ResourceFilterPage_editFilterDialogTitle;
-	public static String ResourceFilterPage_newFilterDialogTitleIncludeOnly;
-	public static String ResourceFilterPage_newFilterDialogTitleExcludeAll;
+	public static String ResourceFilterPage_newFilterDialogTitleFolder;
+	public static String ResourceFilterPage_newFilterDialogTitleProject;
 	public static String ResourceFilterPage_addSubFilterActionLabel;
 	public static String ResourceFilterPage_addSubFilterGroupActionLabel;
 	public static String ResourceFilterPage_removeFilterActionLabel;
@@ -519,7 +520,11 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String LinkedResourcesPreference_dragAndDropVirtualFolderHandlingMessage;
 	public static String LinkedResourcesPreference_link;
 	public static String linkedResourcesPreference_copy;
+	public static String LinkedResourcesPreference_promptVirtual;
 	public static String LinkedResourcesPreference_linkAndVirtualFolder;
+	public static String LinkedResourcesPreference_linkVirtual;
+	public static String linkedResourcesPreference_copyVirtual;
+	public static String LinkedResourcesPreference_linkAndVirtualFolderVirtual;
 
 	// The following six keys are marked as unused by the NLS search, but they are indirectly used
 	// and should be removed.
@@ -659,6 +664,8 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String LinkedResourceEditor_unableToFindCommonPathSegments;
 	public static String LinkedResourceEditor_convertAbsolutePathLocations;	
 	public static String LinkedResourceEditor_descriptionBlock;
+	public static String LinkedResourceEditor_convertTitle;
+	public static String LinkedResourceEditor_convertMessage;
 	
 	// ==============================================================================
 	// Editors
@@ -764,6 +771,8 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String PathVariablesBlock_nameColumn;
 	public static String PathVariablesBlock_valueColumn;
 
+	public static String ResourceFilterEditDialog_title;
+
 	public static String PathVariableSelectionDialog_title;
 	public static String PathVariableSelectionDialog_extendButton;
 	public static String PathVariableSelectionDialog_ExtensionDialog_title;
@@ -786,7 +795,7 @@ public class IDEWorkbenchMessages extends NLS {
 	public static String ImportTypeDialog_importElementsAsTooltipSet;
 	public static String ImportTypeDialog_editVariables;
 	public static String ImportTypeDialog_alwaysPerformThisOperation;
-	public static String ImportTypeDialog_alwaysUseLocationWhenLinkingFiles;
+	public static String ImportTypeDialog_configureSettings;
 
 	// ==============================================================================
 	// Editor Framework
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
index cb25c1f..9dc0408 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IIDEHelpContextIds.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IIDEHelpContextIds.java
index 9573cbc..c8ff9b5 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IIDEHelpContextIds.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IIDEHelpContextIds.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -173,11 +173,14 @@ public interface IIDEHelpContextIds {
     public static final String PROJECT_REFERENCE_PROPERTY_PAGE = PREFIX
             + "project_reference_property_page_context"; //$NON-NLS-1$
 
-    public static final String RESOURCE_FILTER_PROPERTY_PAGE = PREFIX
-    + "resource_filter_property_page_context"; //$NON-NLS-1$
+	public static final String RESOURCE_FILTER_PROPERTY_PAGE = PREFIX
+			+ "resource_filter_property_page_context"; //$NON-NLS-1$
 
-    public static final String EDIT_RESOURCE_FILTER_PROPERTY_PAGE = PREFIX
-    + "edit_resource_filter_property_page_context"; //$NON-NLS-1$
+	public static final String EDIT_RESOURCE_FILTER_PROPERTY_PAGE = PREFIX
+			+ "edit_resource_filter_property_page_context"; //$NON-NLS-1$
+
+	public static final String EDIT_RESOURCE_FILTER_DIALOG = PREFIX
+			+ "edit_resource_filter_dialog_context"; //$NON-NLS-1$
 
     public static final String RESOURCE_INFO_PROPERTY_PAGE = PREFIX
             + "resource_info_property_page_context"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ResourceDragAndDropEditor.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ResourceDragAndDropEditor.java
index 7e75d4a..7a4df72 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ResourceDragAndDropEditor.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ResourceDragAndDropEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,6 +28,7 @@ public class ResourceDragAndDropEditor {
 
 	class PreferenceGroup
 	{
+		Group group;
 		String preferenceKey;
 		String title;
 		String[] labels;
@@ -43,7 +44,7 @@ public class ResourceDragAndDropEditor {
 		
 		public void createControl(Composite parent) {
 			Font font = parent.getFont();
-			Group group = new Group(parent, SWT.NONE);
+			group = new Group(parent, SWT.NONE);
 			GridData data = new GridData(GridData.FILL_HORIZONTAL);
 			group.setLayoutData(data);
 			GridLayout layout = new GridLayout();
@@ -116,6 +117,18 @@ public class ResourceDragAndDropEditor {
 			IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
 			store.putValue(preferenceKey, getSelection());
 		}
+
+		/**
+		 * @param enableLinking
+		 */
+		public void setEnabled(boolean enableLinking) {
+			group.setEnabled(enableLinking);
+			for (int i = 0; i < labels.length; i++) {
+				if (buttons[i] != null && !buttons[i].isDisposed())
+					buttons[i].setEnabled(enableLinking);
+			}
+			
+		}
 	}
 	
 	PreferenceGroup folderPref;
@@ -142,9 +155,9 @@ public class ResourceDragAndDropEditor {
 		virtualFolderPref = new PreferenceGroup(IDEWorkbenchMessages.LinkedResourcesPreference_dragAndDropVirtualFolderHandlingMessage,
 				IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE,
 				new String[] {
-				IDEWorkbenchMessages.Prompt,
-				IDEWorkbenchMessages.LinkedResourcesPreference_link, 
-				IDEWorkbenchMessages.LinkedResourcesPreference_linkAndVirtualFolder },
+				IDEWorkbenchMessages.LinkedResourcesPreference_promptVirtual,
+				IDEWorkbenchMessages.LinkedResourcesPreference_linkVirtual, 
+				IDEWorkbenchMessages.LinkedResourcesPreference_linkAndVirtualFolderVirtual },
 				new String[] {IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_PROMPT,
 				IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK,
 				IDEInternalPreferences.IMPORT_FILES_AND_FOLDERS_MODE_LINK_AND_VIRTUAL_FOLDER});
@@ -189,4 +202,15 @@ public class ResourceDragAndDropEditor {
 		folderPref.store();
 		virtualFolderPref.store();
 	}
+
+	/**
+     * Sets the enabled state of the group's widgets.
+     * Does nothing if called prior to calling <code>createContents</code>.
+
+	 * @param enableLinking
+	 */
+	public void setEnabled(boolean enableLinking) {
+		folderPref.setEnabled(enableLinking);
+		virtualFolderPref.setEnabled(enableLinking);
+	}
 }
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/WorkbenchActionBuilder.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/WorkbenchActionBuilder.java
index 9b33fb0..75e9918 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/WorkbenchActionBuilder.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/WorkbenchActionBuilder.java
@@ -45,10 +45,10 @@ import org.eclipse.ui.IWorkbenchCommandConstants;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 import org.eclipse.ui.actions.BuildAction;
 import org.eclipse.ui.actions.ContributionItemFactory;
 import org.eclipse.ui.actions.NewWizardMenu;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 import org.eclipse.ui.application.ActionBarAdvisor;
 import org.eclipse.ui.application.IActionBarConfigurer;
 import org.eclipse.ui.commands.ICommandService;
@@ -1177,7 +1177,7 @@ public final class WorkbenchActionBuilder extends ActionBarAdvisor {
         	// do the work
     		infos = IDEWorkbenchPlugin.getDefault().getFeatureInfos();
         	boolean found = hasWelcomePage(infos);
-            prefs.setValue(quickStartKey, found);
+            prefs.setValue(quickStartKey, String.valueOf(found));
             if (found) {
                 quickStartAction = IDEActionFactory.QUICK_START.create(window);
                 register(quickStartAction);
@@ -1202,7 +1202,7 @@ public final class WorkbenchActionBuilder extends ActionBarAdvisor {
 	    		infos = IDEWorkbenchPlugin.getDefault().getFeatureInfos();
 	    	}
 	    	boolean found = hasTipsAndTricks(infos);
-	    	prefs.setValue(tipsAndTricksKey, found);
+	    	prefs.setValue(tipsAndTricksKey, String.valueOf(found));
 	    	if (found) {
 	            tipsAndTricksAction = IDEActionFactory.TIPS_AND_TRICKS
 						.create(window);
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/CreateLinkedResourceGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/CreateLinkedResourceGroup.java
index ae4b0a5..ece3367 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/CreateLinkedResourceGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/CreateLinkedResourceGroup.java
@@ -13,6 +13,8 @@
 package org.eclipse.ui.internal.ide.dialogs;
 
 import java.net.URI;
+import java.net.URISyntaxException;
+
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileInfo;
 import org.eclipse.core.filesystem.IFileStore;
@@ -21,6 +23,7 @@ import org.eclipse.core.resources.IPathVariableManager;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
@@ -341,7 +344,17 @@ public class CreateLinkedResourceGroup {
 		}
 
 		fileSystemSelectionArea = new FileSystemSelectionArea();
-		fileSystemSelectionArea.createContents(composite);
+		
+		Composite parent = new Composite(composite, SWT.NONE);
+		parent.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false, 4, 1));
+		GridLayout layout = new GridLayout(2, false);
+		layout.marginWidth = 0;
+		layout.marginHeight = 0;
+		parent.setLayout(layout);
+		parent.setFont(composite.getFont());
+
+		fileSystemSelectionArea.createContents(parent);
+		
 		fileSystemSelectionArea.setEnabled(enabled);
 	}
 
@@ -363,11 +376,13 @@ public class CreateLinkedResourceGroup {
 		data = new GridData(GridData.FILL_HORIZONTAL);
 		data.horizontalIndent = indent;
 		resolvedPathGroup.setLayoutData(data);
+		resolvedPathGroup.setFont(locationGroup.getFont());
 
 		resolvedPathLabelText = new Label(resolvedPathGroup, SWT.SINGLE);
 		resolvedPathLabelText
 				.setText(IDEWorkbenchMessages.CreateLinkedResourceGroup_resolvedPathLabel);
 		resolvedPathLabelText.setVisible(false);
+		resolvedPathLabelText.setFont(locationGroup.getFont());
 
 		resolvedPathLabelData = new Label(resolvedPathGroup, SWT.SINGLE);
 		data = new GridData(GridData.FILL_HORIZONTAL);
@@ -403,33 +418,38 @@ public class CreateLinkedResourceGroup {
 	public URI getLinkTargetURI() {
 		if (!createLink)
 			return null;
-		// resolve path variable if we have a relative path
-		IPath linkTargetPath = new Path(linkTarget);
-		if (!linkTargetPath.isAbsolute()) {
-			IPathVariableManager pathVariableManager;
-
-			if (updatableResourceName.getResource() != null)
-				pathVariableManager = updatableResourceName.getResource().getPathVariableManager();
-			else
-				pathVariableManager = ResourcesPlugin.getWorkspace().getPathVariableManager();
-
-			URI path = URIUtil.toURI(linkTargetPath);
-				URI resolved = pathVariableManager.resolveURI(path);
-				if (path != resolved) {
-					// we know this is a path variable, but return unresolved
-					// path so resource will be created with variable intact
-					return path;
+		// linkTarget can contain either:
+		//  1) a URI, ex: 								foo://bar/file.txt
+		//  2) A path, ex: 								c:\foo\bar\file.txt
+		//  3) A path variable relative path, ex:		VAR\foo\bar\file.txt
+		URI uri;
+		try {
+			IPath path = Path.fromOSString(linkTarget);
+			if (path != null && path.toFile().exists())
+				return URIUtil.toURI(path);
+			
+			uri = new URI(linkTarget);
+			URI resolved = getPathVariableManager().resolveURI(uri);
+			try {
+				EFS.getStore(resolved);
+			} catch (CoreException e) {
+				return URIUtil.toURI(path);
 			}
+		}catch(URISyntaxException e) {
+			uri = convertToURI(linkTarget);
 		}
+		return uri;
+	}
 
+	private URI convertToURI(String string) {
 		FileSystemConfiguration configuration = getSelectedConfiguration();
 		if (configuration == null) {
-			return URIUtil.toURI(linkTarget);
+			return URIUtil.toURI(string);
 		}
 		// validate non-local file system location
-		return configuration.getContributor().getURI(linkTarget);
+		return configuration.getContributor().getURI(string);
 	}
-
+	
 	/**
 	 * Opens a file or directory browser depending on the link type.
 	 */
@@ -526,7 +546,9 @@ public class CreateLinkedResourceGroup {
 
 		PathVariableSelectionDialog dialog = new PathVariableSelectionDialog(
 				linkTargetField.getShell(), variableTypes);
+		if (updatableResourceName != null) {
 		dialog.setResource(updatableResourceName.getResource());
+		}
 		if (dialog.open() == IDialogConstants.OK_ID) {
 			String[] variableNames = (String[]) dialog.getResult();
 			if (variableNames != null && variableNames.length == 1) {
@@ -560,29 +582,43 @@ public class CreateLinkedResourceGroup {
 	 * the entered value is a variable.
 	 */
 	private void resolveVariable() {
-		IPathVariableManager pathVariableManager;
-		// use the resolved link target name
-		if (updatableResourceName.getResource() != null)
-			pathVariableManager = updatableResourceName.getResource().getPathVariableManager();
-		else
-			pathVariableManager = ResourcesPlugin
-									.getWorkspace().getPathVariableManager();
-		IPath path = new Path(linkTarget);
-		URI uri = URIUtil.toURI(path);
+		IPathVariableManager pathVariableManager = getPathVariableManager();
+		boolean isURL = true;
+		URI uri;
+		try {
+			uri = new URI(linkTarget);
+		}catch(URISyntaxException e) {
+			isURL = false;
+			uri = convertToURI(linkTarget);
+		}
 		URI resolvedURI = pathVariableManager.resolveURI(uri);
-		IPath resolvedPath = URIUtil.toPath(resolvedURI);
+		String resolvedString;
+		if (isURL)
+			resolvedString = resolvedURI.toString(); 
+		else
+			resolvedString = URIUtil.toPath(resolvedURI).toOSString();
 		
-		if (path.equals(resolvedPath)) {
+		if (linkTarget.equals(resolvedString)) {
 			resolvedPathLabelText.setVisible(false);
 			resolvedPathLabelData.setVisible(false);
 		} else {
 			resolvedPathLabelText.setVisible(true);
 			resolvedPathLabelData.setVisible(true);
 		}
-		resolvedPathLabelData.setText(resolvedPath.toOSString());
+		resolvedPathLabelData.setText(resolvedString);
 	}
 
 	/**
+	 * @return the current IPathVariableManager
+	 */
+	private IPathVariableManager getPathVariableManager() {
+		if (updatableResourceName != null
+				&& updatableResourceName.getResource() != null)
+			return updatableResourceName.getResource().getPathVariableManager();
+		return ResourcesPlugin.getWorkspace().getPathVariableManager();
+	}	
+
+	/**
 	 * 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
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/FileSystemSelectionArea.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/FileSystemSelectionArea.java
index 4b79c33..7e1ab24 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/FileSystemSelectionArea.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/FileSystemSelectionArea.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,7 +18,6 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.internal.ide.filesystem.FileSystemConfiguration;
@@ -51,12 +50,10 @@ public class FileSystemSelectionArea {
 
 		fileSystemTitle = new Label(composite, SWT.NONE);
 		fileSystemTitle.setText(FileSystemMessages.FileSystemSelection_title);
+		fileSystemTitle.setFont(composite.getFont());
 
 		fileSystems = new ComboViewer(composite, SWT.READ_ONLY);
-
-		fileSystems.getControl().setLayoutData(
-				new GridData(GridData.FILL_HORIZONTAL
-						| GridData.GRAB_HORIZONTAL));
+		fileSystems.getControl().setFont(composite.getFont());
 
 		fileSystems.setLabelProvider(new LabelProvider() {
 			/*
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourceEditor.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourceEditor.java
index 7d45330..be2d738 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourceEditor.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourceEditor.java
@@ -34,6 +34,8 @@ import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.TreeColumnLayout;
+import org.eclipse.jface.viewers.ColumnWeightData;
 import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -194,7 +196,13 @@ public class LinkedResourceEditor {
         variableLabel.setLayoutData(data);
         variableLabel.setFont(font);
 
-		fTree = new TreeViewer(pageComponent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
+		Composite treeComposite = new Composite(pageComponent, SWT.NONE);
+		data = new GridData(SWT.FILL, SWT.FILL, true, true);
+		data.grabExcessHorizontalSpace = true;
+		data.grabExcessVerticalSpace = true;
+		treeComposite.setLayoutData(data);
+
+		fTree = new TreeViewer(treeComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
 
 		fTree.addSelectionChangedListener(new ISelectionChangedListener() {
 			public void selectionChanged(SelectionChangedEvent event) {
@@ -212,17 +220,21 @@ public class LinkedResourceEditor {
 		fTree.setLabelProvider(new LabelProvider());
 		fTree.setInput(this);
 
-		TreeColumn column = new TreeColumn(fTree.getTree(), SWT.LEFT, NAME_COLUMN);
-		column.setText(IDEWorkbenchMessages.LinkedResourceEditor_resourceName);
-		column.setResizable(true);
-		column.setMoveable(false);
-		column.setWidth(170);
+		TreeColumn nameColumn = new TreeColumn(fTree.getTree(), SWT.LEFT, NAME_COLUMN);
+		nameColumn.setText(IDEWorkbenchMessages.LinkedResourceEditor_resourceName);
+		nameColumn.setResizable(true);
+		nameColumn.setMoveable(false);
+
+		TreeColumn locationColumn = new TreeColumn(fTree.getTree(), SWT.LEFT, LOCATION_COLUMN);
+		locationColumn.setText(IDEWorkbenchMessages.LinkedResourceEditor_location);
+		locationColumn.setResizable(true);
+		locationColumn.setMoveable(false);
+
+		TreeColumnLayout tableLayout = new TreeColumnLayout();
+		treeComposite.setLayout( tableLayout );
 
-		column = new TreeColumn(fTree.getTree(), SWT.LEFT, LOCATION_COLUMN);
-		column.setText(IDEWorkbenchMessages.LinkedResourceEditor_location);
-		column.setResizable(true);
-		column.setMoveable(false);
-		column.setWidth(260);
+		tableLayout.setColumnData(nameColumn, new ColumnWeightData(170));
+		tableLayout.setColumnData(locationColumn, new ColumnWeightData(260));
 
 		fTree.getTree().setFont(font);
 		fTree.getTree().setHeaderVisible(true);
@@ -267,15 +279,16 @@ public class LinkedResourceEditor {
 
 		public String getColumnText(Object obj, int index) {
 			if (obj instanceof IResource) {
+				IResource resource = (IResource) obj;
 				if (index == NAME_COLUMN)
-					return ((IResource) obj).getName();
+					return resource.getName();
 				else if (index == PATH_COLUMN)
-					return ((IResource) obj).getParent()
+					return resource.getParent()
 							.getProjectRelativePath().toPortableString();
 				else {
-					IPath rawLocation = ((IResource) obj).getRawLocation();
+					IPath rawLocation = resource.getRawLocation();
 					if (rawLocation != null)
-						return rawLocation.toOSString();
+				    	return resource.getPathVariableManager().convertToUserEditableFormat(rawLocation.toOSString(), true);
 				}
 			} else if ((obj instanceof String) && index == 0)
 				return (String) obj;
@@ -494,13 +507,17 @@ public class LinkedResourceEditor {
 	}
 
 	private void convertLocation() {
-		ArrayList/* <IResource> */resources = new ArrayList/* <IResource> */();
-		IResource[] selectedResources = getSelectedResource();
-		resources.addAll(Arrays.asList(selectedResources));
-		if (areFixed(selectedResources))
-			convertToAbsolute(resources, selectedResources);
-		else
-			convertToRelative(resources, selectedResources);
+		if (MessageDialog.openConfirm(fConvertAbsoluteButton.getShell(), 
+				IDEWorkbenchMessages.LinkedResourceEditor_convertTitle, 
+				IDEWorkbenchMessages.LinkedResourceEditor_convertMessage)) {
+			ArrayList/* <IResource> */resources = new ArrayList/* <IResource> */();
+			IResource[] selectedResources = getSelectedResource();
+			resources.addAll(Arrays.asList(selectedResources));
+			if (areFixed(selectedResources))
+				convertToAbsolute(resources, selectedResources);
+			else
+				convertToRelative(resources, selectedResources);
+		}
 	}
 
 	private void convertToAbsolute(ArrayList/* <IResource> */resources,
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourcesPreferencePage.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourcesPreferencePage.java
index 629a427..5013c5a 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourcesPreferencePage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/LinkedResourcesPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,6 +46,10 @@ public class LinkedResourcesPreferencePage extends PreferencePage implements
         IWorkbenchPreferencePage {
     private Label topLabel;
 
+    /**
+     */
+    public static String PREF_ID = "org.eclipse.ui.preferencePages.LinkedResources"; //$NON-NLS-1$
+    
     private PathVariablesGroup pathVariablesGroup;
 
 	private ResourceDragAndDropEditor dragAndDropHandlingEditor;
@@ -149,6 +153,7 @@ public class LinkedResourcesPreferencePage extends PreferencePage implements
 		gridLayout.marginWidth = 0;
 		gridLayout.marginHeight = 0;
 		lineComposite.setLayout(gridLayout);
+		lineComposite.setFont(parent.getFont());
 
 		lineComposite.setLayoutData(new GridData(
                 GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
@@ -210,5 +215,6 @@ public class LinkedResourcesPreferencePage extends PreferencePage implements
     protected void updateWidgetState(boolean enableLinking) {
         topLabel.setEnabled(enableLinking);
         pathVariablesGroup.setEnabled(enableLinking);
+        dragAndDropHandlingEditor.setEnabled(enableLinking);
     }
 }
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java
index b913e1a..260c6f5 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java
@@ -318,7 +318,7 @@ public class PathVariableDialog extends TitleAreaDialog {
         Composite buttonsComposite = new Composite(contents, SWT.NONE);
         buttonsComposite.setLayoutData(new GridData(SWT.END, SWT.CENTER, false,
         		false, 1, 1));
-        GridLayout layout = new GridLayout(1, true);
+        GridLayout layout = new GridLayout(0, true);
         layout.marginWidth = 0;
         layout.marginHeight = 0;
         buttonsComposite.setLayout(layout);
@@ -355,28 +355,32 @@ public class PathVariableDialog extends TitleAreaDialog {
 	        setButtonLayoutData(folderButton);
         }
 
-    	variableButton = new Button(buttonsComposite, SWT.PUSH);
-    	variableButton.setText(IDEWorkbenchMessages.PathVariableDialog_variable);
-
- 	    variableButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
-    		false));
-
-        variableButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                selectVariable();
-            }
-        });
-        setButtonLayoutData(variableButton);
+        // the workspace path variable manager does not support variables.
+        if (currentResource != null) {
+        	layout.numColumns++;
+	    	variableButton = new Button(buttonsComposite, SWT.PUSH);
+	    	variableButton.setText(IDEWorkbenchMessages.PathVariableDialog_variable);
+	
+	 	    variableButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
+	    		false));
+	
+	        variableButton.addSelectionListener(new SelectionAdapter() {
+	            public void widgetSelected(SelectionEvent e) {
+	                selectVariable();
+	            }
+	        });
+	        setButtonLayoutData(variableButton);
 
-        // variable value label
-        variableResolvedValueLabel = new Label(contents, SWT.LEAD);
-        variableResolvedValueLabel.setText(resolvedValueLabelText);
+	        // variable value label
+	        variableResolvedValueLabel = new Label(contents, SWT.LEAD);
+	        variableResolvedValueLabel.setText(resolvedValueLabelText);
 
-        // variable value field.  Attachments done after all widgets created.
-        variableResolvedValueField = new Label(contents, SWT.LEAD | SWT.SINGLE | SWT.READ_ONLY);
-        variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue()));
-        variableResolvedValueField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
-        		false, 2, 1));
+	        // variable value field.  Attachments done after all widgets created.
+	        variableResolvedValueField = new Label(contents, SWT.LEAD | SWT.SINGLE | SWT.READ_ONLY);
+	        variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue()));
+	        variableResolvedValueField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+	        		false, 2, 1));
+        }
     }
 
     private IPathVariableManager getPathVariableManager() {
@@ -439,7 +443,8 @@ public class PathVariableDialog extends TitleAreaDialog {
         validationStatus = IMessageProvider.NONE;
         okButton.setEnabled(validateVariableValue() && validateVariableName());
         locationEntered = true;
-        variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue()));        
+        if (variableResolvedValueField != null)
+        	variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue()));        
     }
 
     /**
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
index 6cadb42..d4ce2d9 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java
@@ -131,6 +131,9 @@ public class PathVariablesGroup {
     // reference to the workspace's path variable manager
     private IPathVariableManager pathVariableManager;
 
+    // if set to true, variables will be saved after each change
+    private boolean saveVariablesOnChange = false;
+    
     // file image
     private final Image FILE_IMG = PlatformUI.getWorkbench().getSharedImages()
             .getImage(ISharedImages.IMG_OBJ_FILE);
@@ -208,6 +211,7 @@ public class PathVariablesGroup {
 
         // the UI must be updated
         updateWidgetState();
+        saveVariablesIfRequired();
     }
 
     /**
@@ -279,6 +283,7 @@ public class PathVariablesGroup {
             }
         });
         
+        variableTable.getTable().setFont(font);
 		ColumnViewerToolTipSupport.enableFor(variableTable, ToolTip.NO_RECREATE);
 
 		TableViewerColumn nameColumn = new TableViewerColumn(variableTable, SWT.NONE);
@@ -434,6 +439,7 @@ public class PathVariablesGroup {
 
         // now we must refresh the UI state
         updateWidgetState();
+        saveVariablesIfRequired();
     }
 
     /**
@@ -452,6 +458,21 @@ public class PathVariablesGroup {
     }
 
     /**
+     * Automatically save the path variable list when new variables
+     * are added, changed, or removed by the user. 
+     * @param value 
+     *
+     */
+    public void setSaveVariablesOnChange(boolean value) {
+    	saveVariablesOnChange = value;
+    }
+    
+    private void saveVariablesIfRequired() {
+    	if (saveVariablesOnChange) {
+    		performOk();
+    	}
+    }
+    /**
      * Returns the selected variables.
      *  
      * @return the selected variables. Returns an empty array if 
@@ -655,6 +676,7 @@ public class PathVariablesGroup {
             tempPathVariables.remove(varName);
         }
         updateWidgetState();
+        saveVariablesIfRequired();
     }
 
     private boolean canChangeSelection() {
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectLinkedResourcePage.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectLinkedResourcePage.java
index e6cab86..71d111b 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectLinkedResourcePage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectLinkedResourcePage.java
@@ -111,6 +111,7 @@ public class ProjectLinkedResourcePage extends PropertyPage implements
         
         Composite variableComposite = new Composite(tabFolder, 0);
         variableComposite.setLayout(new GridLayout());
+        variableComposite.setFont(font);
 
         topLabel = new Label(variableComposite, SWT.NONE);
         topLabel.setText(IDEWorkbenchMessages.ProjectLinkedResourcePage_description);
@@ -129,6 +130,7 @@ public class ProjectLinkedResourcePage extends PropertyPage implements
 
         Composite linkedResourceComposite = new Composite(tabFolder, 0);
         linkedResourceComposite.setLayout(new GridLayout());
+        linkedResourceComposite.setFont(font);
 
         linkedResourceEditor.createContents(linkedResourceComposite);
 
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/RelativePathVariableGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/RelativePathVariableGroup.java
index 34908c7..80e695f 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/RelativePathVariableGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/RelativePathVariableGroup.java
@@ -47,6 +47,8 @@ public class RelativePathVariableGroup {
 	
 	private IModel content;
 	
+	private String label;
+	
 	public interface IModel {
 		/**
 		 * @return
@@ -69,17 +71,23 @@ public class RelativePathVariableGroup {
 	public RelativePathVariableGroup(IModel content) {
 		this.content = content;
 	}
-	
+
+	public RelativePathVariableGroup(IModel content, String label) {
+		this.content = content;
+		this.label = label;
+	}
+
 	/**
-	 * @param composite
-	 * @return
+	 * @param variableGroup 
+	 * @return the control
 	 */
 	public Control createContents(Composite variableGroup) {
 		shell = variableGroup.getShell();
 
 		variableCheckbox = new Button(variableGroup, SWT.CHECK);
-		variableCheckbox.setText(IDEWorkbenchMessages.ImportTypeDialog_importElementsAs);
+		variableCheckbox.setText(label != null? label:IDEWorkbenchMessages.ImportTypeDialog_importElementsAs);
 		GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+		variableCheckbox.setFont(variableGroup.getFont());
 		variableCheckbox.setLayoutData(gridData);
 		variableCheckbox.addSelectionListener(new SelectionListener() {
 			public void widgetDefaultSelected(SelectionEvent e) {
@@ -106,6 +114,7 @@ public class RelativePathVariableGroup {
 		variableCombo = new Combo(variableGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
 		gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); // GridData.FILL_HORIZONTAL);
 		variableCombo.setLayoutData(gridData);
+		variableCombo.setFont(variableGroup.getFont());
 		variableCombo.addSelectionListener(new SelectionListener() {
 			public void widgetDefaultSelected(SelectionEvent e) {
 				if (variableCombo.getSelectionIndex() == (variableCombo.getItemCount() -1))
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java
index 96f4324..84cbe44 100755
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java
@@ -1,13 +1,12 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Serge Beauchamp (Freescale Semiconductor) - [229633] Project Path Variable Support
+ *     Serge Beauchamp (Freescale Semiconductor) - initial API and implementation
  *******************************************************************************/
 package org.eclipse.ui.internal.ide.dialogs;
 
@@ -32,20 +31,21 @@ public class ResourceFilterEditDialog extends SelectionDialog {
 	private ResourceFilterGroup resourceFilterGroup;
 
 	/**
-	 * Creates a path variable selection dialog.
+	 * Creates a resource filter edit dialog.
 	 * 
 	 * @param parentShell
 	 *            the parent shell
 	 */
 	public ResourceFilterEditDialog(Shell parentShell) {
 		super(parentShell);
-		setTitle(IDEWorkbenchMessages.PathVariableSelectionDialog_title);
+		setTitle(IDEWorkbenchMessages.ResourceFilterEditDialog_title);
 		resourceFilterGroup = new ResourceFilterGroup();
 		setShellStyle(getShellStyle() | SWT.RESIZE);
 	}
 
 	/**
 	 * Set the container resource to be edited.
+	 * 
 	 * @param container
 	 */
 	public void setContainer(IContainer container) {
@@ -64,18 +64,22 @@ public class ResourceFilterEditDialog extends SelectionDialog {
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+	 * @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,
-				IIDEHelpContextIds.PATH_VARIABLE_SELECTION_DIALOG);
+				IIDEHelpContextIds.EDIT_RESOURCE_FILTER_DIALOG);
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
+	 * @see
+	 * org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse
+	 * .swt.widgets.Composite)
 	 */
 	protected void createButtonsForButtonBar(Composite parent) {
 		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
@@ -87,7 +91,9 @@ public class ResourceFilterEditDialog extends SelectionDialog {
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+	 * @see
+	 * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets
+	 * .Composite)
 	 */
 	protected Control createDialogArea(Composite parent) {
 		Composite dialogArea = (Composite) super.createDialogArea(parent);
@@ -113,14 +119,16 @@ public class ResourceFilterEditDialog extends SelectionDialog {
 	}
 
 	/**
-	 * @param filters the initial filters of the dialog
+	 * @param filters
+	 *            the initial filters of the dialog
 	 */
 	public void setFilters(UIResourceFilterDescription[] filters) {
 		resourceFilterGroup.setFilters(filters);
 	}
 
 	/**
-	 * @param filters the initial filters of the dialog
+	 * @param filters
+	 *            the initial filters of the dialog
 	 */
 	public void setFilters(IResourceFilterDescription[] filters) {
 		resourceFilterGroup.setFilters(filters);
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
index 123fe2c..e1ca01e 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
@@ -11,11 +11,13 @@
  *******************************************************************************/
 package org.eclipse.ui.internal.ide.dialogs;
 
+import java.io.BufferedReader;
 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.lang.reflect.Field;
 import java.text.DateFormat;
 import java.util.ArrayList;
@@ -39,10 +41,8 @@ import org.eclipse.core.resources.filtermatchers.AbstractFileInfoMatcher;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
@@ -52,7 +52,6 @@ import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.TrayDialog;
 import org.eclipse.jface.fieldassist.TextContentAdapter;
 import org.eclipse.jface.layout.TreeColumnLayout;
-import org.eclipse.jface.resource.CompositeImageDescriptor;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider;
@@ -124,6 +123,7 @@ import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
 import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
 import org.eclipse.ui.internal.ide.misc.FileInfoAttributesMatcher;
+import org.eclipse.ui.internal.ide.misc.StringFileInfoMatcher;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
@@ -146,38 +146,21 @@ public class ResourceFilterGroup {
 	private LabelProvider labelProvider;
 	private Font boldFont;
 	private Font plainFont;
-	private Image checkIcon = null;
 	private Image fileIcon = null;
 	private Image folderIcon = null;
 	private Image fileFolderIcon = null;
 	private Image includeIcon = null;
 	private Image excludeIcon = null;
 	private Image inheritableIcon = null;
-	private Image fileAloneIcon = null;
-	private Image folderAloneIcon = null;
-	private Image fileFolderAloneIcon = null;
-	private Image fileInheritableIcon = null;
-	private Image folderInheritableIcon = null;
-	private Image fileFolderInheritableIcon = null;
 	private boolean tableViewCellEditorAdequatlyUsable = false;
 	private Shell shell;
 	private IContainer nonExistantResource = getNonExistantResource();
 	private IContainer resource = nonExistantResource;
 
-	// this is a work-around for the TreeView widget that does not draw the text according to each row's image width 
-	private String textPrefix = new String();
-	
 	/**
 	 * 
 	 */
 	public ResourceFilterGroup() {
-		ImageDescriptor descriptor = AbstractUIPlugin
-				.imageDescriptorFromPlugin(IDEWorkbenchPlugin.IDE_WORKBENCH,
-						"$nl$/icons/full/obj16/header_complete.gif"); //$NON-NLS-1$
-		if (descriptor != null)
-			checkIcon = descriptor.createImage();
-		
-		
 		ImageDescriptor fileIconDescriptor = AbstractUIPlugin
 		.imageDescriptorFromPlugin(IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/obj16/fileType_filter.gif"); //$NON-NLS-1$
@@ -196,7 +179,7 @@ public class ResourceFilterGroup {
 		if (fileFolderIconDescriptor != null)
 			fileFolderIcon = fileFolderIconDescriptor.createImage();
 		
-		descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
+		ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
 				IDEWorkbenchPlugin.IDE_WORKBENCH,
 				"$nl$/icons/full/obj16/includeMode_filter.gif"); //$NON-NLS-1$
 		if (descriptor != null)
@@ -213,58 +196,6 @@ public class ResourceFilterGroup {
 				"$nl$/icons/full/obj16/inheritable_filter.gif"); //$NON-NLS-1$
 		if (inheritableIconDescriptor != null)
 			inheritableIcon = inheritableIconDescriptor.createImage();
-
-		CompositeImageDescriptor desc = new AlignedCompositeImageDescriptor(null, fileIconDescriptor);
-		fileAloneIcon = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(null, folderIconDescriptor);
-		folderAloneIcon = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(null, fileFolderIconDescriptor);
-		fileFolderAloneIcon = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(inheritableIconDescriptor, fileIconDescriptor);
-		fileInheritableIcon = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(inheritableIconDescriptor, folderIconDescriptor);
-		folderInheritableIcon = desc.createImage();
-
-		desc = new AlignedCompositeImageDescriptor(inheritableIconDescriptor, fileFolderIconDescriptor);
-		fileFolderInheritableIcon = desc.createImage();
-	}
-
-	private static int AlignedCompositeImageDescriptor_SPACE = 4;
-
-	private class AlignedCompositeImageDescriptor extends CompositeImageDescriptor {
-
-		
-		ImageDescriptor first, second;
-		AlignedCompositeImageDescriptor(ImageDescriptor first, ImageDescriptor second) {
-			this.first = first;
-			this.second = second;
-		}
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int)
-		 */
-		protected void drawCompositeImage(int width, int height) {
-			if (first != null) {
-				drawImage(first.getImageData(), 0, 0);
-				drawImage(second.getImageData(), first.getImageData().width + AlignedCompositeImageDescriptor_SPACE, 0);
-			}
-			else
-				drawImage(second.getImageData(), second.getImageData().width + AlignedCompositeImageDescriptor_SPACE, 0);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize()
-		 */
-		protected Point getSize() {
-			if (first != null)
-				return new Point(first.getImageData().width + second.getImageData().width + AlignedCompositeImageDescriptor_SPACE, 
-					Math.max(first.getImageData().height, second.getImageData().height));
-			return new Point(second.getImageData().width * 2 + AlignedCompositeImageDescriptor_SPACE, second.getImageData().height);
-		}
-		
 	}
 
 	Image getImage(String string, int i) {
@@ -304,8 +235,11 @@ public class ResourceFilterGroup {
 			try {
 				IResourceFilterDescription[] tmp = resource.getFilters();
 				children = new LinkedList();
-				for (int i = 0; i < tmp.length; i++)
-					addChild(new FilterCopy(UIResourceFilterDescription.wrap(tmp[i])));
+				for (int i = 0; i < tmp.length; i++) {
+					FilterCopy copy = new FilterCopy(UIResourceFilterDescription.wrap(tmp[i]));
+					copy = convertLegacyMatchers(copy);
+					addChild(copy);
+				}
 			} catch (CoreException e) {
 				ErrorDialog.openError(shell, NLS.bind(
 						IDEWorkbenchMessages.InternalError, null), e
@@ -420,8 +354,11 @@ public class ResourceFilterGroup {
 	class TreeContentProvider implements ITreeContentProvider {
 		
 		public Object[] getChildren(Object parentElement) {
-			if (parentElement == filters)
-				return new Object[] {includeOnlyGroup, excludeAllGroup};
+			if (parentElement == filters) {
+				if (filters.getChildren().length > 0)
+					return new Object[] {includeOnlyGroup, excludeAllGroup};
+				return new Object[0];
+			}
 			if (parentElement instanceof String) {
 				ArrayList list = new ArrayList();
 				int mask = parentElement.equals(includeOnlyGroup) ? IResourceFilterDescription.INCLUDE_ONLY:
@@ -470,8 +407,8 @@ public class ResourceFilterGroup {
 	}
 
 	class LabelProvider extends StyledCellLabelProvider  {
-		private final Styler fBoldStyler; 
-		private final Styler fPlainStyler; 
+		private final Styler fBoldStyler;
+		private final Styler fPlainStyler;
 		FilterTypeUtil util;
 		TreeMap/*<String, ICustomFilterArgumentUI */ customfilterArgumentMap = new TreeMap();
 
@@ -487,9 +424,9 @@ public class ResourceFilterGroup {
 					textStyle.font= plainFont;
 				}
 			};
-			ICustomFilterArgumentUI ui = new MultiMatcherCustomFilterArgumentUI(null, null);
+			ICustomFilterArgumentUI ui = new MultiMatcherCustomFilterArgumentUI(null, null, null);
 			customfilterArgumentMap.put(ui.getID(), ui);
-			ui = new DefaultCustomFilterArgumentUI(null, null);
+			ui = new DefaultCustomFilterArgumentUI(null, null, null);
 			customfilterArgumentMap.put(ui.getID(), ui);
 		}
 
@@ -535,35 +472,22 @@ public class ResourceFilterGroup {
 			else {
 				filter = (FilterCopy) element;
 	
-				if (column.equals(FilterTypeUtil.ID)) {
-					String id = filter.getId();
-					IFilterMatcherDescriptor descriptor = FilterTypeUtil.getDescriptor(id);
-					if (descriptor != null)
-						cell.setText(descriptor.getName());
-				}
-				if (!isPartialFilter(filter)) {
-					if (column.equals(FilterTypeUtil.INHERITABLE)) {
-						Object condition = FilterTypeUtil.getValue(filter, FilterTypeUtil.INHERITABLE);
-						cell.setImage(((Boolean) condition).booleanValue() ? checkIcon: null);
-					}
-				}
 				if (column.equals(FilterTypeUtil.MODE)) {
-					StyledString styledString = new StyledString(textPrefix, fPlainStyler);
-					styledString.append(getStyleColumnText(filter));
+					StyledString styledString = getStyleColumnText(filter);
+					if (!isPartialFilter(filter)) {
+						Object isInheritable = FilterTypeUtil.getValue(filter, FilterTypeUtil.INHERITABLE);
+						if (((Boolean)isInheritable).booleanValue())
+							styledString.append("   " + IDEWorkbenchMessages.ResourceFilterPage_recursive); //$NON-NLS-1$
+						
+					}
 					cell.setText(styledString.toString());
 					cell.setStyleRanges(styledString.getStyleRanges());
 
 					if (!isPartialFilter(filter)) {
-						Image[] images = { fileAloneIcon, folderAloneIcon, fileFolderAloneIcon };
-						Image[] inheritableImages = {fileInheritableIcon, folderInheritableIcon, fileFolderInheritableIcon};
+						Image[] images = { fileIcon, folderIcon, fileFolderIcon };
 
 						Object index = FilterTypeUtil.getValue(filter, FilterTypeUtil.TARGET);
-						Object isInheritable = FilterTypeUtil.getValue(filter, FilterTypeUtil.INHERITABLE);
-						int intValue = ((Integer)index).intValue();
-						if (((Boolean)isInheritable).booleanValue())
-							cell.setImage(inheritableImages[intValue]);
-						else
-							cell.setImage(images[intValue]);
+						cell.setImage(images[((Integer) index).intValue()]);
 					}
 				}
 			}
@@ -598,7 +522,7 @@ public class ResourceFilterGroup {
 				}
 				buffer.append(")", fBoldStyler); //$NON-NLS-1$
 				return buffer;
-			} 
+			}
 			ICustomFilterArgumentUI ui = getUI(filter.getId());
 			return ui.formatStyledText(filter, fPlainStyler, fBoldStyler);
 		}
@@ -691,17 +615,6 @@ public class ResourceFilterGroup {
 	}
 
 	private void createViewerGroup(Composite parent) {
-		
-		GC gc = new GC(parent);
-		gc.setFont(plainFont);
-		String whiteSpace = " "; //$NON-NLS-1$
-		textPrefix = whiteSpace;
-		int width = inheritableIcon.getImageData().width + AlignedCompositeImageDescriptor_SPACE;
-		while (gc.stringExtent(textPrefix).x < width) {
-			textPrefix += whiteSpace;
-		}
-		gc.dispose();
-
 		Composite tableComposite = new Composite(parent, SWT.NONE);
 		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
 		data.grabExcessHorizontalSpace = true;
@@ -904,8 +817,27 @@ public class ResourceFilterGroup {
 		}
 	}
 
+	private void handleAdd(boolean createGroupOnly) {
+		Object selectedObject = null;
+		ISelection selection = filterView.getSelection();
+		if (selection instanceof IStructuredSelection) {
+			IStructuredSelection structuredSelection = ((IStructuredSelection) selection);
+			selectedObject = structuredSelection.getFirstElement();
+		}
+		handleAdd(selectedObject, createGroupOnly);
+	}
+	
 	private void handleAdd(Object selection, boolean createGroupOnly) {
-		if (selection instanceof FilterCopy) {
+		if (selection == null) {
+			FilterCopy newFilter = new FilterCopy();
+			FilterEditDialog dialog = new FilterEditDialog(resource, ResourceFilterGroup.this, shell,
+					newFilter, createGroupOnly, true);
+			if (dialog.open() == Window.OK) {
+				addToTopLevelFilters(newFilter);
+				refreshAndSelect(newFilter);
+			}
+		}
+		else if (selection instanceof FilterCopy) {
 			FilterCopy filter = (FilterCopy) selection;
 			if (filter.getChildrenLimit() > 0) {
 				FilterCopy newFilter = new FilterCopy();
@@ -918,10 +850,19 @@ public class ResourceFilterGroup {
 					refreshAndSelect(newFilter);
 				}
 			}
+			else {
+				FilterCopy newFilter = new FilterCopy();
+				FilterEditDialog dialog = new FilterEditDialog(resource, ResourceFilterGroup.this, shell,
+						newFilter, createGroupOnly, true);
+				if (dialog.open() == Window.OK) {
+					addToTopLevelFilters(newFilter);
+					refreshAndSelect(newFilter);
+				}
+			}
 		}
-		if (selection instanceof String) {
+		else if (selection instanceof String) {
 			FilterCopy newFilter = new FilterCopy();
-			FilterTypeUtil.setValue(newFilter, FilterTypeUtil.MODE, 
+			FilterTypeUtil.setValue(newFilter, FilterTypeUtil.MODE,
 					new Integer(selection.equals(includeOnlyGroup) ? 0:1));
 			FilterEditDialog dialog = new FilterEditDialog(resource, ResourceFilterGroup.this, shell,
 					newFilter, createGroupOnly, true);
@@ -939,7 +880,7 @@ public class ResourceFilterGroup {
 
 	private boolean isAddEnabled(Object selection) {
 		if (selection == null)
-			return false;
+			return true;
 		if (selection instanceof FilterCopy) {
 			FilterCopy filter = (FilterCopy) selection;
 			return filter.getChildrenLimit() > 0;
@@ -1130,8 +1071,6 @@ public class ResourceFilterGroup {
 			IStructuredSelection structuredSelection = null;
 			if (selection instanceof IStructuredSelection)
 				structuredSelection = ((IStructuredSelection) selection);
-			addButton.setEnabled(isAddEnabled(structuredSelection != null ? structuredSelection.getFirstElement():null));
-			addGroupButton.setEnabled(isAddEnabled(structuredSelection != null ? structuredSelection.getFirstElement():null));
 			removeButton.setEnabled(structuredSelection != null
 					&& structuredSelection.size() > 0 && !(structuredSelection.getFirstElement() instanceof String));
 			editButton.setEnabled(structuredSelection != null
@@ -1156,22 +1095,15 @@ public class ResourceFilterGroup {
 		return filters.isLast((FilterCopy) o);
 	}
 
-	private void handleAdd(boolean createGroupOnly) {
-		ISelection selection = filterView.getSelection();
-		if (selection instanceof IStructuredSelection) {
-			IStructuredSelection structuredSelection = ((IStructuredSelection) selection);
-			if (!structuredSelection.isEmpty())
-				handleAdd(structuredSelection.getFirstElement(), createGroupOnly);
-		}
-	}
-
 	private boolean handleEdit() {
 		ISelection selection = filterView.getSelection();
 		if (selection instanceof IStructuredSelection) {
 			Object firstElement = ((IStructuredSelection) selection)
 					.getFirstElement();
-			if (firstElement instanceof String)
-				return false;
+			if (firstElement instanceof String) {
+				handleAdd(firstElement, false);
+				return true;
+			}
 			if (firstElement instanceof FilterCopy) {
 				FilterCopy filter = (FilterCopy) firstElement;
 				FilterCopy copy = new FilterCopy(filter);
@@ -1314,7 +1246,7 @@ public class ResourceFilterGroup {
 					}
 					FilterCopy[] newFilters = filters.getChildren();
 					for (int i = 0; i < newFilters.length; i++) {
-						resource.createFilter(newFilters[i].getType(), 
+						resource.createFilter(newFilters[i].getType(),
 								newFilters[i].getFileInfoMatcherDescription(),
 								IResource.BACKGROUND_REFRESH,
 								new NullProgressMonitor());
@@ -1337,9 +1269,10 @@ public class ResourceFilterGroup {
 	}
 
 	private void disposeIcons() {
-		Field[] fields = getClass().getFields();
+		Field[] fields = getClass().getDeclaredFields();
 		for (int i = 0; i < fields.length; i++) {
-			if (fields[i].getClass().equals(Image.class)) {
+			Class cls = fields[i].getType();
+			if (cls.equals(Image.class)) {
 				Image img;
 				try {
 					img = (Image) fields[i].get(this);
@@ -1553,11 +1486,16 @@ class FilterTypeUtil {
 		sortDescriptors(descriptors);
 		LinkedList names = new LinkedList();
 		for (int i = 0; i < descriptors.length; i++) {
+			// remove legacy filters
+			if (descriptors[i].getId().equals(DefaultCustomFilterArgumentUI.REGEX_FILTER_ID))
+				continue;
+			if (descriptors[i].getId().equals(StringFileInfoMatcher.ID))
+				continue;
 			boolean isGroup = descriptors[i].getArgumentType().equals(
 					IFilterMatcherDescriptor.ARGUMENT_TYPE_FILTER_MATCHER)
 					|| descriptors[i].getArgumentType().equals(
 							IFilterMatcherDescriptor.ARGUMENT_TYPE_FILTER_MATCHERS);
-			if (isGroup == groupOnly) 
+			if (isGroup == groupOnly)
 				names.add(descriptors[i].getName());
 		}
 		return (String[]) names.toArray(new String[0]);
@@ -1625,6 +1563,22 @@ class FilterCopy extends UIResourceFilterDescription {
 		original = filter;
 	}
 
+	protected FilterCopy convertLegacyMatchers(FilterCopy copy) {
+		if (copy.getId().equals(DefaultCustomFilterArgumentUI.REGEX_FILTER_ID) ||
+				copy.getId().equals(StringFileInfoMatcher.ID)) {
+			String pattern = (String) copy.getArguments();
+			FileInfoAttributesMatcher.Argument argument = new FileInfoAttributesMatcher.Argument();
+			argument.key = FileInfoAttributesMatcher.KEY_NAME;
+			argument.operator = FileInfoAttributesMatcher.OPERATOR_MATCHES;
+			argument.pattern = pattern;
+			argument.regularExpression = copy.getId().equals(DefaultCustomFilterArgumentUI.REGEX_FILTER_ID);
+			String encodedArgument = FileInfoAttributesMatcher.encodeArguments(argument);
+			FilterTypeUtil.setValue(copy, FilterTypeUtil.ID, FileInfoAttributesMatcher.ID);
+			FilterTypeUtil.setValue(copy, FilterTypeUtil.ARGUMENTS, encodedArgument);
+		}
+		return copy;
+	}
+
 	public void removeAll() {
 		initializeChildren();
 		Iterator it = children.iterator();
@@ -1703,7 +1657,7 @@ class FilterCopy extends UIResourceFilterDescription {
 	}
 
 	/**
-	 * @param parent 
+	 * @param parent
 	 * @param description
 	 */
 	public FilterCopy(FilterCopy parent, FileInfoMatcherDescription description) {
@@ -1917,7 +1871,8 @@ class FilterEditDialog extends TrayDialog {
 	protected Button filesAndFoldersButton;
 	protected Combo idCombo;
 	protected Composite idComposite;
-	protected Button idButton;
+	protected Button includeButton;
+	protected Button excludeButton;
 	protected Composite argumentComposite;
 	protected Button inherited;
 	protected FilterTypeUtil util;
@@ -1932,18 +1887,19 @@ class FilterEditDialog extends TrayDialog {
 		public void create(Composite argumentComposite, Font font) {}
 		public void dispose() {}
 		public void selectionChanged() {}
-		public void validate() {}
+		public String validate() {return null;}
 		public StyledString formatStyledText(FilterCopy filter,
 				Styler fPlainStyler, Styler fBoldStyler) {return null;}
 	};
 
 	/**
 	 * Constructor for FilterEditDialog.
-	 * @param resource 
-	 * @param filterGroup 
+	 * @param resource
+	 * @param filterGroup
 	 * @param parentShell
 	 * @param filter
-	 * @param createGroupOnly 
+	 * @param createGroupOnly
+	 * @param creatingNewFilter
 	 */
 	public FilterEditDialog(IResource resource, ResourceFilterGroup filterGroup, Shell parentShell, FilterCopy filter, boolean createGroupOnly, boolean creatingNewFilter) {
 		super(parentShell);
@@ -1953,9 +1909,9 @@ class FilterEditDialog extends TrayDialog {
 		this.filter = filter;
 		this.createGroupOnly = createGroupOnly;
 		util = new FilterTypeUtil();
-		ICustomFilterArgumentUI ui = new MultiMatcherCustomFilterArgumentUI(parentShell, filter);
+		ICustomFilterArgumentUI ui = new MultiMatcherCustomFilterArgumentUI(this, parentShell, filter);
 		customfilterArgumentMap.put(ui.getID(), ui);
-		ui = new DefaultCustomFilterArgumentUI(parentShell, filter);
+		ui = new DefaultCustomFilterArgumentUI(this, parentShell, filter);
 		customfilterArgumentMap.put(ui.getID(), ui);
 	}
 
@@ -2001,10 +1957,11 @@ class FilterEditDialog extends TrayDialog {
 			topComposite.setLayoutData(data);
 			topComposite.setFont(font);
 
+			createModeArea(font, topComposite);
+
 			createTargetArea(font, topComposite);
 			
 			createIdArea(font, topComposite);
-			createInheritableArea(font, topComposite);
 		}
 		else {
 			layout.marginHeight = convertHorizontalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
@@ -2081,12 +2038,14 @@ class FilterEditDialog extends TrayDialog {
 
 		GridData data;
 		inherited = new Button(inheritableComposite, SWT.CHECK);
+		String label;
+		label = IDEWorkbenchMessages.ResourceFilterPage_applyRecursivelyToFolderStructure;
+		
 		inherited
 				.setText(NLS
 						.bind(
-								IDEWorkbenchMessages.ResourceFilterPage_applyRecursivelyToFolderStructure,
-								null));
-		inherited.setImage(filterGroup.getImage(FilterTypeUtil.MODE, 2));
+								label,
+								resource.getName()));
 		data = new GridData(SWT.FILL, SWT.CENTER, true, false);
 		data.horizontalSpan = 1;
 		inherited.setLayoutData(data);
@@ -2101,10 +2060,40 @@ class FilterEditDialog extends TrayDialog {
 				FilterTypeUtil.INHERITABLE)).booleanValue()));
 	}
 
-	/**
-	 * @param font
-	 * @param composite
-	 */
+	private void createModeArea(Font font, Composite composite) {
+		GridData data;
+		Composite modeComposite = createGroup(font, composite, NLS.bind(
+				IDEWorkbenchMessages.ResourceFilterPage_columnFilterMode,
+				null), true, true, 1);
+		String[] modes = FilterTypeUtil.getModes();
+		includeButton = new Button(modeComposite, SWT.RADIO);
+		includeButton.setText(modes[0]);
+		data = new GridData(SWT.FILL, SWT.CENTER, true, false);
+		includeButton.setLayoutData(data);
+		includeButton.setFont(font);
+		includeButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				FilterTypeUtil.setValue(filter, FilterTypeUtil.MODE,
+						new Integer(0));
+			}
+		});
+		includeButton.setSelection(((Integer) FilterTypeUtil.getValue(
+				filter, FilterTypeUtil.MODE)).intValue() == 0);
+		excludeButton = new Button(modeComposite, SWT.RADIO);
+		excludeButton.setText(modes[1]);
+		data = new GridData(SWT.FILL, SWT.CENTER, true, false);
+		excludeButton.setLayoutData(data);
+		excludeButton.setFont(font);
+		excludeButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				FilterTypeUtil.setValue(filter, FilterTypeUtil.MODE,
+						new Integer(1));
+			}
+		});
+		excludeButton.setSelection(((Integer) FilterTypeUtil.getValue(
+				filter, FilterTypeUtil.MODE)).intValue() == 1);
+	}
+
 	private void createIdArea(Font font, Composite composite) {
 		if (createGroupOnly) {
 			idComposite = createGroup(font, composite, new String(),
@@ -2114,39 +2103,20 @@ class FilterEditDialog extends TrayDialog {
 			idCombo.setLayoutData(data);
 		}
 		else {
-			Composite superIdComposite = createGroup(font, composite, new String(),
-					true, false, 1);
-			GridLayout layout = (GridLayout) superIdComposite.getLayout();
-			layout.marginBottom = 0;
-			layout.marginTop = 0;
-			layout.marginHeight = 0;
-			layout.marginWidth = 0;
-			layout.verticalSpacing = 0;
-			layout.marginLeft = 0;
-			superIdComposite.setLayout(layout);
-			
-			Composite labelComposite = createGroup(font, superIdComposite, new String(),
-					true, false, 2);
-			
-			layout = (GridLayout) labelComposite.getLayout();
-			layout.marginBottom = 0;
-			layout.marginLeft = 0;
-			layout.marginTop = 0;
-			layout.marginHeight = 0;
-			layout.marginWidth = 0;
-			layout.verticalSpacing = 0;
-			labelComposite.setLayout(layout);
-
-			Label label = new Label(labelComposite, SWT.NONE);
-			label.setText(NLS.bind(IDEWorkbenchMessages.ResourceFilterPage_condition, null));
-			label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
-			label.setFont(font);
+			String [] matchers = FilterTypeUtil.getFilterNames(createGroupOnly);
+			boolean hasMoreThanOneMatcher = matchers.length > 1;
 
-			createMatcherCombo(labelComposite, font);
+			if (hasMoreThanOneMatcher) {
+				createMatcherCombo(composite, font);
+				GridData data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+				idCombo.setLayoutData(data);
+			}
 
-			idComposite = createGroup(font, superIdComposite, new String(),
+			idComposite = createGroup(font, composite,
+					hasMoreThanOneMatcher ? IDEWorkbenchMessages.ResourceFilterPage_details: matchers[0],
 					true, true, 1);
-			layout = (GridLayout) idComposite.getLayout();
+
+			GridLayout layout = (GridLayout) idComposite.getLayout();
 			layout.marginBottom = 0;
 			layout.marginTop = 0;
 			layout.marginWidth = 0;
@@ -2173,6 +2143,13 @@ class FilterEditDialog extends TrayDialog {
 					filter.setArguments(new String());
 				setupPatternLine();
 				currentCustomFilterArgumentUI.selectionChanged();
+				getShell().layout(true);
+				Point size = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
+				Point shellSize = getShell().getSize();
+				size.x = Math.max(size.x, shellSize.x);
+				size.y = Math.max(size.y, shellSize.y);
+				getShell().setSize(size);
+				getShell().redraw();
 			}
 		});
 		idCombo.select(0);
@@ -2203,8 +2180,6 @@ class FilterEditDialog extends TrayDialog {
 			currentCustomFilterArgumentUI.dispose();
 			currentCustomFilterArgumentUI = customFilterArgumentUI;
 			currentCustomFilterArgumentUI.create(argumentComposite, font);
-			getShell().layout(true);
-			getShell().redraw();
 		}
 	}
 
@@ -2235,7 +2210,7 @@ class FilterEditDialog extends TrayDialog {
 		GridLayout layout;
 		GridData data;
 		Composite modeComposite;
-		if (group) { 
+		if (group) {
 			Group modeGroup = new Group(composite, SWT.NONE);
 			modeGroup.setText(text);
 			modeComposite = modeGroup;
@@ -2260,27 +2235,24 @@ class FilterEditDialog extends TrayDialog {
 	 */
 	private void createTargetArea(Font font, Composite composite) {
 		GridData data;
-		Composite targetComposite = createGroup(font, composite, 
-				NLS.bind(IDEWorkbenchMessages.ResourceFilterPage_columnFilterTarget, null), false, true, 3);
+		Composite targetComposite = createGroup(font, composite,
+				NLS.bind(IDEWorkbenchMessages.ResourceFilterPage_columnFilterTarget, null), false, true, 1);
 		
 		String[] targets = FilterTypeUtil.getTargets();
 		filesButton = new Button(targetComposite, SWT.RADIO);
 		filesButton.setText(targets[0]);
-		filesButton.setImage(filterGroup.getImage(FilterTypeUtil.TARGET, 0));
 		data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 		filesButton.setLayoutData(data);
 		filesButton.setFont(font);
 
 		foldersButton = new Button(targetComposite, SWT.RADIO);
 		foldersButton.setText(targets[1]);
-		foldersButton.setImage(filterGroup.getImage(FilterTypeUtil.TARGET, 1));
 		data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 		foldersButton.setLayoutData(data);
 		foldersButton.setFont(font);
 
 		filesAndFoldersButton = new Button(targetComposite, SWT.RADIO);
 		filesAndFoldersButton.setText(targets[2]);
-		filesAndFoldersButton.setImage(filterGroup.getImage(FilterTypeUtil.TARGET, 2));
 		data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 		filesAndFoldersButton.setLayoutData(data);
 		filesAndFoldersButton.setFont(font);
@@ -2309,6 +2281,7 @@ class FilterEditDialog extends TrayDialog {
 				FilterTypeUtil.TARGET)).intValue() == 1);
 		filesAndFoldersButton.setSelection(((Integer) FilterTypeUtil.getValue(
 				filter, FilterTypeUtil.TARGET)).intValue() == 2);
+		createInheritableArea(font, targetComposite);
 	}
 
 	protected Control createContents(Composite parent) {
@@ -2318,6 +2291,14 @@ class FilterEditDialog extends TrayDialog {
 		return control;
 	}
 
+	public void updateFinishControls() {
+		if (getButton(OK) != null) {
+			if (currentCustomFilterArgumentUI != null)
+				getButton(OK).setEnabled(currentCustomFilterArgumentUI.validate() == null);
+			else
+				getButton(OK).setEnabled(true);
+		}
+	}
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -2328,19 +2309,17 @@ class FilterEditDialog extends TrayDialog {
 	}
 
 	protected void configureShell(Shell newShell) {
-		Integer index = (Integer) FilterTypeUtil.getValue(filter, FilterTypeUtil.MODE);
 		String title = null;
 		if (creatingNewFilter) {
-			if (index.intValue() == 0)
-				title = IDEWorkbenchMessages.ResourceFilterPage_newFilterDialogTitleIncludeOnly;
+			if (resource.getType() == IResource.PROJECT)
+				title = NLS.bind(IDEWorkbenchMessages.ResourceFilterPage_newFilterDialogTitleProject, resource.getName());
 			else
-				title = IDEWorkbenchMessages.ResourceFilterPage_newFilterDialogTitleExcludeAll;
+				title = NLS.bind(IDEWorkbenchMessages.ResourceFilterPage_newFilterDialogTitleFolder, resource.getName());
 		}
 		else
 			title = IDEWorkbenchMessages.ResourceFilterPage_editFilterDialogTitle;
 		newShell.setText(title);
 		super.configureShell(newShell);
-		newShell.setImage(filterGroup.getImage(FilterTypeUtil.MODE, index.intValue()));
 	}
 
 	private void initialize() {
@@ -2372,6 +2351,18 @@ class FilterEditDialog extends TrayDialog {
 
 		super.okPressed();
 	}
+
+	public int getVerticalDLUsToPixel(int flag) {
+		return convertVerticalDLUsToPixels(flag);
+	}
+
+	public IResource getResource() {
+		return resource;
+	}
+
+	public int getHorizontalDLUsToPixel(int flag) {
+		return convertHorizontalDLUsToPixels(flag);
+	}
 }
 
 interface ICustomFilterArgumentUI {
@@ -2391,10 +2382,10 @@ interface ICustomFilterArgumentUI {
 			Styler fBoldStyler);
 
 	/**
-	 * @throws CoreException 
+	 * @return null if there's no issue
 	 * 
 	 */
-	void validate() throws CoreException;
+	String validate();
 
 	/**
 	 * 
@@ -2429,19 +2420,27 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 	protected Combo multiKey;
 	protected Combo multiOperator;
 	protected Composite multiArgumentComposite;
+	protected Composite conditionComposite;
+	protected Composite descriptionComposite;
 	protected Composite stringArgumentComposite;
+	protected Composite stringTextArgumentComposite;
 	protected Composite attributeStringArgumentComposite;
 	protected Class intiantiatedKeyOperatorType = null;
 	protected TreeMap/* <String, String>*/ valueCache = new TreeMap();
 	protected boolean initializationComplete = false;
+	protected FilterEditDialog dialog;
+	protected Label dummyLabel1;
+	protected Label dummyLabel2;
 	
 	/**
+	 * @param dialog
 	 * @param parentShell
 	 * @param filter
 	 */
-	public MultiMatcherCustomFilterArgumentUI(Shell parentShell,
+	public MultiMatcherCustomFilterArgumentUI(FilterEditDialog dialog, Shell parentShell,
 			FilterCopy filter) {
 		this.shell = parentShell;
+		this.dialog = dialog;
 		this.filter = filter;
 	}
 
@@ -2456,7 +2455,7 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 	 * @see org.eclipse.ui.internal.ide.dialogs.ICustomFilterArgumentUI#dispose()
 	 */
 	public void dispose() {
-		Widget list[] = new Widget[] {multiKey, multiOperator, multiArgumentComposite, stringArgumentComposite, arguments, argumentsLabel, argumentsCaseSensitive, argumentsRegularExpresion, attributeStringArgumentComposite, description};
+		Widget list[] = new Widget[] {multiKey, multiOperator, multiArgumentComposite, stringArgumentComposite, stringTextArgumentComposite, arguments, argumentsLabel, argumentsCaseSensitive, argumentsRegularExpresion, attributeStringArgumentComposite, description, conditionComposite, descriptionComposite, dummyLabel1, dummyLabel2};
 		for (int i = 0; i < list.length; i++) {
 			if (list[i] != null) {
 				list[i].dispose();
@@ -2470,10 +2469,15 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		fContentAssistField = null;
 		intiantiatedKeyOperatorType = null;
 		stringArgumentComposite = null;
+		stringTextArgumentComposite = null;
 		argumentsCaseSensitive = null;
 		argumentsRegularExpresion = null;
 		attributeStringArgumentComposite = null;
 		description = null;
+		conditionComposite = null;
+		descriptionComposite = null;
+		dummyLabel1 = null;
+		dummyLabel2 = null;
 		initializationComplete = false;
 	}
 
@@ -2483,15 +2487,41 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 	public void create(Composite argumentComposite, Font font) {
 		shell = argumentComposite.getShell();
 		GridLayout layout = new GridLayout();
-		layout.numColumns = 3;
+		layout.numColumns = 1;
 		layout.marginWidth = 0;
+		layout.marginHeight = 0;
+		layout.horizontalSpacing = 0;
+		layout.verticalSpacing = 0;
 		argumentComposite.setLayout(layout);
 		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
 		argumentComposite.setLayoutData(data);
 		argumentComposite.setFont(font);
-		createCustomArgumentsArea(font, argumentComposite);
-		argumentComposite.layout(true);
-		createDescriptionArea(font, argumentComposite);
+		
+		conditionComposite = new Composite(argumentComposite, SWT.NONE);
+		layout = new GridLayout();
+		layout.numColumns = 2;
+		layout.marginWidth = 0;
+		layout.marginHeight = 0;
+		layout.horizontalSpacing = 0;
+		conditionComposite.setLayout(layout);
+		conditionComposite.setFont(font);
+		data = new GridData(SWT.FILL, SWT.FILL, true, true);
+		conditionComposite.setLayoutData(data);
+
+		createCustomArgumentsArea(font, conditionComposite);
+		
+		descriptionComposite = new Composite(argumentComposite, SWT.NONE);
+		layout = new GridLayout();
+		layout.numColumns = 1;
+		layout.marginWidth = dialog.getHorizontalDLUsToPixel(IDialogConstants.HORIZONTAL_MARGIN);
+		layout.marginHeight = dialog.getVerticalDLUsToPixel(IDialogConstants.VERTICAL_SPACING);
+		layout.horizontalSpacing = 0;
+		descriptionComposite.setLayout(layout);
+		descriptionComposite.setFont(font);
+		data = new GridData(SWT.FILL, SWT.FILL, true, true);
+		descriptionComposite.setLayoutData(data);
+		
+		createDescriptionArea(font, descriptionComposite);
 		initializationComplete = true;
 	}
 	
@@ -2503,39 +2533,66 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		GridData data;
 		description = new Label(composite, SWT.LEFT | SWT.WRAP);
 		data = new GridData(SWT.FILL, SWT.BEGINNING, true, true);
-		data.widthHint = 300;
-		data.heightHint = 40;
 		data.horizontalSpan = 3;
 		description.setLayoutData(data);
 		description.setFont(font);
-		setupDescriptionText();
+		setupDescriptionText(null);
 	}
 
-	private void setupDescriptionText() {
+	private void setupDescriptionText(String errorString) {
 		if (description != null) {
-			String selectedKey = MultiMatcherLocalization.getMultiMatcherKey(multiKey.getText());
-			String selectedOperator = MultiMatcherLocalization.getMultiMatcherKey(multiOperator.getText());
-			Class selectedKeyOperatorType = FileInfoAttributesMatcher.getTypeForKey(selectedKey, selectedOperator);
-			description.setText(new String());
-			if (selectedKeyOperatorType.equals(String.class)) {
-				if (!argumentsRegularExpresion.getSelection())
-					description.setText(NLS.bind(
-							IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_Matcher, null));
-			}
-			if (selectedKeyOperatorType.equals(Integer.class)) {
-				if (selectedKey.equals(FileInfoAttributesMatcher.KEY_LAST_MODIFIED) || selectedKey.equals(FileInfoAttributesMatcher.KEY_CREATED))
+			if (errorString != null) {
+				// take only the first line of the error string
+				BufferedReader reader = new BufferedReader(new StringReader(errorString));
+				try {
+					String tmp = reader.readLine();
+					if (tmp != null)
+						errorString = tmp;
+				} catch (IOException e) {
+				}
+
+				description.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_RED));
+				description.setText(errorString);
+			} else {
+				description.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
+				String selectedKey = MultiMatcherLocalization.getMultiMatcherKey(multiKey.getText());
+				String selectedOperator = MultiMatcherLocalization.getMultiMatcherKey(multiOperator.getText());
+				Class selectedKeyOperatorType = FileInfoAttributesMatcher.getTypeForKey(selectedKey, selectedOperator);
+				description.setText(new String());
+				if (selectedKeyOperatorType.equals(String.class)) {
+					if (!argumentsRegularExpresion.getSelection())
+						description.setText(NLS.bind(
+								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_Matcher, null));
+				}
+				if (selectedKeyOperatorType.equals(Integer.class)) {
+					if (selectedKey.equals(FileInfoAttributesMatcher.KEY_LAST_MODIFIED) || selectedKey.equals(FileInfoAttributesMatcher.KEY_CREATED))
+						description.setText(NLS.bind(
+								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_TimeInterval, null));
+					else
 					description.setText(NLS.bind(
-							IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_TimeInterval, null));
-				else
-				description.setText(NLS.bind(
-						IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_FileLength, null));
+							IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_FileLength, null));
+				}
 			}
+			shell.layout(true, true);
 		}
 	}
 	
 	private void createCustomArgumentsArea(Font font, Composite composite) {
 		GridData data;
-		multiKey = new Combo(composite, SWT.READ_ONLY);
+
+		multiArgumentComposite = new Composite(composite, SWT.NONE);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 3;
+		layout.marginWidth = dialog.getHorizontalDLUsToPixel(IDialogConstants.HORIZONTAL_MARGIN);
+		layout.horizontalSpacing = dialog.getHorizontalDLUsToPixel(IDialogConstants.HORIZONTAL_SPACING);
+		layout.marginTop = dialog.getVerticalDLUsToPixel(IDialogConstants.VERTICAL_SPACING);
+		layout.marginHeight = 0;
+		multiArgumentComposite.setLayout(layout);
+		multiArgumentComposite.setFont(font);
+		data = new GridData(SWT.FILL, SWT.FILL, true, true);
+		multiArgumentComposite.setLayoutData(data);
+		
+		multiKey = new Combo(multiArgumentComposite, SWT.READ_ONLY);
 		multiKey.setItems(getMultiMatcherKeys());
 		data = new GridData(SWT.LEFT, SWT.TOP, false, false);
 		multiKey.setLayoutData(data);
@@ -2546,9 +2603,21 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 				storeMultiSelection();
 			}
 		});
-
-		multiOperator = new Combo(composite, SWT.READ_ONLY);
+		
+		// calculate max combo width
+		ArrayList allOperators = new ArrayList();
+		String[] keys = getMultiMatcherKeys();
+		for (int i = 0; i < keys.length; i++) {
+			allOperators.addAll(Arrays.asList(getLocalOperatorsForKey(MultiMatcherLocalization.getMultiMatcherKey(keys[i]))));
+		}
+		Combo tmp = new Combo(multiArgumentComposite, SWT.READ_ONLY);
+		tmp.setItems((String []) allOperators.toArray(new String[0]));
+		int maxWidth = tmp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+		tmp.dispose();
+
+		multiOperator = new Combo(multiArgumentComposite, SWT.READ_ONLY);
 		data = new GridData(SWT.LEFT, SWT.TOP, false, false);
+		data.widthHint = maxWidth;
 		multiOperator.setLayoutData(data);
 		multiOperator.setFont(font);
 		multiOperator.addSelectionListener(new SelectionAdapter() {
@@ -2558,20 +2627,6 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 			}
 		});
 		
-		multiArgumentComposite = new Composite(composite, SWT.NONE);
-		
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		layout.marginWidth = 0;
-		layout.horizontalSpacing = 0;
-		layout.verticalSpacing = 0;
-		layout.marginBottom = 0;
-		layout.marginHeight = 0;
-		multiArgumentComposite.setLayout(layout);
-		data = new GridData(SWT.FILL, SWT.TOP, true, true);
-		multiArgumentComposite.setLayoutData(data);
-		multiArgumentComposite.setFont(font);
-
 		FileInfoAttributesMatcher.Argument argument = FileInfoAttributesMatcher.decodeArguments((String) filter.getArguments());
 		String local = MultiMatcherLocalization.getLocalMultiMatcherKey(argument.key);
 		int index = multiKey.indexOf(local);
@@ -2632,6 +2687,14 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 				argumentsCaseSensitive.dispose();
 				argumentsCaseSensitive = null;
 			}
+			if (dummyLabel1 != null) {
+				dummyLabel1.dispose();
+				dummyLabel1 = null;
+			}
+			if (dummyLabel2 != null) {
+				dummyLabel2.dispose();
+				dummyLabel2 = null;
+			}
 			fContentAssistField = null;
 			FileInfoAttributesMatcher.Argument argument = FileInfoAttributesMatcher.decodeArguments((String) filter.getArguments());
 			valueCache.put(intiantiatedKeyOperatorType.getName(), argument.pattern);
@@ -2640,57 +2703,60 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 				argument.pattern = new String();
 			filter.setArguments(FileInfoAttributesMatcher.encodeArguments(argument));
 		}
+
 		if (selectedKeyOperatorType.equals(String.class)) {
+	
+			arguments = new Text(multiArgumentComposite, SWT.SINGLE | SWT.BORDER);
+			GridData data= new GridData(SWT.FILL, SWT.FILL, true, false);
+			data.widthHint = 150;
+			arguments.setLayoutData(data);
+			arguments.setFont(multiArgumentComposite.getFont());
+			arguments.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					validateInputText();
+				}
+			});
+
+			dummyLabel1 = new Label(multiArgumentComposite, SWT.NONE);
+			data = new GridData(SWT.LEFT, SWT.CENTER, true, true);
+			dummyLabel1.setText(new String());
+			data.horizontalSpan = 1;
+			dummyLabel1.setLayoutData(data);
+
+			dummyLabel2 = new Label(multiArgumentComposite, SWT.NONE);
+			data = new GridData(SWT.LEFT, SWT.CENTER, true, true);
+			dummyLabel2.setText(new String());
+			data.horizontalSpan = 1;
+			dummyLabel2.setLayoutData(data);
+
 			stringArgumentComposite = new Composite(multiArgumentComposite, SWT.NONE);
 			
-			GridData data;
 			GridLayout layout = new GridLayout();
 			layout.numColumns = 2;
-			layout.marginWidth = 4;
-			layout.horizontalSpacing = 4;
-			layout.verticalSpacing = 0;
-			layout.marginBottom = 0;
+			layout.marginWidth = 0;
+			layout.marginTop = dialog.getVerticalDLUsToPixel(IDialogConstants.VERTICAL_SPACING) / 2;
 			layout.marginHeight = 0;
+			layout.marginBottom = 0;
 			stringArgumentComposite.setLayout(layout);
-			data = new GridData(SWT.FILL, SWT.TOP, true, true);
+			data = new GridData(SWT.FILL, SWT.CENTER, true, true);
+			data.horizontalSpan = 1;
 			stringArgumentComposite.setLayoutData(data);
 			stringArgumentComposite.setFont(multiArgumentComposite.getFont());
 
-			arguments = new Text(stringArgumentComposite, SWT.SINGLE | SWT.BORDER);
-			data = new GridData(SWT.FILL, SWT.TOP, true, false);
-			data.minimumWidth = 100;
-			arguments.setLayoutData(data);
-			arguments.setFont(stringArgumentComposite.getFont());
-	
-			attributeStringArgumentComposite = new Composite(stringArgumentComposite, SWT.NONE);
-			
-			layout = new GridLayout();
-			layout.numColumns = 1;
-			layout.marginWidth = 0;
-			layout.horizontalSpacing = 4;
-			layout.verticalSpacing = 0;
-			layout.marginBottom = 0;
-			layout.marginHeight = 0;
-			attributeStringArgumentComposite.setLayout(layout);
-			data = new GridData(SWT.FILL, SWT.TOP, false, true);
-			attributeStringArgumentComposite.setLayoutData(data);
-			attributeStringArgumentComposite.setFont(stringArgumentComposite.getFont());
-
-			argumentsCaseSensitive = new Button(attributeStringArgumentComposite, SWT.CHECK);
+			argumentsCaseSensitive = new Button(stringArgumentComposite, SWT.CHECK);
 			argumentsCaseSensitive.setText(NLS.bind(
 					IDEWorkbenchMessages.ResourceFilterPage_caseSensitive, null));
-			data = new GridData(SWT.FILL, SWT.CENTER, false, false);
-			data.minimumWidth = 100;
+			data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 			argumentsCaseSensitive.setLayoutData(data);
-			argumentsCaseSensitive.setFont(stringArgumentComposite.getFont());
+			argumentsCaseSensitive.setFont(multiArgumentComposite.getFont());
 
-			argumentsRegularExpresion = new Button(attributeStringArgumentComposite, SWT.CHECK);
+			argumentsRegularExpresion = new Button(stringArgumentComposite, SWT.CHECK);
 			argumentsRegularExpresion.setText(NLS.bind(
 					IDEWorkbenchMessages.ResourceFilterPage_regularExpression, null));
-			data = new GridData(SWT.FILL, SWT.CENTER, false, false);
+			data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 			data.minimumWidth = 100;
 			argumentsRegularExpresion.setLayoutData(data);
-			argumentsRegularExpresion.setFont(stringArgumentComposite.getFont());
+			argumentsRegularExpresion.setFont(multiArgumentComposite.getFont());
 
 			if (filter.hasStringArguments()) {
 				FileInfoAttributesMatcher.Argument argument = FileInfoAttributesMatcher.decodeArguments((String) filter.getArguments());
@@ -2707,7 +2773,7 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 			});
 			argumentsRegularExpresion.addSelectionListener(new SelectionAdapter() {
 				public void widgetSelected(SelectionEvent e) {
-					setupDescriptionText();
+					setupDescriptionText(null);
 					storeMultiSelection();
 					if (fContentAssistField != null)
 						fContentAssistField.setEnabled(argumentsRegularExpresion.getSelection());
@@ -2724,7 +2790,7 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 			fContentAssistField= new ContentAssistCommandAdapter(
 					arguments,
 					contentAdapter,
-					findProposer, 
+					findProposer,
 					null,
 					new char[] {'\\', '[', '('},
 					true);
@@ -2732,10 +2798,15 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		if (selectedKeyOperatorType.equals(Integer.class)) {
 			GridData data;
 			arguments = new Text(multiArgumentComposite, SWT.SINGLE | SWT.BORDER);
-			data = new GridData(SWT.FILL, SWT.TOP, true, false);
-			data.minimumWidth = 100;
+			data= new GridData(SWT.FILL, SWT.FILL, true, false);
+			data.widthHint = 150;
 			arguments.setLayoutData(data);
 			arguments.setFont(multiArgumentComposite.getFont());
+			arguments.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					validateInputText();
+				}
+			});
 
 			if (filter.hasStringArguments()) {
 				FileInfoAttributesMatcher.Argument argument = FileInfoAttributesMatcher.decodeArguments((String) filter.getArguments());
@@ -2753,8 +2824,8 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		}
 		if (selectedKeyOperatorType.equals(Date.class)) {
 			GridData data;
-			argumentsDate = new DateTime(multiArgumentComposite, SWT.DATE | SWT.MEDIUM);
-			data = new GridData(SWT.FILL, SWT.TOP, true, false);
+			argumentsDate = new DateTime(multiArgumentComposite, SWT.DATE | SWT.MEDIUM | SWT.BORDER);
+			data= new GridData(SWT.FILL, SWT.FILL, true, false);
 			argumentsDate.setLayoutData(data);
 			argumentsDate.setFont(multiArgumentComposite.getFont());
 			argumentsDate.addSelectionListener(new SelectionAdapter() {
@@ -2764,7 +2835,7 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 			});
 			if (filter.hasStringArguments()) {
 				FileInfoAttributesMatcher.Argument argument = FileInfoAttributesMatcher.decodeArguments((String) filter.getArguments());
-				Date date; 
+				Date date;
 				Calendar calendar = Calendar.getInstance();
 				try {
 					date = new Date(Long.parseLong(argument.pattern));
@@ -2799,19 +2870,22 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 					argumentsBoolean.select(Boolean.valueOf(argument.pattern).booleanValue() ? 0:1);
 			}
 		}
-		multiArgumentComposite.layout(true);
 		intiantiatedKeyOperatorType = selectedKeyOperatorType;
 		
 		if (fContentAssistField != null)
 			fContentAssistField.setEnabled(isUsingRegularExpression);
 
-		shell.layout(true);
+		shell.layout(true, true);
 		if (initializationComplete) {
 			Point size = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			shell.setSize(size);
+			Point shellSize = shell.getSize();
+			size.x = Math.max(size.x, shellSize.x);
+			size.y = Math.max(size.y, shellSize.y);
+			if ((size.x > shellSize.x) || (size.y > shellSize.y))
+				shell.setSize(size);
 		}
 		shell.redraw();
-		setupDescriptionText();
+		setupDescriptionText(null);
 	}
 
 	private String[] timeIntervalPrefixes = {"s", "m", "h", "d"};    //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$
@@ -2957,13 +3031,13 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 	public void selectionChanged() {
 	}
 
-	/**
-	 * @throws CoreException  
-	 */
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.ide.dialogs.ICustomFilterArgumentUI#verifyData()
-	 */
-	public void validate() throws CoreException {
+	void validateInputText() {
+		setupDescriptionText(validate());
+		dialog.updateFinishControls();
+	}
+
+	public String validate() {
+		String message = null;
 		if (intiantiatedKeyOperatorType != null) {
 			String selectedKey = MultiMatcherLocalization.getMultiMatcherKey(multiKey.getText());
 			String selectedOperator = MultiMatcherLocalization.getMultiMatcherKey(multiOperator.getText());
@@ -2975,22 +3049,40 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 			if (intiantiatedKeyOperatorType.equals(Date.class) && argumentsDate != null) {
 			}
 			if (intiantiatedKeyOperatorType.equals(String.class) && arguments != null) {
+				argument.pattern = arguments.getText();
+				if (argumentsRegularExpresion != null)
+					argument.regularExpression = argumentsRegularExpresion.getSelection();
+				if (argumentsCaseSensitive != null)
+					argument.caseSensitive = argumentsCaseSensitive.getSelection();
+				String encodedArgument = FileInfoAttributesMatcher.encodeArguments(argument);
+				FilterCopy copy = new FilterCopy(filter);
+				FilterTypeUtil.setValue(copy, FilterTypeUtil.ARGUMENTS, encodedArgument);
+
+				IFilterMatcherDescriptor desc = dialog.getResource().getWorkspace().getFilterMatcherDescriptor(copy.getId());
+				if (desc != null) {
+					try {
+						AbstractFileInfoMatcher matcher = ((FilterDescriptor) desc).createFilter();
+						matcher.initialize(dialog.getResource().getProject(), copy.getArguments());
+					} catch (CoreException e) {
+							message = e.getMessage();
+					}
+				}
 			}
 			if (intiantiatedKeyOperatorType.equals(Integer.class) && arguments != null) {
 				if (selectedKey.equals(FileInfoAttributesMatcher.KEY_LAST_MODIFIED) || selectedKey.equals(FileInfoAttributesMatcher.KEY_CREATED)) {
 					try {
 						convertFromEditableTimeInterval(arguments.getText());
 					} catch (NumberFormatException e) {
-						throw new CoreException(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, Platform.PLUGIN_ERROR, NLS.bind(
-								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_InvalidTimeInterval, arguments.getText()), e));
+						message = NLS.bind(
+								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_InvalidTimeInterval, arguments.getText());
 					}
 				}
 				else {
 					try {
 						convertFromEditableLength(arguments.getText());
 					} catch (NumberFormatException e) {
-						throw new CoreException(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, Platform.PLUGIN_ERROR, NLS.bind(
-								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_InvalidFileLength, arguments.getText()), e));
+						message = NLS.bind(
+								IDEWorkbenchMessages.ResourceFilterPage_multiMatcher_InvalidFileLength, arguments.getText());
 					}
 				}
 			}
@@ -2998,6 +3090,7 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 				
 			}
 		}
+		return message;
 	}
 
 	/* (non-Javadoc)
@@ -3037,21 +3130,24 @@ class MultiMatcherCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 
 class DefaultCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 
-	Shell shell;
-	FilterCopy filter;
+	protected Shell shell;
+	protected FilterCopy filter;
 	protected Text arguments;
 	protected Label argumentsLabel;
 	protected Label description;
 	protected ContentAssistCommandAdapter fContentAssistField;
+	protected FilterEditDialog dialog;
 
-	private static final String REGEX_FILTER_ID = "org.eclipse.core.resources.regexFilterMatcher"; //$NON-NLS-1$
+	public static final String REGEX_FILTER_ID = "org.eclipse.core.resources.regexFilterMatcher"; //$NON-NLS-1$
 
 	/**
+	 * @param dialog
 	 * @param parentShell
 	 * @param filter
 	 */
-	public DefaultCustomFilterArgumentUI(Shell parentShell, FilterCopy filter) {
+	public DefaultCustomFilterArgumentUI(FilterEditDialog dialog, Shell parentShell, FilterCopy filter) {
 		this.shell = parentShell;
+		this.dialog = dialog;
 		this.filter = filter;
 	}
 
@@ -3085,7 +3181,7 @@ class DefaultCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		shell = argumentComposite.getShell();
 		GridLayout layout = new GridLayout();
 		layout.numColumns = 2;
-		layout.marginWidth = 0;
+		layout.marginWidth = dialog.getVerticalDLUsToPixel(IDialogConstants.HORIZONTAL_MARGIN);
 		argumentComposite.setLayout(layout);
 		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
 		argumentComposite.setLayoutData(data);
@@ -3126,7 +3222,7 @@ class DefaultCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		fContentAssistField= new ContentAssistCommandAdapter(
 				arguments,
 				contentAdapter,
-				findProposer, 
+				findProposer,
 				null,
 				new char[] {'\\', '[', '('},
 				true);
@@ -3182,14 +3278,8 @@ class DefaultCustomFilterArgumentUI implements ICustomFilterArgumentUI {
 		description.setFont(font);
 	}
 
-	/**
-	 * @throws CoreException  
-	 */
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.ide.dialogs.ICustomFilterArgumentUI#verifyData()
-	 */
-	public void validate() throws CoreException {
-		// nothing
+	public String validate(){
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -3239,5 +3329,4 @@ class MultiMatcherLocalization {
 		}
 		return null;
 	}
-	
 }
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterPage.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterPage.java
index b8b681b..d196fed 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterPage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Freescale Semiconductor and others.
+ * Copyright (c) 2008, 2010 Freescale Semiconductor and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,7 +12,7 @@
 package org.eclipse.ui.internal.ide.dialogs;
 
 import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.PlatformUI;
@@ -39,15 +39,11 @@ public class ResourceFilterPage extends PropertyPage {
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
 				IIDEHelpContextIds.RESOURCE_FILTER_PROPERTY_PAGE);
 
-		IContainer resource = (IContainer) getElement().getAdapter(
-				IContainer.class);
-		if (resource == null) {
-			IProject project = (IProject) getElement().getAdapter(
-					IProject.class);
-			if (project != null)
-				resource = project;
-		}
-		groupWidget.setContainer(resource);
+		IResource resource = (IResource) getElement().getAdapter(
+				IResource.class);
+		IContainer container = resource instanceof IContainer ? (IContainer) resource
+				: null;
+		groupWidget.setContainer(container);
 
 		return groupWidget.createContents(parent);
 	}
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceInfoPage.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceInfoPage.java
index cb27de9..5931721 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceInfoPage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceInfoPage.java
@@ -29,6 +29,7 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.content.IContentDescription;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.ErrorDialog;
@@ -759,8 +760,10 @@ public class ResourceInfoPage extends PropertyPage {
 		GridData tableData = new GridData();
 		tableData.heightHint = table.getHeaderHeight() + 3 * table.getItemHeight();
 		table.setLayoutData(tableData);
-		table.setBackgroundMode(SWT.INHERIT_FORCE);
-
+		if (Platform.WS_GTK.equals(Platform.getWS()))
+			// Removes gray padding around buttons embedded in the table on
+			// GTK, see bug 312240
+			table.setBackgroundMode(SWT.INHERIT_FORCE);
 		createExecutableWarning(composite, font);
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceTreeAndListGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceTreeAndListGroup.java
index 1af2026..2077b2a 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceTreeAndListGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceTreeAndListGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -519,6 +519,43 @@ public class ResourceTreeAndListGroup extends EventManager implements
     }
 
     /**
+     *	Returns a flat list of all of the leaf elements.
+     *
+     *	@return all of the leaf elements.
+     */
+    public List getAllListItems() {
+
+        final ArrayList returnValue = new ArrayList();
+
+        IElementFilter passThroughFilter = new IElementFilter() {
+
+            public void filterElements(Collection elements,
+                    IProgressMonitor monitor) {
+                returnValue.addAll(elements);
+            }
+
+            public void filterElements(Object[] elements,
+                    IProgressMonitor monitor) {
+                for (int i = 0; i < elements.length; i++) {
+                    returnValue.add(elements[i]);
+                }
+            }
+        };
+
+        try {
+            Object[] children = treeContentProvider.getChildren(root);
+            for (int i = 0; i < children.length; ++i) {
+                findAllSelectedListElements(children[i], null, true, passThroughFilter,
+                        null);
+            }
+        } catch (InterruptedException exception) {
+            return new ArrayList();
+        }
+        return returnValue;
+
+    }
+
+    /**
      *	Returns a list of all of the items that are white checked.
      * 	Any folders that are white checked are added and then any files
      *  from white checked folders are added. 
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java
index a89dfdd..f2fa93a 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
index 5ca549f..5b64168 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties
@@ -56,7 +56,7 @@ hideAdvanced = << &Advanced
 editfilters = Resource &Filters...
 useDefaultLocation=Use &default location
 createLinkedFolder=Link to alternate location (&Linked Folder)
-createVirtualFolder=Folder is not located in the file system (&Virtual Folder)
+createVirtualFolder=Folder is not located in the file system (Vi&rtual Folder)
 
 # ==============================================================================
 # Workbench Actions
@@ -483,7 +483,7 @@ IDEWorkspacePreference_otherLineDelim= Ot&her:
 IDEWorkspacePreference_relatedLink = See <a>''{0}''</a> for workspace startup and shutdown preferences.
 IDEWorkspacePreference_openReferencedProjects = Open referenced projects when a project is opened
 IDEWorkspacePreference_closeUnrelatedProjectsToolTip = Close unrelated projects without prompt
-IDEWorkspacePreference_workspaceName=Workspace name (shown in window title):
+IDEWorkspacePreference_workspaceName=Wor&kspace name (shown in window title):
 
 # --- Linked Resources ---
 LinkedResourcesPreference_explanation = Path variables specify locations in the file system. The locations of linked resources\nmay be specified relative to these path variables.
@@ -495,6 +495,10 @@ LinkedResourcesPreference_dragAndDropVirtualFolderHandlingMessage = Drag and dro
 LinkedResourcesPreference_link=&Link
 linkedResourcesPreference_copy=&Copy
 LinkedResourcesPreference_linkAndVirtualFolder=Link and create &virtual folders
+LinkedResourcesPreference_promptVirtual=Pr&ompt
+LinkedResourcesPreference_linkVirtual=Lin&k
+linkedResourcesPreference_copyVirtual=Co&py
+LinkedResourcesPreference_linkAndVirtualFolderVirtual=Link and create v&irtual folders
 
 # The following six keys are marked as unused by the NLS search, but they are indirectly used
 # and should be removed.
@@ -580,15 +584,16 @@ ResourceFilterPage_addButtonLabel=&Add...
 ResourceFilterPage_addGroupButtonLabel=Add &Group...
 ResourceFilterPage_editButtonLabel=&Edit...
 ResourceFilterPage_removeButtonLabel=&Remove
-ResourceFilterPage_columnFilterMode=Operation
+ResourceFilterPage_columnFilterMode=Filter type
 ResourceFilterPage_columnFilterDescription=Description
 ResourceFilterPage_columnFilterTarget=Applies to
 ResourceFilterPage_columnFilterPattern=&Pattern
-ResourceFilterPage_applyRecursivelyToFolderStructure=Apply &recursively to folder structure
-ResourceFilterPage_condition=Con&dition:
+ResourceFilterPage_applyRecursivelyToFolderStructure=All children (recursi&ve)
+ResourceFilterPage_recursive=(recursive)
+ResourceFilterPage_details=Filter Details
 ResourceFilterPage_caseSensitive=&Case sensitive
 ResourceFilterPage_regularExpression=Re&gular expression
-ResourceFilterPage_multiMatcher_Matcher=(* = any string, ? = any character, \ = escape for literals: * ? \\)
+ResourceFilterPage_multiMatcher_Matcher=(* = any string, ? = any character, \\ = escape for literals: * ? \\)
 ResourceFilterPage_multiMatcher_FileLength=(* = bytes, *k = kilobytes, *m = megabytes, *g = gigabytes)
 ResourceFilterPage_multiMatcher_TimeInterval= (*s = seconds, *m = minutes, *h = hours, *d = days)
 ResourceFilterPage_multiMatcher_InvalidFileLength=Invalid file length syntax: {0}
@@ -601,8 +606,8 @@ ResourceFilterPage_filesAndFolders=Files &and folders
 ResourceFilterPage_files=&Files
 ResourceFilterPage_folders=F&olders
 ResourceFilterPage_editFilterDialogTitle=Edit Resource Filter
-ResourceFilterPage_newFilterDialogTitleIncludeOnly=Add 'Include Only' Resource Filter
-ResourceFilterPage_newFilterDialogTitleExcludeAll=Add 'Exclude All' Resource Filter
+ResourceFilterPage_newFilterDialogTitleProject=Add Resource Filter for project {0}
+ResourceFilterPage_newFilterDialogTitleFolder=Add Resource Filter for folder {0}
 ResourceFilterPage_addSubFilterActionLabel=&Add...
 ResourceFilterPage_addSubFilterGroupActionLabel=Add &Group...
 ResourceFilterPage_removeFilterActionLabel=&Remove
@@ -641,10 +646,10 @@ ResourceInfo_fileEncodingTitle = Default encoding for &text files
 ResourceInfo_fileContentEncodingFormat = &Default (determined from content: {0})
 ResourceInfo_fileContainerEncodingFormat = Default (&inherited from container: {0})
 ResourceInfo_containerEncodingFormat = &Inherited from container ({0})
-ResourceInfo_exWarning= Removing the executable flag on a directory will cause its children to become unreadable.
+ResourceInfo_exWarning= Removing the executable flag on a folder will cause its children to become unreadable.
 ResourceInfo_edit=&Edit...
 ResourceInfo_attributes=Attributes:
-ResourceInfo_permissions=Permissions:
+ResourceInfo_permissions=Pe&rmissions:
 ResourceInfo_owner=Owner
 ResourceInfo_group=Group
 ResourceInfo_other=Other
@@ -662,7 +667,7 @@ ProjectLinkedResourcePage_linkedResourcesTabTitle=Linked Resources
 
 # --- Linked Resource Editor ---
 LinkedResourceEditor_editLinkedLocation=&Edit...
-LinkedResourceEditor_convertToVariableLocation=&Convert
+LinkedResourceEditor_convertToVariableLocation=&Convert...
 LinkedResourceEditor_resourceName=Resource Name
 LinkedResourceEditor_path=Path
 LinkedResourceEditor_location=Location
@@ -678,6 +683,8 @@ LinkedResourceEditor_unableToCreateVariable=Unable to create variable ''{0}'' fo
 LinkedResourceEditor_unableToFindCommonPathSegments=Unable to find common path segments for the following resources:
 LinkedResourceEditor_convertAbsolutePathLocations=Convert Absolute Path Locations to Variable Relative
 LinkedResourceEditor_descriptionBlock=Linked resources in project ''{0}'':
+LinkedResourceEditor_convertTitle = Convert linked resource locations
+LinkedResourceEditor_convertMessage = Are you sure you want to convert the linked resource location(s) between absolute and variable relative paths?  This operation cannot be undone.  
 
 # ==============================================================================
 # Editors
@@ -701,7 +708,7 @@ QuickStartAction_openEditorException = An exception occurred when opening the ed
 # Dialogs
 # ==============================================================================
 Question = Question
-Always = &Always
+Always = Alwa&ys
 Never = &Never
 Prompt = &Prompt
 
@@ -780,11 +787,13 @@ CreateLinkedResourceGroup_linkRequiredUnderAGroup= Only linked resources and oth
 PathVariablesBlock_variablesLabel = &Defined path variables:
 PathVariablesBlock_variablesLabelForResource = &Defined path variables for resource ''{0}'':
 PathVariablesBlock_addVariableButton = &New...
-PathVariablesBlock_editVariableButton = &Edit...
+PathVariablesBlock_editVariableButton = Edi&t...
 PathVariablesBlock_removeVariableButton = &Remove
 PathVariablesBlock_nameColumn=Name
 PathVariablesBlock_valueColumn=Value
 
+ResourceFilterEditDialog_title=Edit Resource Filters
+
 PathVariableSelectionDialog_title = Select Path Variable
 PathVariableSelectionDialog_extendButton = &Extend...
 PathVariableSelectionDialog_ExtensionDialog_title = Variable Extension
@@ -807,7 +816,7 @@ ImportTypeDialog_importElementsAsTooltip=Link locations will be absolute path lo
 ImportTypeDialog_importElementsAsTooltipSet=Link locations will be relative to a path variable, rather than absolute path locations
 ImportTypeDialog_editVariables=Edit Variables...
 ImportTypeDialog_alwaysPerformThisOperation=&Always perform the selected operation
-ImportTypeDialog_alwaysUseLocationWhenLinkingFiles=&Always use the selected location
+ImportTypeDialog_configureSettings=<a>Configure Drag and Drop Settings...</a>
 # ==============================================================================
 # Editor Framework
 # ==============================================================================
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java
index e69de29..fc27d77 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java
@@ -0,0 +1,10 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/FileInfoAttributesMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/FileInfoAttributesMatcher.java
index 90caf52..dd71534 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/FileInfoAttributesMatcher.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/FileInfoAttributesMatcher.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Freescale Semiconductor and others.
+ * Copyright (c) 2008, 2010 Freescale Semiconductor and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java
index 44ca268..58b3a3a 100755
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java
@@ -23,6 +23,10 @@ import org.eclipse.ui.internal.ide.StringMatcher;
  */
 public class StringFileInfoMatcher extends AbstractFileInfoMatcher {
 
+	/**
+	 */
+	public static String ID = "org.eclipse.ui.ide.patternFilterMatcher"; //$NON-NLS-1$
+	
 	StringMatcher matcher = null;
 	/**
 	 * Creates a new factory for this filter type.
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/ContainerDescription.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/ContainerDescription.java
index 1f2241b..c788297 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/ContainerDescription.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/ContainerDescription.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/FolderDescription.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/FolderDescription.java
index fca20b4..f570490 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/FolderDescription.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/FolderDescription.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/UndoMessages.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/UndoMessages.java
index 0f295d7..49e77b3 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/UndoMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/UndoMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/messages.properties b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/messages.properties
index 60249bf..dc3ab03 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
+# Copyright (c) 2006, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/CompatibilityMarkerFieldFilterGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/CompatibilityMarkerFieldFilterGroup.java
index 3ac9814..8ed3eaa 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/CompatibilityMarkerFieldFilterGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/CompatibilityMarkerFieldFilterGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/DeltaMarkerEntry.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/DeltaMarkerEntry.java
index 8144fc1..9cc5dbd 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/DeltaMarkerEntry.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/DeltaMarkerEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
index bc6a320..f302bc6 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/GroupsContribution.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/GroupsContribution.java
index 9adf1f5..93d23dd 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/GroupsContribution.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/GroupsContribution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerCompletionField.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerCompletionField.java
index 50ef48a..b518044 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerCompletionField.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerCompletionField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerContentGenerator.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerContentGenerator.java
index e6cb59e..5fb2670 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerContentGenerator.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerContentGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerDescriptionField.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerDescriptionField.java
index 360c490..618bafa 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerDescriptionField.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerDescriptionField.java
@@ -1,7 +1,5 @@
-package org.eclipse.ui.internal.views.markers;
-
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +8,7 @@ package org.eclipse.ui.internal.views.markers;
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
+package org.eclipse.ui.internal.views.markers;
 
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerFieldFilterGroup.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerFieldFilterGroup.java
index 6448924..89ce7da 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerFieldFilterGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerFieldFilterGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Broadcom Corp. - James Blackburn -  Fix for Bug 305529 -  
+ *     					[Markers] NPE in MarkerFieldEditor if MarkerFieldConfiguration scope is unset
  *******************************************************************************/
 
 package org.eclipse.ui.internal.views.markers;
@@ -179,8 +181,9 @@ class MarkerFieldFilterGroup {
 					fieldFilter.initialize(values);
 			}
 		}
-		fieldFilters = new MarkerFieldFilter[filters.size()];
-		filters.toArray(fieldFilters);
+		MarkerFieldFilter[] newFilters = new MarkerFieldFilter[filters.size()];
+		filters.toArray(newFilters);
+		fieldFilters = newFilters;
 	}
 
 	/**
@@ -537,13 +540,13 @@ class MarkerFieldFilterGroup {
 
 		String scopeValue = element.getAttribute(ATTRIBUTE_SCOPE);
 
-		if (scopeValue.equals(ATTRIBUTE_ON_SELECTED_ONLY))
+		if (ATTRIBUTE_ON_SELECTED_ONLY.equals(scopeValue))
 			return ON_SELECTED_ONLY;
 
-		if (scopeValue.equals(ATTRIBUTE_ON_SELECTED_AND_CHILDREN))
+		if (ATTRIBUTE_ON_SELECTED_AND_CHILDREN.equals(scopeValue))
 			return ON_SELECTED_AND_CHILDREN;
 
-		if (scopeValue.equals(ATTRIBUTE_ON_ANY_IN_SAME_CONTAINER))
+		if (ATTRIBUTE_ON_ANY_IN_SAME_CONTAINER.equals(scopeValue))
 			return ON_ANY_IN_SAME_CONTAINER;
 
 		return ON_ANY;
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerPriorityField.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerPriorityField.java
index 0e8b095..5ae8cad 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerPriorityField.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerPriorityField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSortUtil.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSortUtil.java
index 58be474..57cc09b 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSortUtil.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MarkerSortUtil.java
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (c) 1994
+ * Copyright (c) 1994, 2009
  * Hewlett-Packard Company
  *
  * Permission to use, copy, modify, distribute and sell this software
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MockMarkerEntry.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MockMarkerEntry.java
index ff1d51f..74991ed 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MockMarkerEntry.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/MockMarkerEntry.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, 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.markers;
 /**
  * @since 3.4
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
index 5317567..e302957 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/SortFieldContribution.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/SortFieldContribution.java
index 64a6378..cff6aa8 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/SortFieldContribution.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/SortFieldContribution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/TypesConfigurationArea.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/TypesConfigurationArea.java
index 1ee2a2a..3a6bd52 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/TypesConfigurationArea.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/TypesConfigurationArea.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/UIUpdateJob.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/UIUpdateJob.java
index 8e01280..3ebacff 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/UIUpdateJob.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/UIUpdateJob.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/ArchiveFileExportOperation.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/ArchiveFileExportOperation.java
index 1c3736e..53710ec 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/ArchiveFileExportOperation.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/ArchiveFileExportOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/DataTransferMessages.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/DataTransferMessages.java
index face643..e99c29f 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/DataTransferMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/DataTransferMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -54,8 +54,13 @@ public class DataTransferMessages extends NLS {
 	public static String FileImport_createComplete;
 	public static String FileImport_createSelectedFolders;
 	public static String FileImport_createVirtualFolders;
-	public static String FileImport_createLinkedFiles;
+	public static String FileImport_importElementsAs;
+	public static String FileImport_createVirtualFoldersTooltip;
+	public static String FileImport_createLinksInWorkspace;
+	public static String FileImport_advanced;
 	public static String FileImport_noneSelected;
+	public static String FileImport_cannotImportFilesUnderAVirtualFolder;
+	public static String FileImport_haveToCreateLinksUnderAVirtualFolder;
 	public static String FileImport_invalidSource;
 	public static String FileImport_sourceEmpty;
 	public static String FileImport_importProblems;
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/MinimizedFileSystemElement.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/MinimizedFileSystemElement.java
index 74e38cc..cfeb762 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/MinimizedFileSystemElement.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/MinimizedFileSystemElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardFileSystemResourceImportPage1.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardFileSystemResourceImportPage1.java
index 2a70497..2e49488 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardFileSystemResourceImportPage1.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardFileSystemResourceImportPage1.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@ package org.eclipse.ui.internal.wizards.datatransfer;
 import java.io.File;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -43,6 +44,7 @@ import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -58,6 +60,7 @@ import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.FileSystemElement;
 import org.eclipse.ui.dialogs.WizardResourceImportPage;
+import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.dialogs.IElementFilter;
 import org.eclipse.ui.internal.ide.dialogs.RelativePathVariableGroup;
 import org.eclipse.ui.internal.ide.filesystem.FileSystemStructureProvider;
@@ -66,6 +69,7 @@ import org.eclipse.ui.model.WorkbenchContentProvider;
 import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider;
 import org.eclipse.ui.wizards.datatransfer.ImportOperation;
 
+
 /**
  *	Page 1 of the base resource import-from-file-system Wizard
  */
@@ -82,8 +86,10 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 
     protected Button createVirtualFoldersButton;
 
-    protected Button createLinkedFileButton;
+    protected Button createLinksInWorkspaceButton;
     
+	protected Button advancedButton;
+
     protected RelativePathVariableGroup relativePathVariableGroup;
     
     protected String pathVariable;
@@ -110,7 +116,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 
     private final static String STORE_CREATE_VIRTUAL_FOLDERS_ID = "WizardFileSystemResourceImportPage1.STORE_CREATE_VIRTUAL_FOLDERS_ID";//$NON-NLS-1$
 
-    private final static String STORE_CREATE_LINKED_RESOURCES_ID = "WizardFileSystemResourceImportPage1.STORE_CREATE_LINKED_RESOURCES_ID";//$NON-NLS-1$
+    private final static String STORE_CREATE_LINKS_IN_WORKSPACE_ID = "WizardFileSystemResourceImportPage1.STORE_CREATE_LINKS_IN_WORKSPACE_ID";//$NON-NLS-1$
 
     private final static String STORE_PATH_VARIABLE_SELECTED_ID = "WizardFileSystemResourceImportPage1.STORE_PATH_VARIABLE_SELECTED_ID";//$NON-NLS-1$
 
@@ -128,6 +134,17 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 
     protected static final String SOURCE_EMPTY_MESSAGE = DataTransferMessages.FileImport_sourceEmpty;
 
+	private Composite linkedResourceComposite;
+
+	/**
+	 * Height of the "advanced" linked resource group. Set when the advanced group is first made
+	 * visible.
+	 */
+	private int linkedResourceGroupHeight= -1;
+
+	private Composite linkedResourceParent;
+
+
     /**
      *	Creates an instance of this class
      */
@@ -157,14 +174,14 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
      * 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 
+     * 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 
+     *  <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
@@ -208,9 +225,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
         layout.makeColumnsEqualWidth = true;
         buttonComposite.setLayout(layout);
         buttonComposite.setFont(parent.getFont());
-        GridData buttonData = new GridData(GridData.VERTICAL_ALIGN_FILL
-                | GridData.HORIZONTAL_ALIGN_FILL);
-        buttonData.horizontalSpan = 2;
+        GridData buttonData = new GridData(SWT.FILL, SWT.FILL, true, false);
         buttonComposite.setLayoutData(buttonData);
 
         // types edit button
@@ -271,64 +286,97 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
         overwriteExistingResourcesCheckbox.setFont(optionsGroup.getFont());
         overwriteExistingResourcesCheckbox.setText(DataTransferMessages.FileImport_overwriteExisting);
 
-		Composite radioGroup = new Composite(optionsGroup, 0);
-		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		radioGroup.setFont(optionsGroup.getFont());
-		radioGroup.setLayoutData(gridData);
+        // create containers radio
+        createContainerStructureButton = new Button(optionsGroup, SWT.RADIO);
+        createContainerStructureButton.setFont(optionsGroup.getFont());
+        createContainerStructureButton.setText(DataTransferMessages.FileImport_createComplete);
+        createContainerStructureButton.setSelection(false);
 
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginWidth= 0;
-		layout.marginHeight= 0;
-		layout.marginLeft= 0;
-		layout.marginRight= 0;
-		layout.marginTop= 0;
-		layout.marginBottom= 0;
-		radioGroup.setLayout(layout);
+        createContainerStructureButton.addSelectionListener(new SelectionAdapter() {
+        	public void widgetSelected(SelectionEvent e) {
+        		updateWidgetEnablements();
+        	}
+        });
 
         // create selection only radio
-        createOnlySelectedButton = new Button(radioGroup, SWT.RADIO);
+        createOnlySelectedButton = new Button(optionsGroup, SWT.RADIO);
         createOnlySelectedButton.setFont(optionsGroup.getFont());
         createOnlySelectedButton.setText(DataTransferMessages.FileImport_createSelectedFolders);
         createOnlySelectedButton.setSelection(true);
 
-        // create containers radio
-        createContainerStructureButton = new Button(radioGroup, SWT.RADIO);
-        createContainerStructureButton.setFont(optionsGroup.getFont());
-        createContainerStructureButton.setText(DataTransferMessages.FileImport_createComplete);
-        createContainerStructureButton.setSelection(false);
-
-        // create virtual folders check
-        createVirtualFoldersButton = new Button(optionsGroup, SWT.CHECK);
-        createVirtualFoldersButton.setFont(optionsGroup.getFont());
-        createVirtualFoldersButton.setText(DataTransferMessages.FileImport_createVirtualFolders);
-        createVirtualFoldersButton.setSelection(false);
-
-        createVirtualFoldersButton.addSelectionListener(new SelectionAdapter() {
+        createOnlySelectedButton.addSelectionListener(new SelectionAdapter() {
         	public void widgetSelected(SelectionEvent e) {
-        		setupRelativePathVariableEnablement();
+        		updateWidgetEnablements();
         	}
         });
 
+        linkedResourceParent= optionsGroup;
+        if (!ResourcesPlugin.getPlugin().getPluginPreferences().getBoolean(ResourcesPlugin.PREF_DISABLE_LINKING)) {
+			advancedButton= new Button(optionsGroup, SWT.PUSH);
+			advancedButton.setFont(optionsGroup.getFont());
+			advancedButton.setText(IDEWorkbenchMessages.showAdvanced);
+			GridData data= setButtonLayoutData(advancedButton);
+			data.horizontalAlignment= GridData.BEGINNING;
+			advancedButton.setLayoutData(data);
+			advancedButton.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					handleAdvancedButtonSelect();
+				}
+			});
+        }
+		updateWidgetEnablements();
+	}
+
+	private Composite createAdvancedSection(Composite parent) {
+		Composite linkedResourceComposite= new Composite(parent, SWT.NONE);
+		linkedResourceComposite.setFont(parent.getFont());
+		linkedResourceComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		GridLayout layout= new GridLayout();
+		layout.marginHeight= 0;
+		layout.marginWidth= 0;
+		linkedResourceComposite.setLayout(layout);
+
+
         // create linked resource check
-        createLinkedFileButton = new Button(optionsGroup, SWT.CHECK);
-        createLinkedFileButton.setFont(optionsGroup.getFont());
-        createLinkedFileButton.setText(DataTransferMessages.FileImport_createLinkedFiles);
-        createLinkedFileButton.setSelection(false);
+		createLinksInWorkspaceButton= new Button(linkedResourceComposite, SWT.CHECK);
+		createLinksInWorkspaceButton.setFont(parent.getFont());
+        createLinksInWorkspaceButton.setText(DataTransferMessages.FileImport_createLinksInWorkspace);
+        createLinksInWorkspaceButton.setSelection(false);
         
-        createLinkedFileButton.addSelectionListener(new SelectionAdapter() {
+        createLinksInWorkspaceButton.addSelectionListener(new SelectionAdapter() {
         	public void widgetSelected(SelectionEvent e) {
-        		setupRelativePathVariableEnablement();
+        		updateWidgetEnablements();
         	}
         });
+
+		Button tmp= new Button(linkedResourceComposite, SWT.CHECK);
+        int indent = tmp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+        tmp.dispose();
         
-		Composite relativeGroup = new Composite(optionsGroup, 0);
+        // create virtual folders check
+		createVirtualFoldersButton= new Button(linkedResourceComposite, SWT.CHECK);
+		createVirtualFoldersButton.setFont(parent.getFont());
+        createVirtualFoldersButton.setText(DataTransferMessages.FileImport_createVirtualFolders);
+        createVirtualFoldersButton.setToolTipText(DataTransferMessages.FileImport_createVirtualFoldersTooltip);
+        createVirtualFoldersButton.setSelection(false);
+
+        createVirtualFoldersButton.addSelectionListener(new SelectionAdapter() {
+        	public void widgetSelected(SelectionEvent e) {
+        		updateWidgetEnablements();
+        	}
+        });
+		GridData gridData= new GridData(SWT.FILL, SWT.FILL, true, true);
+		gridData.horizontalSpan = 2;
+		gridData.horizontalIndent = indent;
+		createVirtualFoldersButton.setLayoutData(gridData);
+
+		Composite relativeGroup= new Composite(linkedResourceComposite, 0);
 		gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		gridData.horizontalIndent = 12;
-		relativeGroup.setFont(optionsGroup.getFont());
+		gridData.horizontalIndent = indent;
+		relativeGroup.setFont(parent.getFont());
 		relativeGroup.setLayoutData(gridData);
 
-		layout = new GridLayout();
+		layout= new GridLayout();
 		layout.numColumns = 2;
 		layout.marginWidth= 0;
 		layout.marginHeight= 0;
@@ -340,7 +388,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 		layout.horizontalSpacing = 0;
 		relativeGroup.setLayout(layout);
 
-		relativePathVariableGroup = new RelativePathVariableGroup(new RelativePathVariableGroup.IModel() {
+        relativePathVariableGroup = new RelativePathVariableGroup(new RelativePathVariableGroup.IModel() {
 			public IResource getResource() {
 				IPath path = getContainerFullPath();
 				if (path != null)
@@ -353,29 +401,47 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 			public String getVariable() {
 				return pathVariable;
 			}
-        });
+        }, DataTransferMessages.FileImport_importElementsAs
+        );
         relativePathVariableGroup.createContents(relativeGroup);
         
         
-    	setupRelativePathVariableEnablement();
+        updateWidgetEnablements();
 		relativePathVariableGroup.setSelection(true);
+
+		return linkedResourceComposite;
+
     }
 
 	/**
+	 * Shows/hides the advanced option widgets.
 	 * 
+	 * @since 3.6
 	 */
-	private void setupRelativePathVariableEnablement() {
-		IPath path = getContainerFullPath();
-    	if (path != null && relativePathVariableGroup != null) {
-			IResource target = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
-			if (target != null && target.isVirtual()) {
-				createLinkedFileButton.setSelection(true);
-				createVirtualFoldersButton.setSelection(true);
+	private void handleAdvancedButtonSelect() {
+		Shell shell= getShell();
+		Point shellSize= shell.getSize();
+		Composite composite= (Composite)getControl();
+
+		if (linkedResourceComposite != null) {
+			linkedResourceComposite.dispose();
+			linkedResourceComposite= null;
+			createLinksInWorkspaceButton = null;
+			createVirtualFoldersButton = null;
+			relativePathVariableGroup = null;
+			composite.layout();
+			shell.setSize(shellSize.x, shellSize.y - linkedResourceGroupHeight);
+			advancedButton.setText(IDEWorkbenchMessages.showAdvanced);
+		} else {
+			linkedResourceComposite= createAdvancedSection(linkedResourceParent);
+			if (linkedResourceGroupHeight == -1) {
+				Point groupSize= linkedResourceComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+				linkedResourceGroupHeight= groupSize.y;
 			}
-    	}
-		if (createVirtualFoldersButton.getSelection())
-			createLinkedFileButton.setSelection(true);
-		relativePathVariableGroup.setEnabled(createLinkedFileButton.getSelection());
+			shell.setSize(shellSize.x, shellSize.y + linkedResourceGroupHeight);
+			composite.layout();
+			advancedButton.setText(IDEWorkbenchMessages.hideAdvanced);
+		}
 	}
 
     /**
@@ -588,7 +654,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
     }
 
     /**
-     * Returns a content provider for <code>FileSystemElement</code>s that returns 
+     * Returns a content provider for <code>FileSystemElement</code>s that returns
      * only files as children.
      */
     protected ITreeContentProvider getFileProvider() {
@@ -622,7 +688,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
     }
 
     /**
-     * Returns a content provider for <code>FileSystemElement</code>s that returns 
+     * Returns a content provider for <code>FileSystemElement</code>s that returns
      * only folders as children.
      */
     protected ITreeContentProvider getFolderProvider() {
@@ -762,7 +828,19 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
      *  Import the resources with extensions as specified by the user
      */
     protected boolean importResources(List fileSystemObjects) {
-        ImportOperation operation = new ImportOperation(getContainerFullPath(),
+        ImportOperation operation;
+        
+        boolean shouldImportTopLevelFoldersRecursively = allItemsAreChecked() &&
+        											createOnlySelectedButton.getSelection() &&
+        											(createLinksInWorkspaceButton != null && createLinksInWorkspaceButton.getSelection()) &&
+        											(createVirtualFoldersButton != null && createVirtualFoldersButton.getSelection() == false);
+		
+        if (shouldImportTopLevelFoldersRecursively)
+            operation = new ImportOperation(getContainerFullPath(),
+                    getSourceDirectory(), fileSystemStructureProvider,
+                    this, Arrays.asList(new File[] {getSourceDirectory()}));
+        else
+        	operation = new ImportOperation(getContainerFullPath(),
                 getSourceDirectory(), fileSystemStructureProvider,
                 this, fileSystemObjects);
 
@@ -783,7 +861,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 					relativePathVariableGroup.selectVariable(preferedVariable);
 			}
     	}
-    	setupRelativePathVariableEnablement();
+    	updateWidgetEnablements();
     }
 
    	/**
@@ -794,12 +872,13 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
                 .getSelection());
         op.setOverwriteResources(overwriteExistingResourcesCheckbox
                 .getSelection());
-        op.setVirtualFolders(createVirtualFoldersButton
-                .getSelection());
-        op.setCreateLinkFilesOnly(createLinkedFileButton
-                .getSelection());
-        if (relativePathVariableGroup.getSelection())
-        	op.setRelativeVariable(pathVariable);
+        if (createLinksInWorkspaceButton != null && createLinksInWorkspaceButton.getSelection()) {
+        	op.setCreateLinks(true);
+	        op.setVirtualFolders(createVirtualFoldersButton
+	                .getSelection());
+	        if (relativePathVariableGroup.getSelection())
+	        	op.setRelativeVariable(pathVariable);
+        }
     }
 
     /**
@@ -807,7 +886,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
      * has been specified for export by the user.
      *
      * @param extension the resource name
-     * @return <code>true</code> if the resource name is suitable for export based 
+     * @return <code>true</code> if the resource name is suitable for export based
      *   upon its extension
      */
     protected boolean isExportableExtension(String extension) {
@@ -865,7 +944,7 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
 				sourceNameField.add(sourceNames[i]);
 			}
 
-            // radio buttons and checkboxes	
+            // radio buttons and checkboxes
             overwriteExistingResourcesCheckbox.setSelection(settings
                     .getBoolean(STORE_OVERWRITE_EXISTING_RESOURCES_ID));
 
@@ -874,21 +953,24 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
             createContainerStructureButton.setSelection(createStructure);
             createOnlySelectedButton.setSelection(!createStructure);
 
-            boolean createVirtualFolders = settings
-            		.getBoolean(STORE_CREATE_VIRTUAL_FOLDERS_ID);
-            createVirtualFoldersButton.setSelection(createVirtualFolders);
-
-            boolean createLinkedResources = settings
-    				.getBoolean(STORE_CREATE_LINKED_RESOURCES_ID);
-            createLinkedFileButton.setSelection(createLinkedResources);
-
-            boolean pathVariableSelected = settings
-					.getBoolean(STORE_PATH_VARIABLE_SELECTED_ID);
-            relativePathVariableGroup.setSelection(pathVariableSelected);
-
-            pathVariable = settings.get(STORE_PATH_VARIABLE_NAME_ID);
-        	relativePathVariableGroup.selectVariable(pathVariable);
-        	setupRelativePathVariableEnablement();
+            if (createVirtualFoldersButton != null) {
+	            boolean createVirtualFolders = settings
+	            		.getBoolean(STORE_CREATE_VIRTUAL_FOLDERS_ID);
+	            createVirtualFoldersButton.setSelection(createVirtualFolders);
+	
+	            boolean createLinkedResources = settings
+	    				.getBoolean(STORE_CREATE_LINKS_IN_WORKSPACE_ID);
+	            createLinksInWorkspaceButton.setSelection(createLinkedResources);
+	
+	            boolean pathVariableSelected = settings
+						.getBoolean(STORE_PATH_VARIABLE_SELECTED_ID);
+	            relativePathVariableGroup.setSelection(pathVariableSelected);
+	
+	            pathVariable = settings.get(STORE_PATH_VARIABLE_NAME_ID);
+	            if (pathVariable != null)
+	            	relativePathVariableGroup.selectVariable(pathVariable);
+            }
+        	updateWidgetEnablements();
         }
     }
 
@@ -908,24 +990,26 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
             sourceNames = addToHistory(sourceNames, getSourceDirectoryName());
             settings.put(STORE_SOURCE_NAMES_ID, sourceNames);
 
-            // radio buttons and checkboxes	
+            // radio buttons and checkboxes
             settings.put(STORE_OVERWRITE_EXISTING_RESOURCES_ID,
                     overwriteExistingResourcesCheckbox.getSelection());
 
             settings.put(STORE_CREATE_CONTAINER_STRUCTURE_ID,
                     createContainerStructureButton.getSelection());
 
-            settings.put(STORE_CREATE_VIRTUAL_FOLDERS_ID,
-            		createVirtualFoldersButton.getSelection());
-
-            settings.put(STORE_CREATE_LINKED_RESOURCES_ID,
-            		createLinkedFileButton.getSelection());
-
-            settings.put(STORE_PATH_VARIABLE_SELECTED_ID,
-            		relativePathVariableGroup.getSelection());
-
-            settings.put(STORE_PATH_VARIABLE_NAME_ID,
-            		pathVariable);
+            if (createVirtualFoldersButton != null) {
+	            settings.put(STORE_CREATE_VIRTUAL_FOLDERS_ID,
+	            		createVirtualFoldersButton.getSelection());
+	
+	            settings.put(STORE_CREATE_LINKS_IN_WORKSPACE_ID,
+	            		createLinksInWorkspaceButton.getSelection());
+	
+	            settings.put(STORE_PATH_VARIABLE_SELECTED_ID,
+	            		relativePathVariableGroup.getSelection());
+	
+	            settings.put(STORE_PATH_VARIABLE_NAME_ID,
+	            		pathVariable);
+            }
         }
     }
 
@@ -1063,13 +1147,13 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
             //Got interrupted. Do nothing.
             return;
         }
-        // make sure that all paint operations caused by closing the progress 
-        // dialog get flushed, otherwise extra pixels will remain on the screen until 
+        // make sure that all paint operations caused by closing the progress
+        // dialog get flushed, otherwise extra pixels will remain on the screen until
         // updateSelections is completed
         getShell().update();
         // The updateSelections method accesses SWT widgets so cannot be executed
         // as part of the above progress dialog operation since the operation forks
-        // a new process.	
+        // a new process.
         if (selectionMap != null) {
             updateSelections(selectionMap);
         }
@@ -1102,8 +1186,34 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
     protected void updateWidgetEnablements() {
         super.updateWidgetEnablements();
         enableButtonGroup(ensureSourceIsValid());
+
+    	if (createLinksInWorkspaceButton != null) {
+			IPath path = getContainerFullPath();
+	    	if (path != null && relativePathVariableGroup != null) {
+				IResource target = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
+				if (target != null && target.isVirtual())
+					createVirtualFoldersButton.setSelection(true);
+	    	}
+			relativePathVariableGroup.setEnabled(createLinksInWorkspaceButton.getSelection());
+			createVirtualFoldersButton.setEnabled(createLinksInWorkspaceButton.getSelection());
+	
+			if ((!selectionGroup.getAllCheckedListItems().isEmpty() && !allItemsAreChecked()) ||
+				(createOnlySelectedButton.getSelection() == false)) {
+	        	createVirtualFoldersButton.setSelection(true);
+			}
+    	}
     }
 
+    private boolean allItemsAreChecked() {
+		List checkedItems = selectionGroup.getAllCheckedListItems();
+		if (!checkedItems.isEmpty()) {
+			List allItems = selectionGroup.getAllListItems();
+        	if (checkedItems.size() == allItems.size())
+        		return true;
+        }
+		return false;
+    }
+    
     /**
      *	Answer a boolean indicating whether self's source specification
      *	widgets currently all contain valid values.
@@ -1129,6 +1239,20 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
         	setErrorMessage(DataTransferMessages.FileImport_noneSelected);
         	return false;
         }
+        IContainer container = getSpecifiedContainer();
+        if (container != null && container.isVirtual()) {
+        	if (ResourcesPlugin.getPlugin().getPluginPreferences().getBoolean(ResourcesPlugin.PREF_DISABLE_LINKING)) {
+	        	setMessage(null);
+	        	setErrorMessage(DataTransferMessages.FileImport_cannotImportFilesUnderAVirtualFolder);
+				return false;
+        	}
+        	if (createLinksInWorkspaceButton == null || createLinksInWorkspaceButton.getSelection() == false) {
+	        	setMessage(null);
+	        	setErrorMessage(DataTransferMessages.FileImport_haveToCreateLinksUnderAVirtualFolder);
+				return false;
+        		
+        	}
+		}
         
 		enableButtonGroup(true);
 		setErrorMessage(null);
@@ -1154,8 +1278,8 @@ public class WizardFileSystemResourceImportPage1 extends WizardResourceImportPag
         if (destinationLocation != null) {
             return destinationLocation.isPrefixOf(sourcePath);
         }
-        // null destination location is handled in 
-        // WizardResourceImportPage 
+        // null destination location is handled in
+        // WizardResourceImportPage
         return false;
     }
 
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/messages.properties b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/messages.properties
index 03b4788..e69980c 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -52,8 +52,13 @@ FileImport_overwriteExisting = &Overwrite existing resources without warning
 FileImport_createComplete = &Create complete folder structure
 FileImport_createSelectedFolders = Create s&elected folders only
 FileImport_createVirtualFolders = Create &virtual folders
-FileImport_createLinkedFiles= Create &link files
+FileImport_importElementsAs=Create l&ink locations relative to:
+FileImport_createVirtualFoldersTooltip = This option needs to be set when a partial hierarchy is selected.
+FileImport_createLinksInWorkspace= Create lin&ks in workspace
+FileImport_advanced=Advance&d
 FileImport_noneSelected = There are no resources currently selected for import.
+FileImport_cannotImportFilesUnderAVirtualFolder=Cannot import files into a virtual folder when linked resources support is disabled on the 'Linked Resources' preference page.
+FileImport_haveToCreateLinksUnderAVirtualFolder=The 'Create links in workspace' option in the 'Advanced' section has to be set when the destination is a virtual folder.
 FileImport_invalidSource = Source directory is not valid or has not been specified.
 FileImport_sourceEmpty = Source must not be empty.
 FileImport_importProblems = Import Problems
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/ResourceMessages.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/ResourceMessages.java
index 2c2cabe..b6adf65 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/ResourceMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/ResourceMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/messages.properties b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/messages.properties
index ca5ae8c..6627068 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/newresource/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerSupportRegistry.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerSupportRegistry.java
index ced0adc..dea9094 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerSupportRegistry.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerSupportRegistry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/messages.properties b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/messages.properties
index 1265696..9cd27fa 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
index 378fe31..7c0cd95 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
@@ -43,6 +43,7 @@ import org.eclipse.ui.internal.views.navigator.ResourceNavigatorMessages;
 import org.eclipse.ui.part.PluginDropAdapter;
 import org.eclipse.ui.part.ResourceTransfer;
 
+
 /**
  * Implements drop behaviour for drag and drop operations
  * that land on the resource navigator.
@@ -50,8 +51,7 @@ import org.eclipse.ui.part.ResourceTransfer;
  * @since 2.0
  * @deprecated as of 3.5, use the Common Navigator Framework classes instead
  */
-public class NavigatorDropAdapter extends PluginDropAdapter implements
-        IOverwriteQuery {
+public class NavigatorDropAdapter extends PluginDropAdapter implements IOverwriteQuery {
 
     /**
      * A flag indicating that overwrites should always occur.
@@ -79,11 +79,19 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
         if (FileTransfer.getInstance().isSupportedType(event.currentDataType)
                 && event.detail == DND.DROP_DEFAULT) {
             // default to copy when dragging from outside Eclipse. Fixes bug 16308.
-            event.detail = DND.DROP_COPY;
-        }
+       		event.detail = DND.DROP_COPY;
+          }
         super.dragEnter(event);
     }
 
+
+    /* (non-Javadoc)
+	 * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOperationChanged(org.eclipse.swt.dnd.DropTargetEvent)
+	 */
+	public void dragOperationChanged(DropTargetEvent event) {
+		super.dragOperationChanged(event);
+	}
+
     /**
      * Returns an error status with the given info.
      */
@@ -101,7 +109,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
 
     /**
      * Returns the actual target of the drop, given the resource
-     * under the mouse.  If the mouse target is a file, then the drop actually 
+     * under the mouse.  If the mouse target is a file, then the drop actually
      * occurs in its parent.  If the drop location is before or after the
      * mouse target and feedback is enabled, the target is also the parent.
      */
@@ -246,7 +254,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
             result = NavigatorDropAdapter.super.performDrop(data);
         }
         if (resources != null && resources.length > 0) {
-            if ((getCurrentOperation() == DND.DROP_COPY) || (getCurrentOperation() == DND.DROP_LINK)) {
+            if (getCurrentOperation() == DND.DROP_COPY) {
 				status = performResourceCopy(getShell(), resources);
 			} else {
 				status = performResourceMove(resources);
@@ -265,41 +273,16 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
         mergeStatus(problems, validateTarget(getCurrentTarget(),
                 getCurrentTransfer()));
 
+		final int currentOperation= getCurrentOperation();
         final IContainer target = getActualTarget((IResource) getCurrentTarget());
         final String[] names = (String[]) data;
-        // Run the import operation asynchronously. 
-        // Otherwise the drag source (e.g., Windows Explorer) will be blocked 
+        // Run the import operation asynchronously.
+        // Otherwise the drag source (e.g., Windows Explorer) will be blocked
         // while the operation executes. Fixes bug 16478.
         Display.getCurrent().asyncExec(new Runnable() {
             public void run() {
                 getShell().forceActive();
-                CopyFilesAndFoldersOperation operation = new CopyFilesAndFoldersOperation(
-                        getShell());
-				// if the target is a group and all sources are files, then automatically create links
-				int type;
-				ImportTypeDialog dialog = new ImportTypeDialog(getShell(), getCurrentOperation(), names, target);
-				dialog.setResource(target);
-				if (dialog.open() == Window.OK)
-					type = dialog.getSelection();
-				else
-					type = ImportTypeDialog.IMPORT_NONE;
-				switch(type) {
-					case ImportTypeDialog.IMPORT_COPY:
-						operation.copyFiles(names, target);
-						break;
-					case ImportTypeDialog.IMPORT_VIRTUAL_FOLDERS_AND_LINKS:
-						if (dialog.getVariable() != null)
-							operation.setRelativeVariable(dialog.getVariable());
-						operation.createVirtualFoldersAndLinks(names, target);
-						break;
-					case ImportTypeDialog.IMPORT_LINK:
-						if (dialog.getVariable() != null)
-							operation.setRelativeVariable(dialog.getVariable());
-						operation.linkFiles(names, target);
-						break;
-					case ImportTypeDialog.IMPORT_NONE:
-						break;
-				}
+				new CopyFilesAndFoldersOperation(getShell()).copyOrLinkFiles(names, target, currentOperation);
             }
         });
         return problems;
@@ -385,7 +368,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
 					shouldLinkAutomatically = false;
 					break;
 				}
-			}		
+			}
 		}
 		
 		if (shouldLinkAutomatically) {
@@ -449,9 +432,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
             lastValidOperation = dragOperation;
         }
         if (FileTransfer.getInstance().isSupportedType(transferType)
-                && (lastValidOperation != DND.DROP_COPY)
-                && (lastValidOperation != DND.DROP_LINK)) {
-            // only allow copying and linking when dragging from outside Eclipse
+                && (lastValidOperation != DND.DROP_COPY)) {
             return false;
         }
         if (super.validateDrop(target, dragOperation, transferType)) {
@@ -484,7 +465,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
 				message = ResourceNavigatorMessages.DropAdapter_dropOperationErrorOther;
 			} else {
                 CopyFilesAndFoldersOperation operation;
-                if ((lastValidOperation == DND.DROP_COPY) || (lastValidOperation == DND.DROP_LINK)) {
+                if (lastValidOperation == DND.DROP_COPY) {
                     operation = new CopyFilesAndFoldersOperation(getShell());
 					if (operation.validateDestination(destination, selectedResources) != null) {
 						operation.setVirtualFolders(true);
@@ -497,7 +478,7 @@ public class NavigatorDropAdapter extends PluginDropAdapter implements
 						message = operation.validateDestination(destination, selectedResources);
 						if (message == null)
 							lastValidOperation = DND.DROP_COPY;
-					}                
+					}
                 }
             }
         } // file import?
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java
index cd7530e..6d588f6 100644
--- a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java
+++ b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java
@@ -968,16 +968,6 @@ public class ImportOperation extends WorkspaceModifyOperation {
     }
 
     /**
-     * Set Whether links will be created instead of files 
-     * 
-     * @param linkFilesOnly
-     * @since 3.6
-     */
-    public void setCreateLinkFilesOnly(boolean linkFilesOnly) {
-        createLinkFilesOnly = linkFilesOnly;
-    }
-
-    /**
      * Set a variable relative to which the links are created
      * 
      * @param variable
diff --git a/eclipse/plugins/org.eclipse.ui.intro.universal/introContent.xml b/eclipse/plugins/org.eclipse.ui.intro.universal/introContent.xml
index b219f87..77066b7 100644
--- a/eclipse/plugins/org.eclipse.ui.intro.universal/introContent.xml
+++ b/eclipse/plugins/org.eclipse.ui.intro.universal/introContent.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8" ?>
<!--
-     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:
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.ui.intro.universal/plugin.xml b/eclipse/plugins/org.eclipse.ui.intro.universal/plugin.xml
index 4062290..e9f8e1d 100644
--- a/eclipse/plugins/org.eclipse.ui.intro.universal/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.intro.universal/plugin.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2009 IBM Corporation and others.
-     All rights reserved. This program and the accompanying materials
-     are made available under the terms of the Eclipse Public License v1.0
-     which accompanies this distribution, and is available at
-     http://www.eclipse.org/legal/epl-v10.html
-    
-     Contributors:
+<?eclipse version="3.0"?>
+<!--
+    Copyright (c) 2005, 2010 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.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/eclipse/plugins/org.eclipse.ui.intro.universal/themes/slate/html/font-relative.css b/eclipse/plugins/org.eclipse.ui.intro.universal/themes/slate/html/font-relative.css
index 5dc70f9..240a626 100644
--- a/eclipse/plugins/org.eclipse.ui.intro.universal/themes/slate/html/font-relative.css
+++ b/eclipse/plugins/org.eclipse.ui.intro.universal/themes/slate/html/font-relative.css
@@ -1,5 +1,5 @@
 L/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials 
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,10 @@ H4 .div-label {
     font-size : 8pt;
 }
 
+#standby #page-links {
+    font-size : 100%;
+}
+
 /* Floating link labels for navigation links */
 #navigation-links a .link-label {
 	font-size : 8pt;
diff --git a/eclipse/plugins/org.eclipse.ui.intro/plugin.xml b/eclipse/plugins/org.eclipse.ui.intro/plugin.xml
index 9b56598..409dc88 100644
--- a/eclipse/plugins/org.eclipse.ui.intro/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.intro/plugin.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
+<?eclipse version="3.0"?>
+<!--
     Copyright (c) 2005, 2010 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
index e548c9b..eabdc2e 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
@@ -19,6 +19,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ui.views.properties.tabbed;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)"
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.ltk.ui.refactoring;bundle-version="[3.5.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.properties b/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.properties
index aaf4430..7bfc3e3 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.properties
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
+# Copyright (c) 2003, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -22,5 +22,7 @@ filters.endsWithClass.name=*.class resources
 filters.endsWithClass.description=Hides resources that end with ".class"
 filters.closedProject.name=Closed projects
 filters.closedProject.description=Hides closed projects
+filters.workingSet.name=Working sets [not visible in UI]
+filters.workingSet.description=Hides unselected working sets [not visible in UI]
 
 Resource=Resource
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.xml b/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.xml
index 860a9eb..f7789cb 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.xml
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/plugin.xml
@@ -289,6 +289,15 @@
 	        </and>
          </filterExpression>
       </commonFilter>
+      <commonFilter
+            id="org.eclipse.ui.navigator.resources.filters.workingSet"
+            name="%filters.workingSet.name"
+            description="%filters.workingSet.description" 
+            class="org.eclipse.ui.ResourceWorkingSetFilter" 
+            activeByDefault="false"
+            visibleInUI="false"
+           >
+      </commonFilter>
       <actionProvider
             class="org.eclipse.ui.internal.navigator.resources.actions.WorkingSetActionProvider"
             id="org.eclipse.ui.navigator.resources.WorkingSetActions">
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/EditActionGroup.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/EditActionGroup.java
index 7a59558..7216f96 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/EditActionGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/EditActionGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/OpenActionProvider.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/OpenActionProvider.java
index 3561746..ad83bcf 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/OpenActionProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/OpenActionProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     mark.melvin at onsemi.com - bug 288997 [CommonNavigator] Double-clicking an adapted resource in 
+ *        Common Navigator does not open underlying IFile
  *******************************************************************************/
 package org.eclipse.ui.internal.navigator.resources.actions;
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/RefactorActionGroup.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/RefactorActionGroup.java
index 5b3f142..c00a61f 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/RefactorActionGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/RefactorActionGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
index 9b20547..27604b9 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,8 +14,11 @@
 package org.eclipse.ui.internal.navigator.resources.actions;
 
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IAggregateWorkingSet;
 import org.eclipse.ui.IMemento;
@@ -25,7 +28,9 @@ import org.eclipse.ui.IWorkingSetManager;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ResourceWorkingSetFilter;
 import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
+import org.eclipse.ui.internal.navigator.NavigatorFilterService;
 import org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorMessages;
+import org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin;
 import org.eclipse.ui.internal.navigator.workingsets.WorkingSetsContentProvider;
 import org.eclipse.ui.navigator.CommonActionProvider;
 import org.eclipse.ui.navigator.CommonViewer;
@@ -42,12 +47,16 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 	private static final String TAG_CURRENT_WORKING_SET_NAME = "currentWorkingSetName"; //$NON-NLS-1$
 
+	private static final String WORKING_SET_FILTER_ID = "org.eclipse.ui.navigator.resources.filters.workingSet"; //$NON-NLS-1$
+	
 	private boolean contributedToViewMenu = false;
 
 	private CommonViewer viewer;
 
 	private INavigatorContentService contentService;
 
+	private NavigatorFilterService filterService;
+	
 	private WorkingSetFilterActionGroup workingSetActionGroup;
 	private WorkingSetRootModeActionGroup workingSetRootModeActionGroup;
 
@@ -55,13 +64,12 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 	private IExtensionStateModel extensionStateModel;
 
-	private final ResourceWorkingSetFilter workingSetFilter = new ResourceWorkingSetFilter();
-	private boolean filterAdded;
-
 	private boolean emptyWorkingSet;
 	private IWorkingSet workingSet;
 
 	private IPropertyChangeListener topLevelModeListener;
+	
+	private boolean ignoreFilterChangeEvents;
 
 	/**
 	 * Provides a smart listener to monitor changes to the Working Set Manager.
@@ -71,13 +79,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 		private boolean listening = false;
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see
-		 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org
-		 * .eclipse.jface.util.PropertyChangeEvent)
-		 */
 		public void propertyChange(PropertyChangeEvent event) {
 			String property = event.getProperty();
 			Object newValue = event.getNewValue();
@@ -94,7 +95,7 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 					// act as if the working set has been made null
 					if (!emptyWorkingSet) {
 						emptyWorkingSet = true;
-						workingSetFilter.setWorkingSet(null);
+						setWorkingSetFilter(null);
 						newLabel = null;
 					}
 				} else {
@@ -102,7 +103,7 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 					// Restore it.
 					if (emptyWorkingSet) {
 						emptyWorkingSet = false;
-						workingSetFilter.setWorkingSet(workingSet);
+						setWorkingSetFilter(workingSet);
 						newLabel = workingSet.getLabel();
 					}
 				}
@@ -138,6 +139,10 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 	private IPropertyChangeListener filterChangeListener = new IPropertyChangeListener() {
 		public void propertyChange(PropertyChangeEvent event) {
+			
+			if (ignoreFilterChangeEvents)
+				return;
+			
 			IWorkingSet newWorkingSet = (IWorkingSet) event.getNewValue();
 
 			setWorkingSet(newWorkingSet);
@@ -185,7 +190,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 						if (savedWorkingSet != null) {
 							setWorkingSet(savedWorkingSet);
-							workingSetActionGroup.setWorkingSet(savedWorkingSet);
 						}
 						managerChangeListener.listen();
 
@@ -194,7 +198,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 						setWorkingSet(null);
 						viewer.getCommonNavigator().setWorkingSetLabel(null);
 						managerChangeListener.ignore();
-						workingSetActionGroup.setWorkingSet(null);
 						workingSetRootModeActionGroup.setShowTopLevelWorkingSets(false);
 						extensionStateModel.removePropertyChangeListener(topLevelModeListener);
 
@@ -205,16 +208,10 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 	};
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator
-	 * .ICommonActionExtensionSite)
-	 */
 	public void init(ICommonActionExtensionSite aSite) {
 		viewer = (CommonViewer) aSite.getStructuredViewer();
 		contentService = aSite.getContentService();
+		filterService = (NavigatorFilterService) contentService.getFilterService();
 
 		extensionStateModel = contentService.findStateModel(WorkingSetsContentProvider.EXTENSION_ID);
 
@@ -234,7 +231,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 		}
 
 		contentService.getActivationService().addExtensionActivationListener(activationListener);
-
 	}
 
 	/**
@@ -253,10 +249,38 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 		}
 
 		if (workingSet != null) {
-			workingSetFilter.setWorkingSet(workingSet);
-			internalSetWorkingSet(workingSet);
-			workingSetActionGroup.setWorkingSet(workingSet);
+			setWorkingSet(workingSet);
+		}
+	}
+
+	private void setWorkingSetFilter(IWorkingSet workingSet) {
+		setWorkingSetFilter(workingSet, FIRST_TIME);
+	}
+	
+	private static final boolean FIRST_TIME = true;
+	
+	private void setWorkingSetFilter(IWorkingSet workingSet, boolean firstTime) {
+		ResourceWorkingSetFilter workingSetFilter = null;
+		ViewerFilter[] filters = viewer.getFilters();
+		for (int i = 0; i < filters.length; i++) {
+			if (filters[i] instanceof ResourceWorkingSetFilter) {
+				workingSetFilter = (ResourceWorkingSetFilter) filters[i];
+				break;
+			}
+		}
+		if (workingSetFilter == null) {
+			if (firstTime) {
+				filterService.addActiveFilterIds(new String[] { WORKING_SET_FILTER_ID });
+				filterService.updateViewer();
+				setWorkingSetFilter(workingSet, !FIRST_TIME);
+				return;
+			}
+			WorkbenchNavigatorPlugin.log("Required filter " + WORKING_SET_FILTER_ID +  //$NON-NLS-1$
+					" is not present. Working set support will not function correctly.",   //$NON-NLS-1$
+				new Status(IStatus.ERROR, WorkbenchNavigatorPlugin.PLUGIN_ID, ""));  //$NON-NLS-1$
+			return;
 		}
+		workingSetFilter.setWorkingSet(emptyWorkingSet ? null : workingSet);
 	}
 
 	/**
@@ -266,25 +290,26 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 	 *            working set to be activated, may be <code>null</code>
 	 */
 	protected void setWorkingSet(IWorkingSet workingSet) {
-		internalSetWorkingSet(workingSet);
-
-		workingSetFilter.setWorkingSet(emptyWorkingSet ? null : workingSet);
+		this.workingSet = workingSet;
+		emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet() && workingSet.isEmpty();
 
+        ignoreFilterChangeEvents = true;
+        try {
+        	workingSetActionGroup.setWorkingSet(workingSet);
+        } finally {
+        	ignoreFilterChangeEvents = false;
+       	}		
+		
 		if (viewer != null) {
+			setWorkingSetFilter(workingSet);
 			if (workingSet == null || emptyWorkingSet
 					|| !extensionStateModel.getBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS)) {
 				if (viewer.getInput() != originalViewerInput) {
 					viewer.setInput(originalViewerInput);
-				}
-				if (!filterAdded) {
-					viewer.addFilter(workingSetFilter);
-					filterAdded = true;
 				} else {
 					viewer.refresh();
 				}
 			} else {
-				viewer.removeFilter(workingSetFilter);
-				filterAdded = false;
 				if (!workingSet.isAggregateWorkingSet()) {
 					IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
 					viewer.setInput(workingSetManager.createAggregateWorkingSet(
@@ -296,47 +321,34 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 		}
 	}
 
-	private void internalSetWorkingSet(IWorkingSet workingSet) {
-		this.workingSet = workingSet;
-		emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet() && workingSet.isEmpty();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.navigator.CommonActionProvider#restoreState(org.eclipse
-	 * .ui.IMemento)
-	 */
-	public void restoreState(IMemento aMemento) {
+	public void restoreState(final IMemento aMemento) {
 		super.restoreState(aMemento);
 
-		boolean showWorkingSets = true;
-		if (aMemento != null) {
-			Integer showWorkingSetsInt = aMemento.getInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS);
-			showWorkingSets = showWorkingSetsInt == null || showWorkingSetsInt.intValue() == 1;
-			extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
-					showWorkingSets);
-			workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
-
-			String lastWorkingSetName = aMemento.getString(TAG_CURRENT_WORKING_SET_NAME);
-			initWorkingSetFilter(lastWorkingSetName);
-		} else {
-			showWorkingSets = false;
-
-			extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
-					showWorkingSets);
-			workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
-		}
+		// Need to run this async to avoid being reentered when processing a selection change
+		viewer.getControl().getShell().getDisplay().asyncExec(new Runnable() {
+			public void run() {
+				boolean showWorkingSets = true;
+				if (aMemento != null) {
+					Integer showWorkingSetsInt = aMemento
+							.getInteger(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS);
+					showWorkingSets = showWorkingSetsInt == null || showWorkingSetsInt.intValue() == 1;
+					extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
+							showWorkingSets);
+					workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
+
+					String lastWorkingSetName = aMemento.getString(TAG_CURRENT_WORKING_SET_NAME);
+					initWorkingSetFilter(lastWorkingSetName);
+				} else {
+					showWorkingSets = false;
+
+					extensionStateModel.setBooleanProperty(WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
+							showWorkingSets);
+					workingSetRootModeActionGroup.setShowTopLevelWorkingSets(showWorkingSets);
+				}
+			}
+		});
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.navigator.CommonActionProvider#saveState(org.eclipse.ui
-	 * .IMemento)
-	 */
 	public void saveState(IMemento aMemento) {
 		super.saveState(aMemento);
 
@@ -352,13 +364,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars
-	 * )
-	 */
 	public void fillActionBars(IActionBars actionBars) {
 		if (!contributedToViewMenu) {
 			try {
@@ -373,11 +378,6 @@ public class WorkingSetActionProvider extends CommonActionProvider {
 		}
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.actions.ActionGroup#dispose()
-	 */
 	public void dispose() {
 		super.dispose();
 		workingSetActionGroup.dispose();
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java
index 35dfac6..ef8ec33 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -113,31 +113,21 @@ public class WorkingSetRootModeActionGroup extends ActionGroup {
 	 * @see ActionGroup#fillActionBars(IActionBars)
 	 */
 	public void fillActionBars(IActionBars actionBars) {
-		// Can happen if called here before we get the first call 
-		// to setShowTopLevelWorkingSets().  See bug 275197.
-		if (actions == null)
+		if (hasContributedToViewMenu)
 			return;
-		synchronized (this) {
-			if (!hasContributedToViewMenu) {
-				contributeToViewMenu(actionBars.getMenuManager()); 
-				hasContributedToViewMenu = true;
-			}
-		}
-	}
-
-	private void contributeToViewMenu(IMenuManager viewMenu) {
-
 		IMenuManager topLevelSubMenu = new MenuManager(
 				WorkbenchNavigatorMessages.WorkingSetRootModeActionGroup_Top_Level_Element_);
 		addActions(topLevelSubMenu);
-		viewMenu.insertBefore(IWorkbenchActionConstants.MB_ADDITIONS,
-				topLevelSubMenu);
+		actionBars.getMenuManager().insertBefore(IWorkbenchActionConstants.MB_ADDITIONS, topLevelSubMenu);
+		hasContributedToViewMenu = true;
 	}
 
 	/**
 	 * Adds the actions to the given menu manager.
 	 */
 	protected void addActions(IMenuManager viewMenu) {
+		if (actions == null)
+			actions = createActions();
 
 		viewMenu.add(new Separator());
 		items = new MenuItem[actions.length];
@@ -211,14 +201,10 @@ public class WorkingSetRootModeActionGroup extends ActionGroup {
 	 * @param showTopLevelWorkingSets
 	 */
 	public void setShowTopLevelWorkingSets(boolean showTopLevelWorkingSets) {
-		if (actions == null) {
+		if (actions == null) 
 			actions = createActions();
-			setActions(actions, showTopLevelWorkingSets ? 1 /*
-															 * Show Top Level
-															 * Working Sets
-															 */
-					: 0);
-		}
+
+		currentSelection = showTopLevelWorkingSets ? 1 : 0;
 		workingSetsAction.setChecked(showTopLevelWorkingSets);
 		projectsAction.setChecked(!showTopLevelWorkingSets);
 
@@ -233,21 +219,6 @@ public class WorkingSetRootModeActionGroup extends ActionGroup {
 					WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS,
 					showTopLevelWorkingSets);
 		}
-
-	}
-
-	/**
-	 * Configure the actions that are displayed in the menu by this ActionGroup.
-	 * 
-	 * @param theActions
-	 *            An array of possible actions.
-	 * @param selected
-	 *            The index of the "enabled" action.
-	 */
-	private void setActions(IAction[] theActions, int selected) {
-		actions = theActions;
-		currentSelection = selected;
-
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/workbench/TabbedPropertySheetAdapterFactory.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/workbench/TabbedPropertySheetAdapterFactory.java
index 97ee791..4ea9453 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/workbench/TabbedPropertySheetAdapterFactory.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/workbench/TabbedPropertySheetAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ProjectExplorer.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ProjectExplorer.java
index 09bbf5f..0b4abbd 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ProjectExplorer.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ProjectExplorer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,9 +14,6 @@ package org.eclipse.ui.navigator.resources;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IAggregateWorkingSet;
@@ -26,7 +23,6 @@ import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.IWorkingSet;
 import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.navigator.NavigatorContentService;
 import org.eclipse.ui.internal.navigator.framelist.Frame;
 import org.eclipse.ui.internal.navigator.framelist.FrameList;
 import org.eclipse.ui.internal.navigator.framelist.TreeFrame;
@@ -218,53 +214,5 @@ public final class ProjectExplorer extends CommonNavigator {
 		return workingSetLabel;
 	}
 
-	/**
-	 * <p>
-	 * </p>
-	 * 
-	 * @see org.eclipse.ui.part.ISetSelectionTarget#selectReveal(org.eclipse.jface.viewers.ISelection)
-	 * @since 3.4
-	 */
-	public void selectReveal(ISelection selection) {
-		if (getCommonViewer() != null) {
-			getCommonViewer().setSelection(convertSelection(selection), true);
-		}
-	}
-
-	private ISelection convertSelection(ISelection s) {
-		if (!(s instanceof IStructuredSelection))
-			return s;
-
-		Object[] elements = ((IStructuredSelection) s).toArray();
-
-		boolean changed = false;
-		for (int i = 0; i < elements.length; i++) {
-			Object convertedElement = convertElement(elements[i]);
-			changed = changed || convertedElement != elements[i];
-			elements[i] = convertedElement;
-		}
-		if (changed)
-			return new StructuredSelection(elements);
-		return s;
-	}
-
-	private Object convertElement(Object original) {
-		NavigatorContentService ncs = (NavigatorContentService) getNavigatorContentService();
-
-		Object found = ncs.getViewerElementData(original);
-		if (found != null)
-			return original;
-		if (original instanceof IAdaptable) {
-			IAdaptable adaptable = (IAdaptable) original;
-			found = adaptable.getAdapter(IResource.class);
-			if (found != null)
-				return found;
-			IWorkbenchAdapter wba = (IWorkbenchAdapter) adaptable.getAdapter(IWorkbenchAdapter.class);
-			found = wba.getParent(original);
-			if (found != null)
-				return convertElement(found);
-		}
-		return original;
-	}	
 	
 }
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
index 717a3a3..b6dda8d 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
@@ -8,31 +8,42 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.ui.navigator.resources;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Iterator;
 
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Status;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
+
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CopyFilesAndFoldersOperation;
 import org.eclipse.ui.actions.MoveFilesAndFoldersOperation;
@@ -45,8 +56,18 @@ import org.eclipse.ui.navigator.CommonDropAdapter;
 import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
 import org.eclipse.ui.part.ResourceTransfer;
 
+import org.eclipse.ltk.core.refactoring.CheckConditionsOperation;
+import org.eclipse.ltk.core.refactoring.PerformRefactoringOperation;
+import org.eclipse.ltk.core.refactoring.Refactoring;
+import org.eclipse.ltk.core.refactoring.RefactoringContribution;
+import org.eclipse.ltk.core.refactoring.RefactoringCore;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.resource.MoveResourcesDescriptor;
+import org.eclipse.ltk.ui.refactoring.RefactoringUI;
+
+
 /**
- *  
+ * 
  * Clients may reference this class in the <b>dropAssistant</b> element of a
  * <b>org.eclipse.ui.navigator.navigatorContent</b> extension point.
  * 
@@ -57,11 +78,14 @@ import org.eclipse.ui.part.ResourceTransfer;
  * 
  * @since 3.2
  * 
- */ 
+ */
 public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 
 	private static final IResource[] NO_RESOURCES = new IResource[0];
 
+	private RefactoringStatus refactoringStatus;
+	private IStatus returnStatus;
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -182,8 +206,7 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 		}
 
 		// alwaysOverwrite = false;
-		if (aDropAdapter.getCurrentTarget() == null
-				|| aDropTargetEvent.data == null) {
+		if (aTarget == null || aDropTargetEvent.data == null) {
 			return Status.CANCEL_STATUS;
 		}
 		IStatus status = null;
@@ -219,8 +242,7 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 			}
 		}
 		openError(status);
-		IContainer target = getActualTarget((IResource) aDropAdapter
-				.getCurrentTarget());
+		IContainer target = getActualTarget((IResource) aTarget);
 		if (target != null && target.isAccessible()) {
 			try {
 				target.refreshLocal(IResource.DEPTH_ONE, null);
@@ -329,7 +351,7 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 				.getSelection();
 		if (selection instanceof IStructuredSelection) {
 			return getSelectedResources((IStructuredSelection)selection);
-		} 
+		}
 		return NO_RESOURCES;
 	}
 
@@ -451,8 +473,79 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 					WorkbenchNavigatorMessages.MoveResourceAction_title,
 					WorkbenchNavigatorMessages.MoveResourceAction_checkMoveMessage);
 			sources = checker.checkReadOnlyResources(sources);
-			MoveFilesAndFoldersOperation operation = new MoveFilesAndFoldersOperation(getShell());
-			operation.copyResources(sources, target);
+
+			try {
+				RefactoringContribution contribution = RefactoringCore
+						.getRefactoringContribution(MoveResourcesDescriptor.ID);
+				MoveResourcesDescriptor descriptor = (MoveResourcesDescriptor) contribution.createDescriptor();
+				descriptor.setResourcesToMove(sources);
+				descriptor.setDestination(target);
+				refactoringStatus = new RefactoringStatus();
+				final Refactoring refactoring = descriptor.createRefactoring(refactoringStatus);
+				
+				returnStatus = null;
+				IRunnableWithProgress checkOp = new IRunnableWithProgress() {
+					public void run(IProgressMonitor monitor) {
+						try {
+						refactoringStatus = refactoring.checkAllConditions(monitor);
+					} catch (CoreException ex) {
+						returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(), ex);
+					}}
+				};
+				
+				if (returnStatus != null)
+					return returnStatus;
+
+				try {
+					PlatformUI.getWorkbench().getProgressService().run(false, false, checkOp);
+				} catch (InterruptedException e) {
+					return Status.CANCEL_STATUS;
+				} catch (InvocationTargetException e) {
+					return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
+				}
+				
+				if (refactoringStatus.hasEntries()) {
+					Dialog dialog= RefactoringUI.createLightWeightStatusDialog(refactoringStatus, getShell(), WorkbenchNavigatorMessages.MoveResourceAction_title);
+					int result = dialog.open();
+					if (result != IStatus.OK)
+						return Status.CANCEL_STATUS;
+				}
+				
+				final PerformRefactoringOperation op = new PerformRefactoringOperation(refactoring,
+						CheckConditionsOperation.ALL_CONDITIONS);
+
+				final IWorkspaceRunnable r = new IWorkspaceRunnable() {
+					public void run(IProgressMonitor monitor) throws CoreException {
+						op.run(monitor);
+					}
+				};
+
+				returnStatus = null;
+				IRunnableWithProgress refactorOp = new IRunnableWithProgress() {
+					public void run(IProgressMonitor monitor) {
+						try {
+							ResourcesPlugin.getWorkspace().run(r, ResourcesPlugin.getWorkspace().getRoot(), IWorkspace.AVOID_UPDATE, monitor);
+						} catch (CoreException ex) {
+							returnStatus = WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(), ex);
+						}
+					}
+				};
+				
+				if (returnStatus != null)
+					return returnStatus;
+				
+				try {
+					PlatformUI.getWorkbench().getProgressService().run(false, false, refactorOp);
+				} catch (InterruptedException e) {
+					return Status.CANCEL_STATUS;
+				} catch (InvocationTargetException e) {
+					return WorkbenchNavigatorPlugin.createErrorStatus(0, e.getLocalizedMessage(), e);
+				}
+
+			} catch (CoreException ex) {
+				return WorkbenchNavigatorPlugin.createErrorStatus(0, ex.getLocalizedMessage(), ex);
+			} catch (OperationCanceledException e) {
+			}
 		}
 
 		return problems;
@@ -461,13 +554,13 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 	/**
 	 * Performs a drop using the FileTransfer transfer type.
 	 */
-	private IStatus performFileDrop(CommonDropAdapter anAdapter, Object data) {
-		final CommonDropAdapter finalAdapter = anAdapter;
+	private IStatus performFileDrop(final CommonDropAdapter anAdapter, Object data) {
+		final int currentOperation = anAdapter.getCurrentOperation();
 		MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 0,
 				WorkbenchNavigatorMessages.DropAdapter_problemImporting, null);
 		mergeStatus(problems,
 				validateTarget(anAdapter.getCurrentTarget(), anAdapter
-						.getCurrentTransfer(), anAdapter.getCurrentOperation()));
+						.getCurrentTransfer(), currentOperation));
 
 		final IContainer target = getActualTarget((IResource) anAdapter
 				.getCurrentTarget());
@@ -478,33 +571,7 @@ public class ResourceDropAdapterAssistant extends CommonDropAdapterAssistant {
 		Display.getCurrent().asyncExec(new Runnable() {
 			public void run() {
 				getShell().forceActive();
-				CopyFilesAndFoldersOperation operation = new CopyFilesAndFoldersOperation(getShell());
-				// if the target is a virtual folder and all sources are files, then
-				// automatically create links
-				int type;
-				ImportTypeDialog dialog = new ImportTypeDialog(getShell(), finalAdapter.getCurrentOperation(), names, target);
-				dialog.setResource(target);
-				if (dialog.open() == Window.OK)
-					type = dialog.getSelection();
-				else
-					type = ImportTypeDialog.IMPORT_NONE;
-				switch (type) {
-				case ImportTypeDialog.IMPORT_COPY:
-					operation.copyFiles(names, target);
-					break;
-				case ImportTypeDialog.IMPORT_VIRTUAL_FOLDERS_AND_LINKS:
-					if (dialog.getVariable() != null)
-						operation.setRelativeVariable(dialog.getVariable());
-					operation.createVirtualFoldersAndLinks(names, target);
-					break;
-				case ImportTypeDialog.IMPORT_LINK:
-					if (dialog.getVariable() != null)
-						operation.setRelativeVariable(dialog.getVariable());
-					operation.linkFiles(names, target);
-					break;
-				case ImportTypeDialog.IMPORT_NONE:
-					break;
-				}
+				new CopyFilesAndFoldersOperation(getShell()).copyOrLinkFiles(names, target, currentOperation);
 			}
 		});
 		return problems;
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/schema/navigatorContent.exsd b/eclipse/plugins/org.eclipse.ui.navigator/schema/navigatorContent.exsd
index 0673e58..7d7a26d 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/schema/navigatorContent.exsd
+++ b/eclipse/plugins/org.eclipse.ui.navigator/schema/navigatorContent.exsd
@@ -499,6 +499,13 @@ That is, if the content extension is bound to a Common Navigator (see &lt;b&gt;o
                </documentation>
             </annotation>
          </attribute>
+         <attribute name="visibleInUI" type="boolean">
+            <annotation>
+               <documentation>
+                  True if the filter is to be shown in the Common Navigator UI to allow a client to disable or enable it.  False if it is hidden from the UI. By default this is true.
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
@@ -956,7 +963,7 @@ using this feature.
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2002, 2009 IBM Corporation and others.&lt;br&gt;
+         Copyright (c) 2002, 2010 IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0 which accompanies
 this distribution, and is available at &lt;a 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorMessages.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorMessages.java
index 465c29f..ad06273 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorMessages.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/ContributorTrackingSet.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/ContributorTrackingSet.java
index 063f116..53c83ec 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/ContributorTrackingSet.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/ContributorTrackingSet.java
@@ -11,6 +11,7 @@
 
 package org.eclipse.ui.internal.navigator;
 
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 
 import org.eclipse.ui.navigator.INavigatorContentDescriptor;
@@ -55,9 +56,6 @@ public class ContributorTrackingSet extends LinkedHashSet {
 		contentService = aContentService;
 	}
 	
-	/* (non-Javadoc)
-	 * @see java.util.HashSet#add(java.lang.Object)
-	 */
 	public boolean add(Object o) { 
 		if (contributor != null) {
 			contentService.rememberContribution(contributor, firstClassContributor, o);
@@ -65,14 +63,19 @@ public class ContributorTrackingSet extends LinkedHashSet {
 		return super.add(o);
 	}
 	
-	/* (non-Javadoc)
-	 * @see java.util.HashSet#remove(java.lang.Object)
-	 */
 	public boolean remove(Object o) { 
 		contentService.forgetContribution(o);
 		return super.remove(o);
 	}
 
+	
+	public void clear() { 
+		Iterator it = iterator();
+		while (it.hasNext())
+			contentService.forgetContribution(it.next());
+		super.clear();
+	}
+
 	/**
 	 * 
 	 * @return The current contributor.
@@ -109,4 +112,27 @@ public class ContributorTrackingSet extends LinkedHashSet {
 				add(contents[i]); 
 		
 	}
+	
+	public Iterator iterator() {
+		return new Iterator() {
+
+			Iterator delegateIterator = ContributorTrackingSet.super.iterator();
+			Object current;
+
+			public boolean hasNext() {
+				return delegateIterator.hasNext();
+			}
+
+			public Object next() {
+				current = delegateIterator.next();
+				return current;
+			}
+
+			public void remove() {
+				delegateIterator.remove();
+				contentService.forgetContribution(current);
+			}
+		};
+	}
+	
 }
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CustomAndExpression.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CustomAndExpression.java
index cbe9396..89240bf 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CustomAndExpression.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CustomAndExpression.java
@@ -21,7 +21,6 @@ import org.eclipse.core.expressions.ExpressionConverter;
 import org.eclipse.core.expressions.IEvaluationContext;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.SafeRunner;
 
 /**
@@ -47,10 +46,7 @@ public class CustomAndExpression extends Expression {
 		final IConfigurationElement[] children = element.getChildren();
 		if (children.length == 0)
 			return;
-		SafeRunner.run(new ISafeRunnable() {
-			public void handleException(Throwable exception) {
-			}
-
+		SafeRunner.run(new NavigatorSafeRunnable() {
 			public void run() throws Exception {
 				fExpressions = new ArrayList();
 				for (int i = 0; i < children.length; i++) {
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorActivationService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorActivationService.java
index da3952f..ae4aed4 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorActivationService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorActivationService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentService.java
index 60cf8a8..f88527f 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentService.java
@@ -29,7 +29,6 @@ import org.osgi.service.prefs.BackingStoreException;
 
 import org.eclipse.swt.widgets.Shell;
 
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.SafeRunner;
@@ -454,17 +453,19 @@ public class NavigatorContentService implements IExtensionActivationListener,
 		LinkedHashSet contributors = new LinkedHashSet();
 		INavigatorContentDescriptor sourceDescriptor = getSourceOfContribution(anElement);
 		
-		if (sourceDescriptor != null) {
-			findOverridingLabelExtensions(anElement, sourceDescriptor, contributors);
-		}
-		
 		// This is a TreeSet sorted ascending
 		Set possibleChildDescriptors = findDescriptorsWithPossibleChild(anElement, false);
+
+		// Add the source so that it gets sorted into the right place
+		if (sourceDescriptor != null) {
+			possibleChildDescriptors.add(sourceDescriptor);
+		}
+
 		for (Iterator iter = possibleChildDescriptors.iterator(); iter.hasNext();) {
 			NavigatorContentDescriptor ncd = (NavigatorContentDescriptor) iter.next();
 			findOverridingLabelExtensions(anElement, ncd, contributors);
 		}
-
+		
 		return contributors;
 	}
 
@@ -695,21 +696,28 @@ public class NavigatorContentService implements IExtensionActivationListener,
 	 * @param source
 	 * @param element
 	 */
-	public void rememberContribution(INavigatorContentDescriptor source, INavigatorContentDescriptor firstClassSource, Object element) {
+	public void rememberContribution(INavigatorContentDescriptor source,
+			INavigatorContentDescriptor firstClassSource, Object element) {
 		/*
-		 * We want to write to (overwrite) the contributionMemory only if we have never heard of the element before, or if the 
-		 * element is coming from the same first class NCE, which means that the subsequent NCE is an override.  The override will
-		 * take precedence over the originally contributing NCE.  However in the case of different first class NCEs, the first one 
-		 * wins, so we don't update the contribution memory. 
+		 * We want to write to (overwrite) the contributionMemory only if we
+		 * have never heard of the element before, or if the element is coming
+		 * from the same first class NCE, which means that the subsequent NCE is
+		 * an override. The override will take precedence over the originally
+		 * contributing NCE. However in the case of different first class NCEs,
+		 * the first one wins, so we don't update the contribution memory.
 		 */
-		if (contributionMemory.get(element) == null || contributionMemoryFirstClass.get(element) == firstClassSource) {
-			if (Policy.DEBUG_RESOLUTION)
-				System.out.println("rememberContribution: " + Policy.getObjectString(element) + " source: " + source);  //$NON-NLS-1$//$NON-NLS-2$
-			contributionMemory.put(element, source);
-			contributionMemoryFirstClass.put(element, firstClassSource);
+		synchronized (this) {
+			if (contributionMemory.get(element) == null
+					|| contributionMemoryFirstClass.get(element) == firstClassSource) {
+				if (Policy.DEBUG_RESOLUTION)
+					System.out
+							.println("rememberContribution: " + Policy.getObjectString(element) + " source: " + source); //$NON-NLS-1$//$NON-NLS-2$
+				contributionMemory.put(element, source);
+				contributionMemoryFirstClass.put(element, firstClassSource);
+			}
 		}
 	}
-	
+
 	/**
 	 * Forget about the specified element
 	 * 
@@ -717,21 +725,36 @@ public class NavigatorContentService implements IExtensionActivationListener,
 	 *            The element to forget.
 	 */
 	public void forgetContribution(Object element) {
-		contributionMemory.remove(element);
-		contributionMemoryFirstClass.remove(element);
+		synchronized (this) {
+			contributionMemory.remove(element);
+			contributionMemoryFirstClass.remove(element);
+		}
 	}
-	
+
 	/**
 	 * @param element
 	 * @return the remembered NavigatorContentDescriptor
 	 */
 	public NavigatorContentDescriptor getContribution(Object element)
 	{
-		NavigatorContentDescriptor desc = (NavigatorContentDescriptor) contributionMemory.get(element);
+		NavigatorContentDescriptor desc;
+		synchronized (this) {
+			desc = (NavigatorContentDescriptor) contributionMemory.get(element);
+		}
 		return desc;
 	}
 	
 	/**
+	 * Used only for the tests
+	 * @return the size of the contribution memory
+	 */
+	public int getContributionMemorySize() {
+		synchronized (this) {
+			return contributionMemory.size();
+		}
+	}
+	
+	/**
 	 * 
 	 * @param element
 	 *            The element contributed by the descriptor to be returned
@@ -744,7 +767,10 @@ public class NavigatorContentService implements IExtensionActivationListener,
 		if (structuredViewerManager == null)
 			return null;
 		// Try here first because it might not yet be in the tree
-		NavigatorContentDescriptor src = (NavigatorContentDescriptor) contributionMemory.get(element);
+		NavigatorContentDescriptor src;
+		synchronized (this) {
+			src = (NavigatorContentDescriptor) contributionMemory.get(element);
+		}
 		if (src != null)
 			return src;
 		return (NavigatorContentDescriptor) structuredViewerManager.getData(element);
@@ -827,25 +853,23 @@ public class NavigatorContentService implements IExtensionActivationListener,
 	public void onExtensionActivation(String aViewerId,
 			String[] aNavigatorExtensionId, boolean toEnable) {
 		synchronized (this) {
-			try {
-				NavigatorContentDescriptor key;
-				NavigatorContentExtension extension;
-				for (Iterator iter = contentExtensions.keySet().iterator(); iter
-						.hasNext();) {
-					key = (NavigatorContentDescriptor) iter.next();
-					INavigatorActivationService activation = getActivationService();
-					if (!activation.isNavigatorExtensionActive(key.getId())) {
-						extension = (NavigatorContentExtension) contentExtensions
-								.get(key);
-						iter.remove();
-						extension.dispose();
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				public void run() throws Exception {
+					NavigatorContentDescriptor key;
+					NavigatorContentExtension extension;
+					for (Iterator iter = contentExtensions.keySet().iterator(); iter
+							.hasNext();) {
+						key = (NavigatorContentDescriptor) iter.next();
+						INavigatorActivationService activation = getActivationService();
+						if (!activation.isNavigatorExtensionActive(key.getId())) {
+							extension = (NavigatorContentExtension) contentExtensions
+									.get(key);
+							iter.remove();
+							extension.dispose();
+						}
 					}
 				}
-			} catch (RuntimeException e) {
-				String msg = e.getMessage() != null ? e.getMessage() : e
-						.toString();
-				NavigatorPlugin.logError(0, msg, e);
-			}
+			});
 		}
 		if (structuredViewerManager != null) {
 			structuredViewerManager.resetViewerData();
@@ -955,30 +979,15 @@ public class NavigatorContentService implements IExtensionActivationListener,
 	 */
 	public void restoreState(final IMemento aMemento) {
 		synchronized (this) {
-			List runnables = new ArrayList();
-			for (Iterator extensionItr = getExtensions().iterator(); extensionItr
-					.hasNext();) {
+			for (Iterator extensionItr = getExtensions().iterator(); extensionItr.hasNext();) {
 				final NavigatorContentExtension element = (NavigatorContentExtension) extensionItr
 						.next();
-				ISafeRunnable runnable = new ISafeRunnable() {
+				SafeRunner.run(new NavigatorSafeRunnable(((NavigatorContentDescriptor) element
+						.getDescriptor()).getConfigElement()) {
 					public void run() throws Exception {
 						element.restoreState(aMemento);
-
 					}
-
-					public void handleException(Throwable exception) {
-						NavigatorPlugin.logError(0,
-								"Could not restore state for Common Navigator content extension" //$NON-NLS-1$
-										+ element.getId(), exception);
-
-					}
-				};
-				runnables.add(runnable);
-			}
-			for (Iterator iterator = runnables.iterator(); iterator.hasNext();) {
-				ISafeRunnable runnable = (ISafeRunnable) iterator.next();
-				SafeRunner.run(runnable);
-
+				});
 			}
 		}
 	}
@@ -990,13 +999,17 @@ public class NavigatorContentService implements IExtensionActivationListener,
 	 * org.eclipse.ui.internal.navigator.INavigatorContentService#saveState(
 	 * org.eclipse.ui.IMemento)
 	 */
-	public void saveState(IMemento aMemento) {
+	public void saveState(final IMemento aMemento) {
 		synchronized (this) {
-			for (Iterator extensionItr = getExtensions().iterator(); extensionItr
-					.hasNext();) {
-				NavigatorContentExtension element = (NavigatorContentExtension) extensionItr
+			for (Iterator extensionItr = getExtensions().iterator(); extensionItr.hasNext();) {
+				final NavigatorContentExtension element = (NavigatorContentExtension) extensionItr
 						.next();
-				element.saveState(aMemento);
+				SafeRunner.run(new NavigatorSafeRunnable(((NavigatorContentDescriptor) element
+						.getDescriptor()).getConfigElement()) {
+					public void run() throws Exception {
+						element.saveState(aMemento);
+					}
+				});
 			}
 		}
 	}
@@ -1161,29 +1174,33 @@ public class NavigatorContentService implements IExtensionActivationListener,
 		return "ContentService[" + viewerDescriptor.getViewerId() + "]"; //$NON-NLS-1$//$NON-NLS-2$
 	}
 
-	private void notifyListeners(NavigatorContentExtension aDescriptorInstance) {
+	private void notifyListeners(final NavigatorContentExtension aDescriptorInstance) {
 
 		if (listeners.size() == 0) {
 			return;
 		}
-		INavigatorContentServiceListener listener = null;
-		List failedListeners = null;
-		for (Iterator listenersItr = listeners.iterator(); listenersItr
-				.hasNext();) {
-			try {
-				listener = (INavigatorContentServiceListener) listenersItr
-						.next();
-				listener.onLoad(aDescriptorInstance);
-			} catch (RuntimeException re) {
-				if (failedListeners == null) {
-					failedListeners = new ArrayList();
+
+		final List failedListeners = new ArrayList();
+
+		for (Iterator listenersItr = listeners.iterator(); listenersItr.hasNext();) {
+			final INavigatorContentServiceListener listener = (INavigatorContentServiceListener) listenersItr
+					.next();
+			SafeRunner.run(new NavigatorSafeRunnable() {
+
+				public void run() throws Exception {
+					listener.onLoad(aDescriptorInstance);
 				}
-				failedListeners.add(listener);
-			}
+
+				public void handleException(Throwable e) {
+					super.handleException(e);
+					failedListeners.add(listener);
+				}
+			});
 		}
-		if (failedListeners != null) {
+
+		if (failedListeners.size() > 0) {
 			listeners.removeAll(failedListeners);
-		}
+		}		
 	}
 
 	private ITreeContentProvider[] extractContentProviders(
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java
index 4a603cb..b25b1d2 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Anton Leherbauer, Wind River
+ *       bug 261031 [CommonNavigator] IPipelinedContentProvider getParent() returning the suggested parent is not ignored
  *******************************************************************************/
 package org.eclipse.ui.internal.navigator;
 
@@ -18,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.ITreePathContentProvider;
 import org.eclipse.jface.viewers.TreePath;
@@ -99,22 +102,22 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 		enforceHasChildren = vDesc.getBooleanConfigProperty(NavigatorViewerDescriptor.PROP_ENFORCE_HAS_CHILDREN);
 	}
 
-	public synchronized void inputChanged(Viewer aViewer, Object anOldInput, Object aNewInput) {
+	public void inputChanged(Viewer aViewer, Object anOldInput, Object aNewInput) {
 		viewer = aViewer;
 		contentService.updateService(aViewer, anOldInput, aNewInput);
 	}
 
-	public synchronized Object[] getElements(Object anInputElement) {
+	public Object[] getElements(Object anInputElement) {
 		Set rootContentExtensions = contentService.findRootContentExtensions(anInputElement);
 		return internalGetChildren(anInputElement, anInputElement, rootContentExtensions, ELEMENTS);
 	}
 
-	public synchronized Object[] getChildren(Object aParentElement) {
+	public Object[] getChildren(Object aParentElement) {
 		Set enabledExtensions = contentService.findContentExtensionsByTriggerPoint(aParentElement);
 		return internalGetChildren(aParentElement, aParentElement, enabledExtensions, !ELEMENTS);
 	}
 
-	public synchronized Object[] getChildren(TreePath parentPath) {
+	public Object[] getChildren(TreePath parentPath) {
 		Object aParentElement = internalAsElement(parentPath);
 		Set enabledExtensions = contentService.findContentExtensionsByTriggerPoint(aParentElement);
 		return internalGetChildren(aParentElement, parentPath, enabledExtensions, !ELEMENTS);
@@ -122,41 +125,52 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 	
 	private static final boolean ELEMENTS = true;
 
-	private Object[] internalGetChildren(Object aParentElement, Object aParentElementOrPath, Set enabledExtensions, boolean elements) {
+	private Object[] internalGetChildren(final Object aParentElement,
+			final Object aParentElementOrPath, final Set enabledExtensions, final boolean elements) {
 		if (enabledExtensions.size() == 0) {
 			return NO_CHILDREN;
 		}
-		ContributorTrackingSet localSet = new ContributorTrackingSet(contentService);
-		Set finalSet = new LinkedHashSet();
-
-		Object[] contributedChildren = null;
-		NavigatorContentExtension foundExtension;
-		NavigatorContentExtension[] overridingExtensions;
-		for (Iterator itr = enabledExtensions.iterator(); itr.hasNext();) {
-			foundExtension = (NavigatorContentExtension) itr.next();
-			try {
-
-				if (!isOverridingExtensionInSet(foundExtension.getDescriptor(), enabledExtensions)) {
-					if (elements)
-						contributedChildren = foundExtension.internalGetContentProvider().getElements(aParentElementOrPath);
-					else
-						contributedChildren = foundExtension.internalGetContentProvider().getChildren(aParentElementOrPath);
-					overridingExtensions = foundExtension.getOverridingExtensionsForTriggerPoint(aParentElement);
-					INavigatorContentDescriptor foundDescriptor = foundExtension.getDescriptor();
-					localSet.setContributor(foundDescriptor, foundDescriptor);
-					localSet.setContents(contributedChildren);
-
-					if (overridingExtensions.length > 0) {
-						pipelineChildren(aParentElement, overridingExtensions, foundDescriptor, localSet, elements);
+		final Set finalSet = new LinkedHashSet();
+		final ContributorTrackingSet localSet = new ContributorTrackingSet(contentService);
+
+		for (final Iterator itr = enabledExtensions.iterator(); itr.hasNext();) {
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				NavigatorContentExtension foundExtension = (NavigatorContentExtension) itr.next();
+				Object[] contributedChildren = null;
+				NavigatorContentExtension[] overridingExtensions;
+
+				public void run() throws Exception {
+					if (!isOverridingExtensionInSet(foundExtension.getDescriptor(),
+							enabledExtensions)) {
+						if (elements)
+							contributedChildren = foundExtension.internalGetContentProvider()
+									.getElements(aParentElementOrPath);
+						else
+							contributedChildren = foundExtension.internalGetContentProvider()
+									.getChildren(aParentElementOrPath);
+						overridingExtensions = foundExtension
+								.getOverridingExtensionsForTriggerPoint(aParentElement);
+						INavigatorContentDescriptor foundDescriptor = foundExtension
+								.getDescriptor();
+						localSet.setContributor(foundDescriptor, foundDescriptor);
+						localSet.setContents(contributedChildren);
+
+						if (overridingExtensions.length > 0) {
+							pipelineChildren(aParentElement, overridingExtensions, foundDescriptor,
+									localSet, elements);
+						}
+						finalSet.addAll(localSet);
 					}
-					finalSet.addAll(localSet);
 				}
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { foundExtension.getDescriptor().getId(), aParentElement }), e);
 
-			}
-		}
+				public void handleException(Throwable e) {
+					NavigatorPlugin.logError(0, NLS.bind(
+							CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+									foundExtension.getDescriptor().getId(), aParentElement }), e);
+				}
+			});
+		}		
+
 		return finalSet.toArray();
 	}
 
@@ -262,44 +276,49 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 		return false;
 	}
 
-	public synchronized Object getParent(Object anElement) {
-		Set extensions = contentService.findContentExtensionsWithPossibleChild(anElement);
+	public Object getParent(final Object anElement) {
+		final Set extensions = contentService.findContentExtensionsWithPossibleChild(anElement);
+		final Object[] parent = new Object[1];
 
-		Object parent;
-		NavigatorContentExtension foundExtension;
-		NavigatorContentExtension[] overridingExtensions;
 		for (Iterator itr = extensions.iterator(); itr.hasNext();) {
-			foundExtension = (NavigatorContentExtension) itr.next();
-			try {
-
-				if (!isOverridingExtensionInSet(foundExtension.getDescriptor(), extensions)) {
-					parent = foundExtension.internalGetContentProvider().getParent(anElement);
-					overridingExtensions = foundExtension.getOverridingExtensionsForPossibleChild(anElement);
-					if (overridingExtensions.length > 0) {
-						parent = pipelineParent(anElement, overridingExtensions, parent);
-					}
+			final NavigatorContentExtension foundExtension = (NavigatorContentExtension) itr.next();
+
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				NavigatorContentExtension[] overridingExtensions;
+
+				public void run() throws Exception {
+					if (!isOverridingExtensionInSet(foundExtension.getDescriptor(), extensions)) {
+						parent[0] = foundExtension.internalGetContentProvider()
+								.getParent(anElement);
+						overridingExtensions = foundExtension
+								.getOverridingExtensionsForPossibleChild(anElement);
+						if (overridingExtensions.length > 0) {
+							parent[0] = pipelineParent(anElement, overridingExtensions, parent);
+						}
 
-					if (parent != null) {
-						return parent;
+						if (parent[0] != null) {
+							return;
+						}
 					}
 				}
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { foundExtension.getDescriptor().getId(), anElement }), e);
-			}
-		}
 
-		return null;
+				public void handleException(Throwable e) {
+					NavigatorPlugin.logError(0, NLS.bind(
+							CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+									foundExtension.getDescriptor().getId(), anElement }), e);
+				}
+			});
+		}
+		return parent[0];
 	}
 
-	public synchronized TreePath[] getParents(Object anElement) {
+	public TreePath[] getParents(Object anElement) {
 		List paths = new ArrayList();
 		TreePathCompiler compiler = new TreePathCompiler(anElement);
 		Set compilers = findPaths(compiler);
 		for (Iterator iter = compilers.iterator(); iter.hasNext();) {
 			TreePathCompiler c = (TreePathCompiler) iter.next();
 			paths.add(c.createParentPath());
-
 		}
 		return (TreePath[]) paths.toArray(new TreePath[paths.size()]);
 
@@ -351,43 +370,53 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 	 *  For pipelined calls, we simply ask the pipelined content provider about the children
 	 *  and they can override this as they would in the case where they are providing the objects.
 	 */
-	public synchronized boolean hasChildren(Object anElementOrPath) {
-		Object anElement = internalAsElement(anElementOrPath);
-		Set enabledExtensions = contentService.findContentExtensionsByTriggerPoint(anElement);
+	public boolean hasChildren(final Object anElementOrPath) {
+		final Object anElement = internalAsElement(anElementOrPath);
+		final Set enabledExtensions = contentService.findContentExtensionsByTriggerPoint(anElement);
+		final boolean suggestedHasChildren[] = new boolean[1];
 
-		NavigatorContentExtension ext;
-		boolean suggestedHasChildren = false;
-		for (Iterator itr = enabledExtensions.iterator(); itr.hasNext();) {
-			ext = (NavigatorContentExtension) itr.next();
+		for (final Iterator itr = enabledExtensions.iterator(); itr.hasNext();) {
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				NavigatorContentExtension ext;
 
-			if (!ext.isLoaded() && !enforceHasChildren)
-				return true;
+				public void run() throws Exception {
+					ext = (NavigatorContentExtension) itr.next();
 
-			NavigatorContentExtension[] overridingExtensions;
-			if (!isOverridingExtensionInSet(ext.getDescriptor(), enabledExtensions)) {
-				try {
-					SafeDelegateTreeContentProvider cp = ext.internalGetContentProvider();
-					suggestedHasChildren |= callNormalHasChildren(anElementOrPath, anElement, cp);
-					overridingExtensions = ext.getOverridingExtensionsForTriggerPoint(anElement);
+					if (!ext.isLoaded() && !enforceHasChildren) {
+						suggestedHasChildren[0] = true;
+						return;
+					}
+
+					NavigatorContentExtension[] overridingExtensions;
+					if (!isOverridingExtensionInSet(ext.getDescriptor(), enabledExtensions)) {
+						SafeDelegateTreeContentProvider cp = ext.internalGetContentProvider();
+						suggestedHasChildren[0] |= callNormalHasChildren(anElementOrPath,
+								anElement, cp);
+						overridingExtensions = ext
+								.getOverridingExtensionsForTriggerPoint(anElement);
+
+						if (overridingExtensions.length > 0) {
+							suggestedHasChildren[0] = pipelineHasChildren(anElementOrPath,
+									anElement, overridingExtensions, suggestedHasChildren[0]);
+						}
+						if (suggestedHasChildren[0]) {
+							return;
 
-					if (overridingExtensions.length > 0) {
-						suggestedHasChildren = pipelineHasChildren(anElementOrPath, anElement, overridingExtensions,
-								suggestedHasChildren);
+						}
 					}
-					if (suggestedHasChildren)
-						return true;
+				}
 
-				} catch (Throwable e) {
+				public void handleException(Throwable e) {
 					NavigatorPlugin.logError(0, NLS.bind(
 							CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
 									ext.getDescriptor().getId(), anElementOrPath }), e);
 				}
-			}
+			});
 		}
-		return suggestedHasChildren;
+		return suggestedHasChildren[0];
 	}
 
-	public synchronized boolean hasChildren(TreePath path) {
+	public boolean hasChildren(TreePath path) {
 		return hasChildren((Object)path);
 	}
 
@@ -434,7 +463,7 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 	 * 
 	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
 	 */
-	public synchronized void dispose() {
+	public void dispose() {
 		if (disposeContentService) {
 			contentService.dispose();
 		}
@@ -573,40 +602,47 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 
 	}
 
-	private Set findParents(Object anElement) {
-
-		Set descriptors = contentService.findDescriptorsWithPossibleChild(anElement, false);
-		Set parents = new LinkedHashSet();
-		NavigatorContentDescriptor foundDescriptor;
-		NavigatorContentExtension foundExtension;
-		Object parent = null;
-		for (Iterator itr = descriptors.iterator(); itr.hasNext();) {
-			foundDescriptor = (NavigatorContentDescriptor) itr.next();
-			foundExtension = contentService.getExtension(foundDescriptor);
-			try {
-				if (!isOverridingDescriptorInSet(foundExtension.getDescriptor(), descriptors)) {
-					if (foundExtension.internalGetContentProvider().isTreePath()) {
-						TreePath[] parentTreePaths = ((ITreePathContentProvider) foundExtension
-								.internalGetContentProvider()).getParents(anElement);
-
-						for (int i = 0; i < parentTreePaths.length; i++) {
-
-							parent = parentTreePaths[i].getLastSegment();
+	private Set findParents(final Object anElement) {
+		final Set descriptors = contentService.findDescriptorsWithPossibleChild(anElement, false);
+		final Set parents = new LinkedHashSet();
+
+		for (final Iterator itr = descriptors.iterator(); itr.hasNext();) {
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				NavigatorContentDescriptor foundDescriptor;
+				NavigatorContentExtension foundExtension;
+				Object parent = null;
+
+				public void run() throws Exception {
+					foundDescriptor = (NavigatorContentDescriptor) itr.next();
+					foundExtension = contentService.getExtension(foundDescriptor);
+
+					if (!isOverridingDescriptorInSet(foundExtension.getDescriptor(), descriptors)) {
+						if (foundExtension.internalGetContentProvider().isTreePath()) {
+							TreePath[] parentTreePaths = ((ITreePathContentProvider) foundExtension
+									.internalGetContentProvider()).getParents(anElement);
+
+							for (int i = 0; i < parentTreePaths.length; i++) {
+
+								parent = parentTreePaths[i].getLastSegment();
+								if ((parent = findParent(foundExtension, anElement, parent)) != null)
+									parents.add(parent);
+							}
+
+						} else {
+							parent = foundExtension.internalGetContentProvider().getParent(
+									anElement);
 							if ((parent = findParent(foundExtension, anElement, parent)) != null)
 								parents.add(parent);
 						}
-
-					} else {
-						parent = foundExtension.internalGetContentProvider().getParent(anElement);
-						if ((parent = findParent(foundExtension, anElement, parent)) != null)
-							parents.add(parent);
 					}
 				}
 
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { foundExtension.getDescriptor().getId(), anElement }), e);
-			}
+				public void handleException(Throwable e) {
+					NavigatorPlugin.logError(0, NLS.bind(
+							CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+									foundExtension.getDescriptor().getId(), anElement }), e);
+				}
+			});
 		}
 
 		return parents;
@@ -627,7 +663,7 @@ public class NavigatorContentServiceContentProvider implements ITreeContentProvi
 				piplineContentProvider = (IPipelinedTreeContentProvider) overridingExtensions[i].internalGetContentProvider();
 				suggestedOverriddenParent = piplineContentProvider.getPipelinedParent(anElement, lastValidParent);
 
-				if (suggestedOverriddenParent != null)
+				if (suggestedOverriddenParent != null && !suggestedOverriddenParent.equals(aSuggestedParent))
 					lastValidParent = suggestedOverriddenParent;
 
 				// should never return null
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java
index fc2d93a..62c03c4 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java
index 188b6a3..e31f101 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,6 +21,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.StructuredViewer;
@@ -64,32 +65,28 @@ public class NavigatorFilterService implements INavigatorFilterService {
 	}
 
 	private synchronized void restoreFilterActivation() {
+		SafeRunner.run(new NavigatorSafeRunnable() {
+			public void run() throws Exception {
+				IEclipsePreferences prefs = NavigatorContentService.getPreferencesRoot();
+
+				if (prefs.get(getFilterActivationPreferenceKey(), null) != null) {
+					String activatedFiltersPreferenceValue = prefs.get(
+							getFilterActivationPreferenceKey(), null);
+					String[] activeFilterIds = activatedFiltersPreferenceValue.split(DELIM);
+					for (int i = 0; i < activeFilterIds.length; i++) {
+						activeFilters.add(activeFilterIds[i]);
+					}
 
-		try {
-			IEclipsePreferences prefs = NavigatorContentService.getPreferencesRoot();
-
-			if (prefs.get(getFilterActivationPreferenceKey(), null) != null) {
-				String activatedFiltersPreferenceValue = prefs
-						.get(getFilterActivationPreferenceKey(), null);
-				String[] activeFilterIds = activatedFiltersPreferenceValue
-						.split(DELIM);
-				for (int i = 0; i < activeFilterIds.length; i++) {
-					activeFilters.add(activeFilterIds[i]);
-				}
-
-			} else {
-				ICommonFilterDescriptor[] visibleFilterDescriptors = getVisibleFilterDescriptors();
-				for (int i = 0; i < visibleFilterDescriptors.length; i++) {
-					if (visibleFilterDescriptors[i].isActiveByDefault()) {
-						activeFilters.add(visibleFilterDescriptors[i].getId());
+				} else {
+					ICommonFilterDescriptor[] visibleFilterDescriptors = getVisibleFilterDescriptors();
+					for (int i = 0; i < visibleFilterDescriptors.length; i++) {
+						if (visibleFilterDescriptors[i].isActiveByDefault()) {
+							activeFilters.add(visibleFilterDescriptors[i].getId());
+						}
 					}
 				}
 			}
-
-		} catch (RuntimeException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		}
-
+		});
 	}
 
 	/*
@@ -100,6 +97,8 @@ public class NavigatorFilterService implements INavigatorFilterService {
 	public void persistFilterActivationState() {
 
 		synchronized (activeFilters) {
+			CommonFilterDescriptorManager dm = CommonFilterDescriptorManager
+			.getInstance();
 
 			/*
 			 * by creating a StringBuffer with DELIM, we ensure the string is
@@ -108,14 +107,16 @@ public class NavigatorFilterService implements INavigatorFilterService {
 			StringBuffer activatedFiltersPreferenceValue = new StringBuffer(DELIM);
 
 			for (Iterator activeItr = activeFilters.iterator(); activeItr.hasNext();) {
-				activatedFiltersPreferenceValue.append(activeItr.next().toString()).append(DELIM);
+				String id = activeItr.next().toString();
+				if (!dm.getFilterById(id).isVisibleInUi())
+					continue;
+				activatedFiltersPreferenceValue.append(id).append(DELIM);
 			}
 
 			IEclipsePreferences prefs = NavigatorContentService.getPreferencesRoot();
 			prefs.put(getFilterActivationPreferenceKey(), activatedFiltersPreferenceValue.toString());
 			NavigatorContentService.flushPreferences(prefs);
 		}
-
 	}
 	
 	/**
@@ -195,6 +196,14 @@ public class NavigatorFilterService implements INavigatorFilterService {
 				contentService);
 	}
 
+	/**
+	 * @return the visible filter descriptors for the UI
+	 */
+	public ICommonFilterDescriptor[] getVisibleFilterDescriptorsForUI() {
+		return CommonFilterDescriptorManager.getInstance().findVisibleFilters(
+				contentService, CommonFilterDescriptorManager.FOR_UI);
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -221,67 +230,64 @@ public class NavigatorFilterService implements INavigatorFilterService {
 	
 	public void activateFilterIdsAndUpdateViewer(String[] filterIdsToActivate) {
 		boolean updateFilterActivation = false;
-		
-		StructuredViewer commonViewer = (StructuredViewer) contentService.getViewer();
-		
+
 		// we sort the array in order to use Array.binarySearch();
 		Arrays.sort(filterIdsToActivate);
-		
-		try {
-			commonViewer.getControl().setRedraw(false);
-
-			INavigatorFilterService filterService = contentService
-					.getFilterService();
-
-				ICommonFilterDescriptor[] visibleFilterDescriptors = filterService
-						.getVisibleFilterDescriptors();
-
-				int indexofFilterIdToBeActivated;
-
-				/* is there a delta? */
-				for (int i = 0; i < visibleFilterDescriptors.length
-						&& !updateFilterActivation; i++) {
-					indexofFilterIdToBeActivated = Arrays.binarySearch(
-							filterIdsToActivate, visibleFilterDescriptors[i]
-									.getId());
-
-					/*
-					 * Either we have a filter that should be active that isn't
-					 * XOR a filter that shouldn't be active that is currently
-					 */
-					if (indexofFilterIdToBeActivated >= 0
-							^ filterService
-									.isActive(visibleFilterDescriptors[i]
-											.getId())) {
-						updateFilterActivation = true;
-					}
-				}
-
-				/* If so, update */
-				if (updateFilterActivation) {
-
-					filterService.setActiveFilterIds(filterIdsToActivate);
-					filterService.persistFilterActivationState();
-
-					commonViewer.resetFilters();
+		CommonFilterDescriptor[] visibleFilterDescriptors = (CommonFilterDescriptor[]) getVisibleFilterDescriptors();
 
-					ViewerFilter[] visibleFilters = filterService
-							.getVisibleFilters(true);
-					for (int i = 0; i < visibleFilters.length; i++) {
-						commonViewer.addFilter(visibleFilters[i]);
-					}
+		int indexofFilterIdToBeActivated;
 
-					// the action providers may no longer be enabled, so we
-					// reset the selection.
-					commonViewer.setSelection(StructuredSelection.EMPTY);
-				}
+		List nonUiVisible = null;
+		
+		/* is there a delta? */
+		for (int i = 0; i < visibleFilterDescriptors.length; i++) {
+			indexofFilterIdToBeActivated = Arrays.binarySearch(filterIdsToActivate,
+					visibleFilterDescriptors[i].getId());
+			/*
+			 * Either we have a filter that should be active that isn't XOR a
+			 * filter that shouldn't be active that is currently
+			 */
+			if (indexofFilterIdToBeActivated >= 0 ^ isActive(visibleFilterDescriptors[i].getId())) {
+				updateFilterActivation = true;
+			}
+			
+			// We don't turn of non-UI visible filters here, they have to be manipulated explicitly
+			if (!visibleFilterDescriptors[i].isVisibleInUi()) {
+				if (nonUiVisible == null)
+					nonUiVisible = new ArrayList();
+				nonUiVisible.add(visibleFilterDescriptors[i].getId());
+			}
+		}
 
-		} finally {
-			commonViewer.getControl().setRedraw(true);
+		/* If so, update */
+		if (updateFilterActivation) {
+			if (nonUiVisible != null) {
+				for (int i = 0; i < filterIdsToActivate.length; i++)
+					nonUiVisible.add(filterIdsToActivate[i]);
+				filterIdsToActivate = (String[]) nonUiVisible.toArray(new String[]{});
+			}
+			
+			setActiveFilterIds(filterIdsToActivate);
+			persistFilterActivationState();
+			updateViewer();
+			// the action providers may no longer be enabled, so we
+			// reset the selection.
+			StructuredViewer commonViewer = (StructuredViewer) contentService.getViewer();
+			commonViewer.setSelection(StructuredSelection.EMPTY);
 		}
 	}
 
 	/**
+	 * Updates the viewer filters to match the active filters.
+	 */
+	public void updateViewer() {
+		StructuredViewer commonViewer = (StructuredViewer) contentService.getViewer();
+
+		ViewerFilter[] visibleFilters =	getVisibleFilters(true);
+		commonViewer.setFilters(visibleFilters);
+	}		
+		
+	/**
 	 * Activate the given array without disabling all other filters.
 	 * 
 	 * @param theFilterIds
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java
index 1e9d386..8e2431a 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPipelineService.java
@@ -16,6 +16,7 @@ import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.osgi.util.NLS;
 
@@ -45,31 +46,6 @@ public class NavigatorPipelineService implements INavigatorPipelineService {
 		contentService = aContentService;
 	}
 
-	/**
-	 * Intercept attempts to add elements directly to the viewer.
-	 * 
-	 * <p>
-	 * For content extensions that reshape the structure of children in a
-	 * viewer, their overridden extensions may sometimes use optimized refreshes
-	 * to add elements to the tree. These attempts must be intercepted and
-	 * mapped to the correct set of model elements in the overriding extension.
-	 * Clients may add, remove, or modify elements in the given set of added
-	 * children. Clients should return a set for downstream extensions to
-	 * massage further.
-	 * </p>
-	 * <p>
-	 * <b>Clients should not call any of the add, remove, refresh, or update
-	 * methods on the viewer from this method or any code invoked by the
-	 * implementation of this method.</b>
-	 * </p>
-	 * 
-	 * @param anAddModification
-	 *            The shape modification which contains the current suggested
-	 *            parent and children. Clients may modify this parameter
-	 *            directly and return it as the new shape modification.
-	 * @return The new shape modification to use. Clients should <b>never</b>
-	 *         return <b>null</b> from this method.
-	 */
 	public PipelinedShapeModification interceptAdd(
 			PipelinedShapeModification anAddModification) {
 		
@@ -85,55 +61,43 @@ public class NavigatorPipelineService implements INavigatorPipelineService {
 		return anAddModification;
 	}
  
-	private void pipelineInterceptAdd(PipelinedShapeModification anAddModification, ContributorTrackingSet trackedSet, INavigatorContentDescriptor descriptor) {
-		if(descriptor.hasOverridingExtensions()) {
+	private void pipelineInterceptAdd(final PipelinedShapeModification anAddModification,
+			final ContributorTrackingSet trackedSet, final INavigatorContentDescriptor descriptor) {
+		if (descriptor.hasOverridingExtensions()) {
 			Set overridingDescriptors = descriptor.getOverriddingExtensions();
 			for (Iterator overridingDescriptorsItr = overridingDescriptors.iterator(); overridingDescriptorsItr
 					.hasNext();) {
-				INavigatorContentDescriptor overridingDescriptor = (INavigatorContentDescriptor) overridingDescriptorsItr.next();
-				NavigatorContentExtension extension = null;
-				if(contentService.isVisible(overridingDescriptor.getId()) && contentService.isActive(overridingDescriptor.getId())) {
-					try {
-						trackedSet.setContributor((NavigatorContentDescriptor) overridingDescriptor, (NavigatorContentDescriptor) descriptor);
-						extension = contentService.getExtension(overridingDescriptor);
-						if (extension.internalGetContentProvider().isPipelined()) {
-							((IPipelinedTreeContentProvider) extension.internalGetContentProvider()).interceptAdd(anAddModification);
-						}
-						trackedSet.setContributor(null, null);
-						pipelineInterceptAdd(anAddModification, trackedSet, overridingDescriptor);
-					} catch (Throwable e) {
-						NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] { extension.getDescriptor().getId(), null }), e);
+				INavigatorContentDescriptor overridingDescriptor = (INavigatorContentDescriptor) overridingDescriptorsItr
+						.next();
+				if (contentService.isVisible(overridingDescriptor.getId())
+						&& contentService.isActive(overridingDescriptor.getId())) {
+					trackedSet.setContributor((NavigatorContentDescriptor) overridingDescriptor,
+							(NavigatorContentDescriptor) descriptor);
+					final NavigatorContentExtension extension = contentService
+							.getExtension(overridingDescriptor);
+					if (extension.internalGetContentProvider().isPipelined()) {
+						SafeRunner.run(new NavigatorSafeRunnable() {
+							public void run() throws Exception {
+								((IPipelinedTreeContentProvider) extension
+										.internalGetContentProvider())
+										.interceptAdd(anAddModification);
+							}
+
+							public void handleException(Throwable e) {
+								NavigatorPlugin.logError(0, NLS.bind(
+										CommonNavigatorMessages.Exception_Invoking_Extension,
+										new Object[] { extension.getDescriptor().getId(), null }),
+										e);
+							}
+						});
 					}
+					trackedSet.setContributor(null, null);
+					pipelineInterceptAdd(anAddModification, trackedSet, overridingDescriptor);
 				}
 			}
 		}
 	}
 
-	/**
-	 * Intercept attempts to remove elements directly from the viewer.
-	 * 
-	 * <p>
-	 * For content extensions that reshape the structure of children in a
-	 * viewer, their overridden extensions may sometimes use optimized refreshes
-	 * to remove elements to the tree. These attempts must be intercepted and
-	 * mapped to the correct set of model elements in the overriding extension.
-	 * Clients may add, remove, or modify elements in the given set of removed
-	 * children. Clients should return a set for downstream extensions to
-	 * massage further.
-	 * </p>
-	 * <p>
-	 * <b>Clients should not call any of the add, remove, refresh, or update
-	 * methods on the viewer from this method or any code invoked by the
-	 * implementation of this method.</b>
-	 * </p>
-	 * 
-	 * @param aRemoveModification
-	 *            The shape modification which contains the current suggested
-	 *            parent and children. Clients may modify this parameter
-	 *            directly and return it as the new shape modification.
-	 * @return The new shape modification to use. Clients should <b>never</b>
-	 *         return <b>null</b> from this method.
-	 */
 	public PipelinedShapeModification interceptRemove(
 			PipelinedShapeModification aRemoveModification) {
 		
@@ -154,57 +118,41 @@ public class NavigatorPipelineService implements INavigatorPipelineService {
 		return aRemoveModification;
 	}
 	
+	private void pipelineInterceptRemove(final PipelinedShapeModification aRemoveModification,
+			final ContributorTrackingSet trackedSet,
+			final NavigatorContentExtension overrideableExtension) {
 
-	private void pipelineInterceptRemove(PipelinedShapeModification aRemoveModification, ContributorTrackingSet trackedSet, NavigatorContentExtension overrideableExtension) {
-		NavigatorContentExtension overridingExtension = null;
-		Set overridingExtensions = new LinkedHashSet();
-		for (Iterator iter = trackedSet.iterator(); iter.hasNext();) {
-			Object element = (Object) iter.next();
-			if (element instanceof TreePath) {
-				overridingExtensions.addAll(Arrays.asList(overrideableExtension.getOverridingExtensionsForPossibleChild(((TreePath) element).getLastSegment())));
-			} else {
-				overridingExtensions.addAll(Arrays.asList(overrideableExtension.getOverridingExtensionsForPossibleChild(element)));
-			}
-		}
+		final Set overridingExtensions = new LinkedHashSet();
+		overridingExtensions.addAll(Arrays.asList(overrideableExtension
+				.getOverridingExtensions()));
 
-		for (Iterator extensionsItr = overridingExtensions.iterator(); extensionsItr.hasNext();) {
-			try {
-				overridingExtension = (NavigatorContentExtension) extensionsItr.next();
-				trackedSet.setContributor((NavigatorContentDescriptor) overridingExtension.getDescriptor(), null);
-				if (overridingExtension.internalGetContentProvider().isPipelined()) {
-					((IPipelinedTreeContentProvider) overridingExtension.internalGetContentProvider()).interceptRemove(aRemoveModification);
-				}
-				trackedSet.setContributor(null, null);
-				if (overridingExtension.getDescriptor().hasOverridingExtensions())
-					pipelineInterceptRemove(aRemoveModification, trackedSet, overridingExtension);
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { overridingExtension.getDescriptor().getId(), null }), e);
-			}
+		for (Iterator extensionsItr = overridingExtensions.iterator(); extensionsItr
+				.hasNext();) {
+			final NavigatorContentExtension overridingExtension = (NavigatorContentExtension) extensionsItr
+					.next();
+			trackedSet.setContributor((NavigatorContentDescriptor) overridingExtension
+					.getDescriptor(), null);
+			if (overridingExtension.internalGetContentProvider().isPipelined()) {
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						((IPipelinedTreeContentProvider) overridingExtension
+								.internalGetContentProvider()).interceptRemove(aRemoveModification);
+					}
 
+					public void handleException(Throwable e) {
+						NavigatorPlugin.logError(0, NLS.bind(
+								CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+										overridingExtension.getDescriptor().getId(), null }), e);
+					}
+				});
+			}
+			trackedSet.setContributor(null, null);
+			if (overridingExtension.getDescriptor().hasOverridingExtensions())
+				pipelineInterceptRemove(aRemoveModification, trackedSet, overridingExtension);
 		}
 
 	}
 
-	/**
-	 * Intercept calls to viewer <code>refresh()</code> methods.
-	 * 
-	 * <p>
-	 * Clients may modify the given update to add or remove the elements to be
-	 * refreshed. Clients may return the same instance that was passed in for
-	 * the next downstream extension.
-	 * </p>
-	 * 
-	 * <p>
-	 * <b>Clients should not call any of the add, remove, refresh, or update
-	 * methods on the viewer from this method or any code invoked by the
-	 * implementation of this method.</b>
-	 * </p>
-	 * 
-	 * @param aRefreshSynchronization
-	 *            The (current) refresh update to execute against the viewer.
-	 * @return The (potentially reshaped) refresh to execute against the viewer.
-	 */
 	public boolean interceptRefresh(
 			PipelinedViewerUpdate aRefreshSynchronization) {
  
@@ -223,54 +171,39 @@ public class NavigatorPipelineService implements INavigatorPipelineService {
 		
 	}
 
-	private boolean pipelineInterceptRefresh(NavigatorContentExtension overrideableExtension,
-			PipelinedViewerUpdate aRefreshSynchronization, Object refreshable) {
+	private boolean pipelineInterceptRefresh(final NavigatorContentExtension overrideableExtension,
+			final PipelinedViewerUpdate aRefreshSynchronization, final Object refreshable) {
 
-		boolean intercepted = false;
-		
-		NavigatorContentExtension[] overridingExtensionsForPossibleChild = overrideableExtension.getOverridingExtensionsForPossibleChild(refreshable);
-		for (int i=0; i<overridingExtensionsForPossibleChild.length; i++) {
-			try {
-				if (overridingExtensionsForPossibleChild[i].internalGetContentProvider().isPipelined()) {
-
-					intercepted |= ((IPipelinedTreeContentProvider) overridingExtensionsForPossibleChild[i]
-							.internalGetContentProvider())
-							.interceptRefresh(aRefreshSynchronization);
-					
-					if (overridingExtensionsForPossibleChild[i].getDescriptor().hasOverridingExtensions())
-						intercepted |= pipelineInterceptRefresh(overridingExtensionsForPossibleChild[i], aRefreshSynchronization, refreshable);
-				}
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { overridingExtensionsForPossibleChild[i].getDescriptor().getId(), refreshable }), e);
+		final boolean[] intercepted = new boolean[1];
+
+		final NavigatorContentExtension[] overridingExtensions = overrideableExtension
+				.getOverridingExtensions();
+		for (int i = 0; i < overridingExtensions.length; i++) {
+			final NavigatorContentExtension nceLocal = overridingExtensions[i];
+			if (nceLocal.internalGetContentProvider().isPipelined()) {
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						intercepted[0] |= ((IPipelinedTreeContentProvider) nceLocal
+								.internalGetContentProvider())
+								.interceptRefresh(aRefreshSynchronization);
+
+						if (nceLocal.getDescriptor().hasOverridingExtensions())
+							intercepted[0] |= pipelineInterceptRefresh(nceLocal,
+									aRefreshSynchronization, refreshable);
+					}
+
+					public void handleException(Throwable e) {
+						NavigatorPlugin.logError(0, NLS.bind(
+								CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+										nceLocal.getDescriptor().getId(), refreshable }), e);
+					}
+				});
 			}
 		}
 
-		return intercepted;
-	}
-	
-
+		return intercepted[0];
+	}	
 
-	/**
-	 * Intercept calls to viewer <code>update()</code> methods.
-	 * 
-	 * <p>
-	 * Clients may modify the given update to add or remove the elements to be
-	 * updated. Clients may also add or remove properties for the given targets
-	 * to optimize the refresh. Clients may return the same instance that was
-	 * passed in for the next downstream extension.
-	 * </p>
-	 * 
-	 * <p>
-	 * <b>Clients should not call any of the add, remove, refresh, or update
-	 * methods on the viewer from this method or any code invoked by the
-	 * implementation of this method.</b>
-	 * </p>
-	 * 
-	 * @param anUpdateSynchronization
-	 *            The (current) update to execute against the viewer.
-	 * @return The (potentially reshaped) update to execute against the viewer.
-	 */
 	public boolean interceptUpdate(
 			PipelinedViewerUpdate anUpdateSynchronization) {
 		 
@@ -290,29 +223,37 @@ public class NavigatorPipelineService implements INavigatorPipelineService {
 		
 	}
 
-	private boolean pipelineInterceptUpdate(NavigatorContentExtension overrideableExtension,
-					PipelinedViewerUpdate anUpdateSynchronization, Object refreshable) {
-
-		boolean intercepted = false;
-		NavigatorContentExtension[] overridingExtensionsForPossibleChild = overrideableExtension.getOverridingExtensionsForPossibleChild(refreshable);
-		for (int i=0; i<overridingExtensionsForPossibleChild.length; i++) {
-			try {
-				if (overridingExtensionsForPossibleChild[i].internalGetContentProvider().isPipelined()) {
-
-					intercepted |= ((IPipelinedTreeContentProvider) overridingExtensionsForPossibleChild[i]
-							.internalGetContentProvider())
-							.interceptUpdate(anUpdateSynchronization);
-					
-					if (overridingExtensionsForPossibleChild[i].getDescriptor().hasOverridingExtensions())
-						intercepted |= pipelineInterceptUpdate(overridingExtensionsForPossibleChild[i], anUpdateSynchronization, refreshable);
-				}
-			} catch (Throwable e) {
-				NavigatorPlugin.logError(0, NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension,
-						new Object[] { overridingExtensionsForPossibleChild[i].getDescriptor().getId(), refreshable }), e);
+	private boolean pipelineInterceptUpdate(final NavigatorContentExtension overrideableExtension,
+			final PipelinedViewerUpdate anUpdateSynchronization, final Object refreshable) {
+
+		final boolean[] intercepted = new boolean[1];
+		final NavigatorContentExtension[] overridingExtensions = overrideableExtension
+				.getOverridingExtensions();
+		for (int i = 0; i < overridingExtensions.length; i++) {
+			if (overridingExtensions[i].internalGetContentProvider().isPipelined()) {
+				final NavigatorContentExtension nceLocal = overridingExtensions[i];
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						intercepted[0] |= ((IPipelinedTreeContentProvider) nceLocal
+								.internalGetContentProvider())
+								.interceptUpdate(anUpdateSynchronization);
+
+						if (nceLocal.getDescriptor().hasOverridingExtensions())
+							intercepted[0] |= pipelineInterceptUpdate(nceLocal,
+									anUpdateSynchronization, refreshable);
+					}
+
+					public void handleException(Throwable e) {
+						NavigatorPlugin.logError(0, NLS.bind(
+								CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+										nceLocal.getDescriptor().getId(), refreshable }), e);
+					}
+				});
+
 			}
 		}
 
-		return intercepted;
+		return intercepted[0];
 	}
 
 }
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPlugin.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPlugin.java
index 7e2579a..e02c14a 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPlugin.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorPlugin.java
@@ -44,6 +44,18 @@ public class NavigatorPlugin extends AbstractUIPlugin {
 	
 	private static final int LOG_DELAY = 100;
 	
+	/**
+	 * The delay before updating the action bars. Must be shorter than the
+	 * LINK_HELPER_DELAY to make sure the linking works after the boot.
+	 */
+	public static final int ACTION_BAR_DELAY = 100;
+
+	/**
+	 * The delay before responding to a selection/activation event in processing
+	 * for linking with the editor.
+	 */
+	public static final int LINK_HELPER_DELAY = ACTION_BAR_DELAY + 20;
+
 	private static class LogJob extends Job { 		
 		
 		
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSafeRunnable.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSafeRunnable.java
new file mode 100644
index 0000000..aa8bf08
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSafeRunnable.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.ui.internal.navigator;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.util.SafeRunnable;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @since 3.5
+ * 
+ */
+public abstract class NavigatorSafeRunnable extends SafeRunnable {
+
+	protected String _message;
+	protected IConfigurationElement _element;
+	protected Object _object;
+
+	/**
+	 * 
+	 */
+	public NavigatorSafeRunnable() {
+		super();
+	}
+
+	/**
+	 * @param message
+	 */
+	public NavigatorSafeRunnable(String message) {
+		_message = message;
+	}
+
+	/**
+	 * @param element
+	 */
+	public NavigatorSafeRunnable(IConfigurationElement element) {
+		_element = element;
+	}
+
+	/**
+	 * @param element
+	 * @param object
+	 *            an object to provide additional context
+	 */
+	public NavigatorSafeRunnable(IConfigurationElement element, Object object) {
+		_element = element;
+		_object = object;
+	}
+
+	public abstract void run() throws Exception;
+
+	public void handleException(Throwable e) {
+		String msg = _message;
+		if (msg == null)
+			msg = e.getMessage() != null ? e.getMessage() : e.toString();
+		if (_element != null) {
+			msg += ": " + //$NON-NLS-1$
+					NLS.bind(CommonNavigatorMessages.Exception_Invoking_Extension, new Object[] {
+							_element.getAttribute("id") + ": " + _element.getName(), _object }); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+		NavigatorPlugin.log(IStatus.ERROR, 0, msg, e);
+	}
+
+}
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
index f6f8d7e..7744986 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
@@ -26,10 +26,11 @@ 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.Status;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.internal.navigator.CustomAndExpression;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.extensions.INavigatorContentExtPtConstants;
 import org.eclipse.ui.internal.navigator.extensions.SkeletonActionProvider;
 import org.eclipse.ui.navigator.CommonActionProvider;
@@ -189,22 +190,18 @@ public class CommonActionProviderDescriptor implements
 		if (hasLoadingFailed) {
 			return SkeletonActionProvider.INSTANCE;
 		}
-		CommonActionProvider provider = null;
-		try {
-			provider = (CommonActionProvider) configurationElement
-					.createExecutableExtension(ATT_CLASS);
-		} catch (CoreException exception) {
-			NavigatorPlugin.log(exception.getStatus());
-			hasLoadingFailed = true;
-			provider = SkeletonActionProvider.INSTANCE;
-		} catch (Exception e) {
-			NavigatorPlugin.log(new Status(IStatus.ERROR,
-					NavigatorPlugin.PLUGIN_ID, 0, e.getMessage(), e));
-			hasLoadingFailed = true;
-			provider = SkeletonActionProvider.INSTANCE;
-		}
+		final CommonActionProvider[] provider = new CommonActionProvider[1];
+		SafeRunner.run(new NavigatorSafeRunnable(configurationElement) {
+			public void run() throws Exception {
+				provider[0] = (CommonActionProvider) configurationElement
+						.createExecutableExtension(ATT_CLASS);
+			}
+		});
 
-		return provider;
+		if (provider[0] != null)
+			return provider[0];
+		hasLoadingFailed = true;
+		return SkeletonActionProvider.INSTANCE;
 	}
 
 	/**
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/LinkEditorAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/LinkEditorAction.java
index 99ddbd2..eba451d 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/LinkEditorAction.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/LinkEditorAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,7 +11,6 @@
 package org.eclipse.ui.internal.navigator.actions;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.Status;
@@ -31,6 +30,7 @@ import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.internal.navigator.CommonNavigatorMessages;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.navigator.CommonNavigator;
 import org.eclipse.ui.navigator.CommonViewer;
 import org.eclipse.ui.navigator.ILinkHelper;
@@ -47,8 +47,6 @@ import org.eclipse.ui.progress.UIJob;
 public class LinkEditorAction extends Action implements
 		ISelectionChangedListener, IPropertyListener {
 
-	private static final long BRIEF_DELAY = 100;
-
 	private IPartListener partListener;
 
 	private final CommonNavigator commonNavigator;
@@ -57,6 +55,9 @@ public class LinkEditorAction extends Action implements
 
 	private final LinkHelperService linkService;
 
+	private boolean ignoreSelectionChanged;
+	private boolean ignoreEditorActivation;
+	
 	private UIJob activateEditorJob = new UIJob(
 			CommonNavigatorMessages.Link_With_Editor_Job_) {
 		public IStatus runInUIThread(IProgressMonitor monitor) {
@@ -66,13 +67,19 @@ public class LinkEditorAction extends Action implements
 				if (selection != null && !selection.isEmpty()
 						&& selection instanceof IStructuredSelection) {
 
-					IStructuredSelection sSelection = (IStructuredSelection) selection;
+					final IStructuredSelection sSelection = (IStructuredSelection) selection;
 					if (sSelection.size() == 1) {
-						ILinkHelper[] helpers = linkService
+						final ILinkHelper[] helpers = linkService
 								.getLinkHelpersFor(sSelection.getFirstElement());
 						if (helpers.length > 0) {
-							helpers[0].activateEditor(commonNavigator.getSite()
-									.getPage(), sSelection);
+							ignoreEditorActivation = true;
+							SafeRunner.run(new NavigatorSafeRunnable() {
+								public void run() throws Exception {
+									helpers[0].activateEditor(commonNavigator.getSite()
+											.getPage(), sSelection);
+								}
+							});
+							ignoreEditorActivation = false;
 						}
 					}
 				}
@@ -86,8 +93,7 @@ public class LinkEditorAction extends Action implements
 		public IStatus runInUIThread(IProgressMonitor monitor) {
 
 			if (!commonNavigator.getCommonViewer().getControl().isDisposed()) {
-				SafeRunner.run(new ISafeRunnable() {
-
+				SafeRunner.run(new NavigatorSafeRunnable() {
 					public void run() throws Exception {
 						IWorkbenchPage page = commonNavigator.getSite()
 								.getPage();
@@ -98,19 +104,14 @@ public class LinkEditorAction extends Action implements
 								IStructuredSelection newSelection = linkService
 										.getSelectionFor(input);
 								if (!newSelection.isEmpty()) {
+									ignoreSelectionChanged = true;
 									commonNavigator.selectReveal(newSelection);
+									ignoreSelectionChanged = false;
 								}
 							}
 						}
 					}
-
-					public void handleException(Throwable e) {
-						String msg = e.getMessage() != null ? e.getMessage()
-								: e.toString();
-						NavigatorPlugin.logError(0, msg, e);
-					}
 				});
-
 			}
 
 			return Status.OK_STATUS;
@@ -146,14 +147,14 @@ public class LinkEditorAction extends Action implements
 		partListener = new IPartListener() {
 
 			public void partActivated(IWorkbenchPart part) {
-				if (part instanceof IEditorPart) {
-					updateSelectionJob.schedule(BRIEF_DELAY);
+				if (part instanceof IEditorPart && !ignoreEditorActivation) {
+					updateSelectionJob.schedule(NavigatorPlugin.LINK_HELPER_DELAY);
 				}
 			}
 
 			public void partBroughtToTop(IWorkbenchPart part) {
-				if (part instanceof IEditorPart) {
-					updateSelectionJob.schedule(BRIEF_DELAY);
+				if (part instanceof IEditorPart && !ignoreEditorActivation) {
+					updateSelectionJob.schedule(NavigatorPlugin.LINK_HELPER_DELAY);
 				}
 			}
 
@@ -202,7 +203,7 @@ public class LinkEditorAction extends Action implements
 	 * @see org.eclipse.jface.viewers.ISelectionChangedList
 	 */
 	public void selectionChanged(SelectionChangedEvent event) {
-		if (commonNavigator.isLinkingEnabled() && commonNavigator == commonNavigator.getSite().getPage().getActivePart()) {
+		if (commonNavigator.isLinkingEnabled() && !ignoreSelectionChanged) {
 			activateEditor();
 		}
 	}
@@ -218,7 +219,7 @@ public class LinkEditorAction extends Action implements
 			 * Create and schedule a UI Job to activate the editor in a valid
 			 * Display thread
 			 */
-			activateEditorJob.schedule(BRIEF_DELAY);
+			activateEditorJob.schedule(NavigatorPlugin.LINK_HELPER_DELAY);
 		}
 	}
 
@@ -243,7 +244,7 @@ public class LinkEditorAction extends Action implements
 
 		if (toEnableLinking) {
 
-			updateSelectionJob.schedule(BRIEF_DELAY);
+			updateSelectionJob.schedule(NavigatorPlugin.LINK_HELPER_DELAY);
 
 			commonViewer.addPostSelectionChangedListener(this);
 			commonNavigator.getSite().getPage().addPartListener(partListener);
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropAdapterDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropAdapterDescriptor.java
index 679b05f..98d8a58 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropAdapterDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropAdapterDescriptor.java
@@ -14,11 +14,12 @@ package org.eclipse.ui.internal.navigator.dnd;
 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.SafeRunner;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.internal.navigator.CustomAndExpression;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.extensions.INavigatorContentExtPtConstants;
 import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
 import org.eclipse.ui.navigator.INavigatorContentDescriptor;
@@ -97,15 +98,15 @@ public final class CommonDropAdapterDescriptor implements
 	 *         descriptor or {@link SkeletonCommonDropAssistant}.
 	 */
 	public CommonDropAdapterAssistant createDropAssistant() {
-
-		try {
-			return (CommonDropAdapterAssistant) element
-					.createExecutableExtension(ATT_CLASS);
-		} catch (CoreException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		} catch (RuntimeException re) {
-			NavigatorPlugin.logError(0, re.getMessage(), re);
-		}
+		final CommonDropAdapterAssistant[] retValue = new CommonDropAdapterAssistant[1];
+		SafeRunner.run(new NavigatorSafeRunnable(element) {
+			public void run() throws Exception {
+				retValue[0] = (CommonDropAdapterAssistant) element
+						.createExecutableExtension(ATT_CLASS);
+			}
+		});
+		if (retValue[0] != null)
+			return retValue[0];
 		return SkeletonCommonDropAssistant.INSTANCE;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropDescriptorManager.java
index 307270d..157f564 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/dnd/CommonDropDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/Binding.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/Binding.java
index 3025054..ec34b6f 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/Binding.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/Binding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/CommonDragAssistantDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/CommonDragAssistantDescriptor.java
index c13d51c..e660022 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/CommonDragAssistantDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/CommonDragAssistantDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,9 +11,9 @@
 
 package org.eclipse.ui.internal.navigator.extensions;
 
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
 
 /**
@@ -43,14 +43,15 @@ public final class CommonDragAssistantDescriptor implements IViewerExtPtConstant
 	 */
 	public CommonDragAdapterAssistant createDragAssistant() {
 
-		try {
-			return (CommonDragAdapterAssistant) element
-					.createExecutableExtension(ATT_CLASS);
-		} catch (CoreException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		} catch (RuntimeException re) {
-			NavigatorPlugin.logError(0, re.getMessage(), re);
-		}
+		final CommonDragAdapterAssistant[] da = new CommonDragAdapterAssistant[1];
+
+		SafeRunner.run(new NavigatorSafeRunnable(element) {
+			public void run() throws Exception {
+				da[0] = (CommonDragAdapterAssistant) element.createExecutableExtension(ATT_CLASS);
+			}
+		});
+		if (da[0] != null)
+			return da[0];
 		return SkeletonCommonDragAssistant.INSTANCE;
 
 	}
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/INavigatorContentExtPtConstants.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/INavigatorContentExtPtConstants.java
index b2f01d3..1b6b818 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/INavigatorContentExtPtConstants.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/INavigatorContentExtPtConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -92,6 +92,9 @@ public interface INavigatorContentExtPtConstants {
 	String ATT_ACTIVE_BY_DEFAULT = "activeByDefault"; //$NON-NLS-1$
 
 	/** */
+	String ATT_VISIBLE_IN_UI = "visibleInUI"; //$NON-NLS-1$
+
+	/** */
 	String ATT_SORT_ONLY = "sortOnly"; //$NON-NLS-1$
 
 	/** */
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperDescriptor.java
index 2886317..94c84d0 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperDescriptor.java
@@ -16,9 +16,11 @@ import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.IEvaluationContext;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.internal.navigator.CustomAndExpression;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.navigator.ILinkHelper;
 
 /**
@@ -92,13 +94,15 @@ public class LinkHelperDescriptor implements ILinkHelperExtPtConstants {
 	public ILinkHelper createLinkHelper() {
 		if (hasLinkHelperFailedCreation)
 			return SkeletonLinkHelper.INSTANCE;
-		try {
-			return (ILinkHelper) configElement
-					.createExecutableExtension(ATT_CLASS);
-		} catch (Throwable t) {
-			hasLinkHelperFailedCreation = true;
-			NavigatorPlugin.logError(0, t.getMessage(), t);
-		}
+		final ILinkHelper[] helper = new ILinkHelper[1];
+		SafeRunner.run(new NavigatorSafeRunnable(configElement) {
+			public void run() throws Exception {
+				helper[0] = (ILinkHelper) configElement.createExecutableExtension(ATT_CLASS);
+			}
+		});
+		if (helper[0] != null)
+			return helper[0];
+		hasLinkHelperFailedCreation = true;
 		return SkeletonLinkHelper.INSTANCE;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperManager.java
index e27b838..d503f8d 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/LinkHelperManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,18 +16,13 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.navigator.INavigatorContentService;
 
 /**
- * <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
  * 
  */
@@ -131,15 +126,16 @@ public class LinkHelperManager {
 			super(NavigatorPlugin.PLUGIN_ID, LINK_HELPER);
 		}
 
-		public boolean readElement(IConfigurationElement element) {
+		public boolean readElement(final IConfigurationElement element) {
 			if (LINK_HELPER.equals(element.getName())) {
-				try {
-					getDescriptors().add(new LinkHelperDescriptor(element));
-				} catch (Throwable e) {
-					String msg = e.getMessage() != null ? e.getMessage() : e.toString();
-					NavigatorPlugin.logError(0, msg, e);
-				}
-				return true;
+				final boolean retValue[] = new boolean[1];
+				SafeRunner.run(new NavigatorSafeRunnable(element) {
+					public void run() throws Exception {
+						getDescriptors().add(new LinkHelperDescriptor(element));
+						retValue[0] = true;
+					}
+				});
+				return retValue[0];
 			}
 			return false;
 		}
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
index 11c7aca..ec112f3 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
@@ -352,6 +352,13 @@ public final class NavigatorContentDescriptor implements
 	}
 
 	/**
+	 * @return the configuration element
+	 */
+	public IConfigurationElement getConfigElement() {
+		return configElement;
+	}
+	
+	/**
 	 * The content provider could be an instance of
 	 * {@link ICommonContentProvider}, but only {@link ITreeContentProvider} is
 	 * required.
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptorManager.java
index 78e6022..c226021 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,11 +23,12 @@ import java.util.TreeSet;
 import java.util.WeakHashMap;
 
 import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.WorkbenchException;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.Policy;
 import org.eclipse.ui.internal.navigator.VisibilityAssistant;
 import org.eclipse.ui.internal.navigator.VisibilityAssistant.VisibilityListener;
@@ -512,16 +513,13 @@ public class NavigatorContentDescriptorManager {
 			computeOverrides();
 		}
 
-		protected boolean readElement(IConfigurationElement anElement) {
+		protected boolean readElement(final IConfigurationElement anElement) {
 			if (TAG_NAVIGATOR_CONTENT.equals(anElement.getName())) {
-				try {
-					addNavigatorContentDescriptor(new NavigatorContentDescriptor(
-							anElement));
-
-				} catch (WorkbenchException e) {
-					// log an error since its not safe to open a dialog here
-					NavigatorPlugin.log(e.getStatus());
-				}
+				SafeRunner.run(new NavigatorSafeRunnable(anElement) {
+					public void run() throws Exception {
+						addNavigatorContentDescriptor(new NavigatorContentDescriptor(anElement));
+					}
+				});
 			}
 			return super.readElement(anElement);
 		}
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentExtension.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentExtension.java
index 1537528..71efdea 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentExtension.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentExtension.java
@@ -15,8 +15,6 @@ import java.util.LinkedHashSet;
 import java.util.Set;
 
 import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.SafeRunner;
 
 import org.eclipse.jface.viewers.ILabelProvider;
@@ -25,7 +23,7 @@ import org.eclipse.jface.viewers.ITreeContentProvider;
 
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.internal.navigator.NavigatorContentService;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.Policy;
 import org.eclipse.ui.navigator.ICommonLabelProvider;
 import org.eclipse.ui.navigator.IExtensionStateModel;
@@ -124,29 +122,33 @@ public class NavigatorContentExtension implements IMementoAware,
 			return contentProvider;
 		}
 		synchronized (this) {
-			try {
-				if (contentProvider == null) {
-					ITreeContentProvider treeContentProvider = descriptor
-							.createContentProvider();
-					if (treeContentProvider != null) {
-						contentProvider = new SafeDelegateTreeContentProvider(
-								treeContentProvider);
-						contentProvider.init(new CommonContentExtensionSite(
-								getId(), contentService, appliedMemento));
-						viewerManager.initialize(contentProvider);
-					} else {
-						contentProvider = new SafeDelegateTreeContentProvider(SkeletonTreeContentProvider.INSTANCE);
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				public void run() throws Exception {
+					if (contentProvider == null) {
+						ITreeContentProvider treeContentProvider = descriptor
+								.createContentProvider();
+						if (treeContentProvider != null) {
+							contentProvider = new SafeDelegateTreeContentProvider(
+									treeContentProvider);
+							contentProvider.init(new CommonContentExtensionSite(getId(),
+									contentService, appliedMemento));
+							viewerManager.initialize(contentProvider);
+						} else {
+							contentProvider = new SafeDelegateTreeContentProvider(
+									SkeletonTreeContentProvider.INSTANCE);
+						}
 					}
 				}
-			} catch (CoreException e) {
-				contentProviderInitializationFailed = true;
-				e.printStackTrace();
-			} catch (RuntimeException e) {
-				contentProviderInitializationFailed = true;
-				e.printStackTrace();
-			}
+
+				public void handleException(Throwable e) {
+					super.handleException(e);
+					contentProviderInitializationFailed = true;
+				}
+			});
+
 			if (contentProviderInitializationFailed) {
-				contentProvider = new SafeDelegateTreeContentProvider(SkeletonTreeContentProvider.INSTANCE);
+				contentProvider = new SafeDelegateTreeContentProvider(
+						SkeletonTreeContentProvider.INSTANCE);
 			}
 		}
 		return contentProvider;
@@ -164,33 +166,29 @@ public class NavigatorContentExtension implements IMementoAware,
 			return labelProvider;
 		}
 		synchronized (this) {
-			try {
-
-				if (labelProvider == null) {
-					ILabelProvider tempLabelProvider = descriptor
-							.createLabelProvider();
-
-					if (tempLabelProvider instanceof ICommonLabelProvider) {
-						labelProvider = (ICommonLabelProvider) tempLabelProvider;
-						labelProvider.init(new CommonContentExtensionSite(
-								getId(), contentService, appliedMemento));
-					} else {
-						labelProvider = new SafeDelegateCommonLabelProvider(
-								tempLabelProvider);
-					}
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				public void run() throws Exception {
+					if (labelProvider == null) {
+						ILabelProvider tempLabelProvider = descriptor.createLabelProvider();
+
+						if (tempLabelProvider instanceof ICommonLabelProvider) {
+							labelProvider = (ICommonLabelProvider) tempLabelProvider;
+							labelProvider.init(new CommonContentExtensionSite(getId(),
+									contentService, appliedMemento));
+						} else {
+							labelProvider = new SafeDelegateCommonLabelProvider(tempLabelProvider);
+						}
 
-					labelProvider
-							.addListener((ILabelProviderListener) contentService
-									.createCommonLabelProvider());
+						labelProvider.addListener((ILabelProviderListener) contentService
+								.createCommonLabelProvider());
+					}
 				}
-			} catch (CoreException e) {
-				labelProviderInitializationFailed = true;
-				e.printStackTrace();
-			} catch (RuntimeException e) {
-				labelProviderInitializationFailed = true;
-				e.printStackTrace();
-			}
 
+				public void handleException(Throwable e) {
+					super.handleException(e);
+					labelProviderInitializationFailed = true;
+				}
+			});
 			if (labelProviderInitializationFailed) {
 				labelProvider = SkeletonLabelProvider.INSTANCE;
 			}
@@ -206,33 +204,16 @@ public class NavigatorContentExtension implements IMementoAware,
 		try {
 			synchronized (this) {
 
-				SafeRunner.run(new ISafeRunnable() {
-
-					public void handleException(Throwable exception) {
-						String msg = exception.getMessage() != null ? exception
-								.getMessage() : exception.toString();
-						NavigatorPlugin.logError(0, msg, exception);
-
-					}
-
+				SafeRunner.run(new NavigatorSafeRunnable() {
 					public void run() throws Exception {
 						if (contentProvider != null) {
 							contentProvider.dispose();
 						}
 
 					}
-
 				});
 
-				SafeRunner.run(new ISafeRunnable() {
-
-					public void handleException(Throwable exception) {
-						String msg = exception.getMessage() != null ? exception
-								.getMessage() : exception.toString();
-						NavigatorPlugin.logError(0, msg, exception);
-
-					}
-
+				SafeRunner.run(new NavigatorSafeRunnable() {
 					public void run() throws Exception {
 						if (labelProvider != null) {
 							labelProvider
@@ -240,9 +221,7 @@ public class NavigatorContentExtension implements IMementoAware,
 											.createCommonLabelProvider());
 							labelProvider.dispose();
 						}
-
 					}
-
 				});
 
 			}
@@ -353,35 +332,7 @@ public class NavigatorContentExtension implements IMementoAware,
 	 */
 	public NavigatorContentExtension[] getOverridingExtensionsForTriggerPoint(
 			Object anElement) {
-		if (!descriptor.hasOverridingExtensions()) {
-			return NO_EXTENSIONS;
-		}
-
-		NavigatorContentDescriptor overridingDescriptor;
-		Set overridingExtensions = new LinkedHashSet();
-		for (Iterator contentDescriptorsItr = descriptor
-				.getOverriddingExtensions().iterator(); contentDescriptorsItr
-				.hasNext();) {
-			overridingDescriptor = (NavigatorContentDescriptor) contentDescriptorsItr
-					.next();
-
-			if (contentService.isActive(overridingDescriptor.getId())
-					&& contentService.isVisible(overridingDescriptor.getId())
-					&& overridingDescriptor.isTriggerPoint(anElement)) {
-				overridingExtensions.add(contentService
-						.getExtension(overridingDescriptor));
-			}
-		}
-		if (overridingExtensions.size() == 0) {
-			return NO_EXTENSIONS;
-		}
-		if (Policy.DEBUG_EXTENSION_SETUP) {
-			System.out.println(this +  " overriding: "+//$NON-NLS-1$
-					"(trigger pt: " + anElement + "): " + overridingExtensions); //$NON-NLS-1$//$NON-NLS-2$
-		}
-		return (NavigatorContentExtension[]) overridingExtensions
-				.toArray(new NavigatorContentExtension[overridingExtensions
-						.size()]);
+		return getOverridingExtensions(anElement, TRIGGER_POINT);
 	}
 
 	/**
@@ -392,35 +343,55 @@ public class NavigatorContentExtension implements IMementoAware,
 	 */
 	public NavigatorContentExtension[] getOverridingExtensionsForPossibleChild(
 			Object anElement) {
+		return getOverridingExtensions(anElement, !TRIGGER_POINT);
+	}
+
+	/**
+	 * 
+	 * @return Returns the overridingExtensions.
+	 */
+	public NavigatorContentExtension[] getOverridingExtensions() {
+		return getOverridingExtensions(null, !TRIGGER_POINT);
+	}
+
+	private static final boolean TRIGGER_POINT = true;
+	
+	/**
+	 * @param anElement
+	 *            The element for the query.
+	 * @return Returns the overridingExtensions.
+	 */
+	private NavigatorContentExtension[] getOverridingExtensions(Object anElement,
+			boolean triggerPoint) {
 		if (!descriptor.hasOverridingExtensions()) {
 			return NO_EXTENSIONS;
 		}
 
 		NavigatorContentDescriptor overridingDescriptor;
 		Set overridingExtensions = new LinkedHashSet();
-		for (Iterator contentDescriptorsItr = descriptor
-				.getOverriddingExtensions().iterator(); contentDescriptorsItr
+		for (Iterator contentDescriptorsItr = descriptor.getOverriddingExtensions().iterator(); contentDescriptorsItr
 				.hasNext();) {
-			overridingDescriptor = (NavigatorContentDescriptor) contentDescriptorsItr
-					.next();
+			overridingDescriptor = (NavigatorContentDescriptor) contentDescriptorsItr.next();
 
 			if (contentService.isActive(overridingDescriptor.getId())
 					&& contentService.isVisible(overridingDescriptor.getId())
-					&& overridingDescriptor.isPossibleChild(anElement)) {
-				overridingExtensions.add(contentService
-						.getExtension(overridingDescriptor));
+					&& (anElement == null || (triggerPoint ? overridingDescriptor
+							.isTriggerPoint(anElement) : overridingDescriptor
+							.isPossibleChild(anElement)))) {
+				overridingExtensions.add(contentService.getExtension(overridingDescriptor));
 			}
 		}
 		if (overridingExtensions.size() == 0) {
 			return NO_EXTENSIONS;
 		}
 		if (Policy.DEBUG_EXTENSION_SETUP) {
-			System.out.println(this +  " overriding: "+//$NON-NLS-1$
-					"(poss child: " + anElement + "): " + overridingExtensions); //$NON-NLS-1$//$NON-NLS-2$
+			System.out
+					.println(this
+							+ " overriding: " + //$NON-NLS-1$
+							(triggerPoint ? "(trigger pt: " : "(poss child: ") + anElement + "): " + overridingExtensions); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 		}
 		return (NavigatorContentExtension[]) overridingExtensions
-				.toArray(new NavigatorContentExtension[overridingExtensions
-						.size()]);
+				.toArray(new NavigatorContentExtension[overridingExtensions.size()]);
 	}
 
 	/*
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptor.java
index 663174f..3a833a9 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptorManager.java
index 864522c..722e950 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorViewerDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/SafeDelegateTreeContentProvider.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/SafeDelegateTreeContentProvider.java
index 71418c5..411be95 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/SafeDelegateTreeContentProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/SafeDelegateTreeContentProvider.java
@@ -13,7 +13,6 @@ package org.eclipse.ui.internal.navigator.extensions;
 import java.util.ArrayList;
 import java.util.Set;
 
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.ITreePathContentProvider;
@@ -21,7 +20,7 @@ import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.ui.IMemento;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.navigator.ICommonContentExtensionSite;
 import org.eclipse.ui.navigator.ICommonContentProvider;
 import org.eclipse.ui.navigator.IMementoAware;
@@ -72,18 +71,10 @@ public class SafeDelegateTreeContentProvider implements
 	 * 
 	 */
 	public void dispose() {
-		SafeRunner.run(new ISafeRunnable() {
-
-			public void handleException(Throwable exception) { 
-				String msg = exception.getMessage() != null ? exception.getMessage() : exception.toString() ;
-				NavigatorPlugin.logError(0, msg, exception);
-				
-			}
-
+		SafeRunner.run(new NavigatorSafeRunnable() {
 			public void run() throws Exception {
 				contentProvider.dispose(); 
 			}
-			
 		});
 		
 	}
@@ -131,18 +122,10 @@ public class SafeDelegateTreeContentProvider implements
 	public void inputChanged(final Viewer aViewer, final Object anOldInput, final Object aNewInput) {
 		viewer = (StructuredViewer) aViewer;
 		
-		SafeRunner.run(new ISafeRunnable() {
-
-			public void handleException(Throwable exception) { 
-				String msg = exception.getMessage() != null ? exception.getMessage() : exception.toString() ;
-				NavigatorPlugin.logError(0, msg, exception);
-				
-			}
-
+		SafeRunner.run(new NavigatorSafeRunnable() {
 			public void run() throws Exception {
 				contentProvider.inputChanged(aViewer, anOldInput, aNewInput);
 			}
-			
 		});
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/StructuredViewerManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/StructuredViewerManager.java
index 8bbdd53..a86d323 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/StructuredViewerManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/StructuredViewerManager.java
@@ -13,6 +13,7 @@ package org.eclipse.ui.internal.navigator.extensions;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.StructuredViewerInternals;
 import org.eclipse.jface.viewers.Viewer;
@@ -20,7 +21,7 @@ import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Item;
 import org.eclipse.ui.internal.navigator.NavigatorContentService;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.Policy;
 
 /**
@@ -94,6 +95,15 @@ public class StructuredViewerManager {
 					viewerDataMap.remove(item.getData());
 				}
 			}
+
+			public void filteredOut(Object element) {
+				contentService.forgetContribution(element);
+				synchronized (viewerDataMap) {
+					if (Policy.DEBUG_VIEWER_MAP)
+						System.out.println("filteredOut: object: " + element); //$NON-NLS-1$
+					viewerDataMap.remove(element);
+				}
+			}
 		}
 		protected static void hookAssociateListener(StructuredViewer v, Map viewerDataMap, NavigatorContentService contentService) {
 			StructuredViewerInternals.setAssociateListener(v, new Listener(contentService, viewerDataMap));
@@ -168,18 +178,17 @@ public class StructuredViewerManager {
 	 * @param aContentProvider
 	 * @return True if all is well.
 	 */
-	public boolean initialize(IStructuredContentProvider aContentProvider) {
-		boolean result = true;
-		try {
-			if (aContentProvider != null) {
-				aContentProvider.inputChanged(viewer, cachedOldInput,
-						cachedNewInput);
+	public boolean initialize(final IStructuredContentProvider aContentProvider) {
+		final boolean[] result = new boolean[1];
+		SafeRunner.run(new NavigatorSafeRunnable() {
+			public void run() throws Exception {
+				if (aContentProvider != null) {
+					aContentProvider.inputChanged(viewer, cachedOldInput, cachedNewInput);
+				}
+				result[0] = true;
 			}
-		} catch (RuntimeException e) {
-			NavigatorPlugin.logError(0, e.toString(), e);
-			result = false;
-		}
-		return result;
+		});
+		return result[0];
 	}
 
 	/**
@@ -198,15 +207,13 @@ public class StructuredViewerManager {
 			public void run() {
 				if (localViewer.getControl().isDisposed())
 					return;
-				try {
-					localViewer.getControl().setRedraw(false);
-					localViewer.refresh();
-				} catch (RuntimeException e) {
-					NavigatorPlugin.logError(0, e.toString(), e);
-				} finally {
-					localViewer.getControl().setRedraw(true);
-				}
-
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						localViewer.getControl().setRedraw(false);
+						localViewer.refresh();
+					}
+				});
+				localViewer.getControl().setRedraw(true);
 			}
 		});
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterContentProvider.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterContentProvider.java
index 62469b6..22ee935 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterContentProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,8 +13,8 @@ package org.eclipse.ui.internal.navigator.filters;
 
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.internal.navigator.NavigatorFilterService;
 import org.eclipse.ui.navigator.INavigatorContentService;
-import org.eclipse.ui.navigator.INavigatorFilterService;
 
 /**
  * 
@@ -46,8 +46,8 @@ public class CommonFilterContentProvider implements IStructuredContentProvider {
 	 */
 	public Object[] getElements(Object inputElement) {
 		if(contentService != null) {
-			INavigatorFilterService filterService = contentService.getFilterService();
-			return filterService.getVisibleFilterDescriptors();
+			NavigatorFilterService filterService = (NavigatorFilterService) contentService.getFilterService();
+			return filterService.getVisibleFilterDescriptorsForUI();
 		}
 		return NO_ELEMENTS ;
 		
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptor.java
index 661262c..89e6ec9 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,12 +12,13 @@
 package org.eclipse.ui.internal.navigator.filters;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.ui.internal.navigator.CustomAndExpression;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.extensions.INavigatorContentExtPtConstants;
 import org.eclipse.ui.navigator.ICommonFilterDescriptor;
 
@@ -37,7 +38,7 @@ public class CommonFilterDescriptor implements ICommonFilterDescriptor,
 	private Expression filterExpression;
 
 	private String id;
-
+	
 	protected CommonFilterDescriptor(IConfigurationElement anElement) {
 
 		element = anElement;
@@ -93,37 +94,49 @@ public class CommonFilterDescriptor implements ICommonFilterDescriptor,
 
 	/**
 	 * 
+	 * @return Indicates the filter should be shown in the UI.
+	 */
+	public boolean isVisibleInUi() {
+		String attr = element.getAttribute(ATT_VISIBLE_IN_UI);
+		if (attr == null)
+			return true;
+		return Boolean.valueOf(attr).booleanValue();
+	}
+
+	/**
+	 * 
 	 * @return An instance of the ViewerFilter defined by the extension. Callers
 	 *         of this method are responsible for managing the instantiated
 	 *         filter.
 	 */
 	public ViewerFilter createFilter() {
-		try {
-
-			if (filterExpression != null) {
-
-				if (element.getAttribute(ATT_CLASS) != null) {
-					NavigatorPlugin
-							.log(
-									IStatus.WARNING,
-									0,
-									"A \"commonFilter\" was specified in " + //$NON-NLS-1$
-											element.getDeclaringExtension().getNamespaceIdentifier()
-											+ " which specifies a \"class\" attribute and an Core Expression.\n" + //$NON-NLS-1$
-											"Only the Core Expression will be respected.", //$NON-NLS-1$
-									null);
-				} 
-
-				return new CoreExpressionFilter(filterExpression);
+		final ViewerFilter[] filter = new ViewerFilter[1];
+
+		SafeRunner.run(new NavigatorSafeRunnable() {
+			public void run() throws Exception {
+				if (filterExpression != null) {
+					if (element.getAttribute(ATT_CLASS) != null) {
+						NavigatorPlugin
+								.log(
+										IStatus.WARNING,
+										0,
+										"A \"commonFilter\" was specified in " + //$NON-NLS-1$
+												element.getDeclaringExtension()
+														.getNamespaceIdentifier()
+												+ " which specifies a \"class\" attribute and an Core Expression.\n" + //$NON-NLS-1$
+												"Only the Core Expression will be respected.", //$NON-NLS-1$
+										null);
+					}
+
+					filter[0] = new CoreExpressionFilter(filterExpression);
+					return;
+				}
+				filter[0] = (ViewerFilter) element.createExecutableExtension(ATT_CLASS);
 			}
+		});
 
-			return (ViewerFilter) element.createExecutableExtension(ATT_CLASS);
-		} catch (RuntimeException re) {
-			NavigatorPlugin.logError(0, re.getMessage(), re);
-		} catch (CoreException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		}
-
+		if (filter[0] != null)
+			return filter[0];
 		return SkeletonViewerFilter.INSTANCE;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptorManager.java
index c0478d5..5352c90 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,10 +12,10 @@
 package org.eclipse.ui.internal.navigator.filters;
 
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.ui.internal.navigator.extensions.NavigatorContentRegistryReader;
@@ -31,7 +31,8 @@ public class CommonFilterDescriptorManager {
 
 	private static final CommonFilterDescriptor[] NO_FILTER_DESCRIPTORS = new CommonFilterDescriptor[0];
 
-	private final Set filters = new HashSet();
+	// K(ID) V(CommonFilterDescriptor)
+	private final Map filters = new HashMap();
 
 	/**
 	 * 
@@ -48,17 +49,36 @@ public class CommonFilterDescriptorManager {
 
 	/**
 	 * 
+	 */
+	public static final boolean FOR_UI = true;
+	
+	/**
+	 * 
 	 * @param contentService
 	 *            A content service to filter the visible filters.
 	 * @return The set of filters that are 'visible' to the given viewer
 	 *         descriptor.
 	 */
 	public CommonFilterDescriptor[] findVisibleFilters(INavigatorContentService contentService) {
+		return findVisibleFilters(contentService, !FOR_UI);
+	}
+
+	/**
+	 * 
+	 * @param contentService
+	 *            A content service to filter the visible filters.
+	 * @param forUI true if only filters visible to the UI are desired
+	 * @return The set of filters that are 'visible' to the given viewer
+	 *         descriptor.
+	 */
+	public CommonFilterDescriptor[] findVisibleFilters(INavigatorContentService contentService, boolean forUI) {
 
 		List visibleFilters = new ArrayList();
 		CommonFilterDescriptor descriptor;
-		for (Iterator filtersItr = filters.iterator(); filtersItr.hasNext();) {
-			descriptor = (CommonFilterDescriptor) filtersItr.next();
+		for (Iterator filtersItr = filters.entrySet().iterator(); filtersItr.hasNext();) {
+			descriptor = (CommonFilterDescriptor) ((Map.Entry)filtersItr.next()).getValue();
+			if (forUI && !descriptor.isVisibleInUi())
+				continue;
 			if (contentService.isVisible(descriptor.getId())) {
 				visibleFilters.add(descriptor);
 			}
@@ -71,11 +91,19 @@ public class CommonFilterDescriptorManager {
 	}
 
 	/**
+	 * @param id
+	 * @return the CommonFilterDescriptor, if found
+	 */
+	public CommonFilterDescriptor getFilterById(String id) {
+		return (CommonFilterDescriptor) filters.get(id);
+	}
+	
+	/**
 	 * @param aDescriptor
 	 *            A non-null descriptor
 	 */
 	private void addCommonFilter(CommonFilterDescriptor aDescriptor) {
-		filters.add(aDescriptor);
+		filters.put(aDescriptor.getId(), aDescriptor);
 	}
 
 	private class CommonFilterDescriptorRegistry extends
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterSelectionDialog.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterSelectionDialog.java
index cc90436..0417ce6 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterSelectionDialog.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/filters/CommonFilterSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/messages.properties b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/messages.properties
index 1b97791..fcf5eed 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/messages.properties
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2005, 2009 IBM Corporation and others.
+# Copyright (c) 2005, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptor.java
index 406be91..29e02f2 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptor.java
@@ -14,11 +14,12 @@ package org.eclipse.ui.internal.navigator.sorters;
 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.SafeRunner;
 import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.ui.internal.navigator.CustomAndExpression;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.extensions.INavigatorContentExtPtConstants;
 
 /**
@@ -88,13 +89,15 @@ public class CommonSorterDescriptor implements INavigatorContentExtPtConstants {
 	 *         filter.
 	 */
 	public ViewerSorter createSorter() {
-		try {
-			return (ViewerSorter) element.createExecutableExtension(ATT_CLASS);
-		} catch (RuntimeException re) {
-			NavigatorPlugin.logError(0, re.getMessage(), re);
-		} catch (CoreException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		}
+		final ViewerSorter[] sorter = new ViewerSorter[1];
+
+		SafeRunner.run(new NavigatorSafeRunnable(element) {
+			public void run() throws Exception {
+				sorter[0] = (ViewerSorter) element.createExecutableExtension(ATT_CLASS);
+			}
+		});
+		if (sorter[0] != null)
+			return sorter[0];
 		return SkeletonViewerSorter.INSTANCE;
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptorManager.java
index 339292e..ab6d13a 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/CommonSorterDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/NavigatorSorterService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/NavigatorSorterService.java
index b452ff9..ef00ed3 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/NavigatorSorterService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/sorters/NavigatorSorterService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptorManager.java
index 8882fcd..def27cc 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,20 +19,14 @@ import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.WorkbenchException;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.ui.activities.WorkbenchActivityHelper;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.extensions.NavigatorContentRegistryReader;
 import org.eclipse.ui.navigator.INavigatorContentService;
 
 /**
- * <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 CommonWizardDescriptorManager {
@@ -180,40 +174,42 @@ public class CommonWizardDescriptorManager {
 	}
   
 	private class CommonWizardRegistry extends NavigatorContentRegistryReader {
- 
 
-		protected boolean readElement(IConfigurationElement anElement) {
+		protected boolean readElement(final IConfigurationElement anElement) {
+			final boolean[] retValue = new boolean[1];
+
 			if (TAG_COMMON_WIZARD.equals(anElement.getName())) {
-				try {
-					addCommonWizardDescriptor(new CommonWizardDescriptor(
-							anElement));
-				} catch (WorkbenchException e) {
-					// log an error since its not safe to open a dialog here
-					NavigatorPlugin
-							.logError(0, e.getMessage(), e);
-					return false;
-				}
-				return true;
-			} if(TAG_NAVIGATOR_CONTENT.equals(anElement.getName())) {
-				
+				SafeRunner.run(new NavigatorSafeRunnable(anElement) {
+					public void run() throws Exception {
+						addCommonWizardDescriptor(new CommonWizardDescriptor(anElement));
+						retValue[0] = true;
+					}
+				});
+				return retValue[0];
+			}
+			if (TAG_NAVIGATOR_CONTENT.equals(anElement.getName())) {
 				IConfigurationElement[] commonWizards = anElement.getChildren(TAG_COMMON_WIZARD);
-				
-				String contentExtensionId = anElement.getAttribute(ATT_ID);
+				final String contentExtensionId = anElement.getAttribute(ATT_ID);
+				// In case there are none
+				retValue[0] = true;
 				for (int i = 0; i < commonWizards.length; i++) {
-					try {
-						addCommonWizardDescriptor(new CommonWizardDescriptor(
-									commonWizards[i], contentExtensionId));
-					} catch (WorkbenchException e) {
-						// log an error since its not safe to open a dialog here
-						NavigatorPlugin
-								.logError(0, e.getMessage(), e);
-						return false;
-					}					
+					final IConfigurationElement element = commonWizards[i];
+					// Assume it did not work
+					retValue[0] = false;
+					SafeRunner.run(new NavigatorSafeRunnable(element) {
+						public void run() throws Exception {
+							addCommonWizardDescriptor(new CommonWizardDescriptor(element,
+									contentExtensionId));
+							retValue[0] = true;
+						}
+					});
+					if (!retValue[0])
+						break;
 				}
-				return true;
+				return retValue[0];
 			}
 			return super.readElement(anElement);
 		}
 	}
-	 
+
 }
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDragAdapter.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDragAdapter.java
index 28f2cc7..bcea090 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDragAdapter.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDragAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -24,7 +25,7 @@ import org.eclipse.swt.dnd.DragSourceAdapter;
 import org.eclipse.swt.dnd.DragSourceEvent;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.Policy;
 import org.eclipse.ui.internal.navigator.dnd.NavigatorPluginDropAction;
 import org.eclipse.ui.part.PluginTransfer;
@@ -113,59 +114,60 @@ public final class CommonDragAdapter extends DragSourceAdapter {
 	 * 
 	 * @see org.eclipse.swt.dnd.DragSourceAdapter#dragStart(org.eclipse.swt.dnd.DragSourceEvent)
 	 */
-	public void dragStart(DragSourceEvent event) {
+	public void dragStart(final DragSourceEvent event) {
 		if (Policy.DEBUG_DND) {
 			System.out.println("CommonDragAdapter.dragStart (begin): " + event); //$NON-NLS-1$
 		}
-		try {
-			// Workaround for 1GEUS9V
-			DragSource dragSource = (DragSource) event.widget;
-			if (Policy.DEBUG_DND) {
-				System.out.println("CommonDragAdapter.dragStart source: " + dragSource); //$NON-NLS-1$
-			}
-			Control control = dragSource.getControl();
-			if (control == control.getDisplay().getFocusControl()) {
-				ISelection selection = provider.getSelection();
-				assistantsToUse.clear();
-				
-				if (!selection.isEmpty()) {
-					LocalSelectionTransfer.getTransfer().setSelection(selection);
+		SafeRunner.run(new NavigatorSafeRunnable() {
+			public void run() throws Exception {
+				DragSource dragSource = (DragSource) event.widget;
+				if (Policy.DEBUG_DND) {
+					System.out.println("CommonDragAdapter.dragStart source: " + dragSource); //$NON-NLS-1$
+				}
+				Control control = dragSource.getControl();
+				if (control == control.getDisplay().getFocusControl()) {
+					ISelection selection = provider.getSelection();
+					assistantsToUse.clear();
 
-					boolean doIt = false;
-					INavigatorDnDService dndService = contentService.getDnDService();
-					CommonDragAdapterAssistant[] assistants = dndService.getCommonDragAssistants();
-					if (assistants.length == 0)
-						doIt = true;
-					for (int i = 0; i < assistants.length; i++) {
-						if (Policy.DEBUG_DND) {
-							System.out.println("CommonDragAdapter.dragStart assistant: " + assistants[i]); //$NON-NLS-1$
-						}
-						event.doit = true;
-						assistants[i].dragStart(event, (IStructuredSelection) selection);
-						doIt |= event.doit;
-						if (event.doit) {
+					if (!selection.isEmpty()) {
+						LocalSelectionTransfer.getTransfer().setSelection(selection);
+
+						boolean doIt = false;
+						INavigatorDnDService dndService = contentService.getDnDService();
+						CommonDragAdapterAssistant[] assistants = dndService
+								.getCommonDragAssistants();
+						if (assistants.length == 0)
+							doIt = true;
+						for (int i = 0; i < assistants.length; i++) {
 							if (Policy.DEBUG_DND) {
-								System.out.println("CommonDragAdapter.dragStart assistant - event.doit == true"); //$NON-NLS-1$
+								System.out
+										.println("CommonDragAdapter.dragStart assistant: " + assistants[i]); //$NON-NLS-1$
+							}
+							event.doit = true;
+							assistants[i].dragStart(event, (IStructuredSelection) selection);
+							doIt |= event.doit;
+							if (event.doit) {
+								if (Policy.DEBUG_DND) {
+									System.out
+											.println("CommonDragAdapter.dragStart assistant - event.doit == true"); //$NON-NLS-1$
+								}
+								assistantsToUse.add(assistants[i]);
 							}
-							assistantsToUse.add(assistants[i]);
 						}
+
+						event.doit = doIt;
+					} else {
+						event.doit = false;
 					}
-					
-					event.doit = doIt;
 				} else {
 					event.doit = false;
 				}
-			} else {
-				event.doit = false;
 			}
-		} catch (RuntimeException e) {
-			NavigatorPlugin.logError(0, e.getMessage(), e);
-		}
+		});
 
 		if (Policy.DEBUG_DND) {
-			System.out
-					.println("CommonDragAdapter.dragStart (end): doit=" + event.doit); //$NON-NLS-1$
-	}
+			System.out.println("CommonDragAdapter.dragStart (end): doit=" + event.doit); //$NON-NLS-1$
+		}
 	}
 
 	/*
@@ -173,9 +175,9 @@ public final class CommonDragAdapter extends DragSourceAdapter {
 	 * 
 	 * @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
 	 */
-	public void dragSetData(DragSourceEvent event) {
+	public void dragSetData(final DragSourceEvent event) {
 
-		ISelection selection = LocalSelectionTransfer.getTransfer()
+		final ISelection selection = LocalSelectionTransfer.getTransfer()
 				.getSelection();
 
 		if (Policy.DEBUG_DND) {
@@ -205,7 +207,7 @@ public final class CommonDragAdapter extends DragSourceAdapter {
 			}
 
 			for (int i = 0, len = assistantsToUse.size(); i < len; i++) {
-				CommonDragAdapterAssistant assistant = (CommonDragAdapterAssistant) assistantsToUse.get(i); 
+				final CommonDragAdapterAssistant assistant = (CommonDragAdapterAssistant) assistantsToUse.get(i); 
 				if (Policy.DEBUG_DND) {
 					System.out
 							.println("CommonDragAdapter.dragSetData assistant: " + assistant); //$NON-NLS-1$
@@ -213,28 +215,28 @@ public final class CommonDragAdapter extends DragSourceAdapter {
 
 				Transfer[] supportedTransferTypes = assistant
 						.getSupportedTransferTypes();
+				final boolean[] getOut = new boolean[1];
 				for (int j = 0; j < supportedTransferTypes.length; j++) {
-					if (supportedTransferTypes[j]
-							.isSupportedType(event.dataType)) {
-						try {
-							if (Policy.DEBUG_DND) {
-								System.out
-										.println("CommonDragAdapter.dragSetData supported xfer type"); //$NON-NLS-1$
-							}
-							if(assistant.setDragData(event,
-									(IStructuredSelection) selection)) {
+					if (supportedTransferTypes[j].isSupportedType(event.dataType)) {
+						SafeRunner.run(new NavigatorSafeRunnable() {
+							public void run() throws Exception {
 								if (Policy.DEBUG_DND) {
 									System.out
-											.println("CommonDragAdapter.dragSetData set data " + event.data); //$NON-NLS-1$
+											.println("CommonDragAdapter.dragSetData supported xfer type"); //$NON-NLS-1$
+								}
+								if (assistant.setDragData(event, (IStructuredSelection) selection)) {
+									if (Policy.DEBUG_DND) {
+										System.out
+												.println("CommonDragAdapter.dragSetData set data " + event.data); //$NON-NLS-1$
+									}
+									setDataAssistant = assistant;
+									getOut[0] = true;
 								}
-								setDataAssistant = assistant;
-								return;
 							}
-						} catch (RuntimeException re) {
-							NavigatorPlugin.logError(0, re.getMessage(), re);
-						}
+						});
+						if (getOut[0])
+							return;
 					}
-
 				}
 			}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDropAdapter.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDropAdapter.java
index e5fd723..e9f1d9a 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDropAdapter.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonDropAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
 package org.eclipse.ui.navigator;
 
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.swt.dnd.DND;
@@ -21,7 +22,7 @@ import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.dnd.TransferData;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Item;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.Policy;
 import org.eclipse.ui.internal.navigator.dnd.NavigatorPluginDropAction;
 import org.eclipse.ui.part.PluginDropAdapter;
@@ -154,11 +155,11 @@ public final class CommonDropAdapter extends PluginDropAdapter {
 	}
 
 	public boolean performDrop(Object data) {
-		DropTargetEvent event = getCurrentEvent();
+		final DropTargetEvent event = getCurrentEvent();
 		if (Policy.DEBUG_DND) {
 			System.out.println("CommonDropAdapter.drop (begin): " + event); //$NON-NLS-1$
 		}
-		Object target = getCurrentTarget() != null ? 
+		final Object target = getCurrentTarget() != null ? 
 				getCurrentTarget() : getViewer().getInput();
 
 		// Must validate the drop here because on some platforms (Linux, Mac) the event 
@@ -174,26 +175,29 @@ public final class CommonDropAdapter extends PluginDropAdapter {
 		if (Policy.DEBUG_DND) {
 			System.out.println("CommonDropAdapter.drop target: " + target + " op: " + getCurrentOperation()); //$NON-NLS-1$ //$NON-NLS-2$
 		}
-		CommonDropAdapterAssistant[] assistants = dndService.findCommonDropAdapterAssistants(target,
+		final CommonDropAdapterAssistant[] assistants = dndService.findCommonDropAdapterAssistants(target,
 				getCurrentTransfer());
 
-		IStatus valid = null;
+		final boolean[] retValue = new boolean[1];
 		for (int i = 0; i < assistants.length; i++) {
-			try {
-
-				assistants[i].setCurrentEvent(event);
-				valid = assistants[i].validateDrop(target, getCurrentOperation(), getCurrentTransfer());
-				if (valid != null && valid.isOK()) {
-					if (Policy.DEBUG_DND) {
-						System.out
-								.println("CommonDropAdapter.drop assistant selected: " + assistants[i] + " op: " + event.detail); //$NON-NLS-1$ //$NON-NLS-2$
+			final CommonDropAdapterAssistant localAssistant = assistants[i];
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				public void run() throws Exception {
+					localAssistant.setCurrentEvent(event);
+					IStatus valid = localAssistant.validateDrop(target, getCurrentOperation(),
+							getCurrentTransfer());
+					if (valid != null && valid.isOK()) {
+						if (Policy.DEBUG_DND) {
+							System.out
+									.println("CommonDropAdapter.drop assistant selected: " + localAssistant + " op: " + event.detail); //$NON-NLS-1$ //$NON-NLS-2$
+						}
+						localAssistant.handleDrop(CommonDropAdapter.this, event, target);
+						retValue[0] = true;
 					}
-					assistants[i].handleDrop(this, event, target);
-					return true;
 				}
-			} catch (Throwable t) {
-				NavigatorPlugin.logError(0, t.getMessage(), t);
-			}
+			});
+			if (retValue[0])
+				return true;
 		}
 
 		return false;
@@ -205,67 +209,64 @@ public final class CommonDropAdapter extends PluginDropAdapter {
 	 * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object,
 	 *      int, org.eclipse.swt.dnd.TransferData)
 	 */
-	public boolean validateDrop(Object aDropTarget, int theDropOperation,
-			TransferData theTransferData) {
+	public boolean validateDrop(final Object aDropTarget, final int theDropOperation,
+			final TransferData theTransferData) {
 
 		if (Policy.DEBUG_DND) {
-			System.out.println("CommonDropAdapter.validateDrop (begin) operation: " + theDropOperation + " target: " + aDropTarget + " transferType: " + theTransferData.type); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			System.out.println("CommonDropAdapter.validateDrop (begin) operation: " + theDropOperation + " target: " + aDropTarget /*+ " transferType: " + theTransferData.type*/); //$NON-NLS-1$ //$NON-NLS-2$
 			//new Exception().printStackTrace(System.out);
 		}
 
 		boolean result = false;
-
-		IStatus valid = null;
+		final IStatus[] valid = new IStatus[1];
 
 		if (super.validateDrop(aDropTarget, theDropOperation, theTransferData)) {
-			result = true; 
+			result = true;
 			if (Policy.DEBUG_DND) {
-				System.out
-						.println("CommonDropAdapter.validateDrop valid for plugin transfer"); //$NON-NLS-1$
+				System.out.println("CommonDropAdapter.validateDrop valid for plugin transfer"); //$NON-NLS-1$
 			}
 		} else {
-			Object target = aDropTarget != null ? aDropTarget : getViewer().getInput();
-			if (Policy.DEBUG_DND) { 
+			final Object target = aDropTarget != null ? aDropTarget : getViewer().getInput();
+			if (Policy.DEBUG_DND) {
 				System.out.println("CommonDropAdapter.validateDrop target: " + target); //$NON-NLS-1$
 				System.out.println("CommonDropAdapter.validateDrop local selection: " + //$NON-NLS-1$
 						LocalSelectionTransfer.getTransfer().getSelection());
 			}
-			CommonDropAdapterAssistant[] assistants = dndService
-					.findCommonDropAdapterAssistants(target,
-							theTransferData);
+			CommonDropAdapterAssistant[] assistants = dndService.findCommonDropAdapterAssistants(
+					target, theTransferData);
 			for (int i = 0; i < assistants.length; i++) {
-				if (Policy.DEBUG_DND) { 
+				if (Policy.DEBUG_DND) {
 					System.out
-							.println("CommonDropAdapter.validateDrop checking assistant: \""+assistants[i]); //$NON-NLS-1$
-				}					
-				try { 
-					assistants[i].setCurrentEvent(getCurrentEvent());
-					valid = assistants[i].validateDrop(target,
-							theDropOperation, theTransferData); 
-				} catch (Throwable t) {
-					NavigatorPlugin.logError(0, t.getMessage(), t);
+							.println("CommonDropAdapter.validateDrop checking assistant: \"" + assistants[i]); //$NON-NLS-1$
 				}
-				if (valid != null && valid.isOK()) {
+				final CommonDropAdapterAssistant assistantLocal = assistants[i];
+
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						assistantLocal.setCurrentEvent(getCurrentEvent());
+						valid[0] = assistantLocal.validateDrop(target, theDropOperation,
+								theTransferData);
+					}
+				});
+				if (valid[0] != null && valid[0].isOK()) {
 					result = true;
-					if (Policy.DEBUG_DND) { 
-						System.out
-								.println("CommonDropAdapter.validateDrop VALID"); //$NON-NLS-1$
-					}					
+					if (Policy.DEBUG_DND) {
+						System.out.println("CommonDropAdapter.validateDrop VALID"); //$NON-NLS-1$
+					}
 					break;
 				}
-				if (Policy.DEBUG_DND) { 
+				if (Policy.DEBUG_DND) {
 					System.out
-							.println("CommonDropAdapter.validateDrop NOT valid: " + (valid != null ? (valid.getSeverity() + ": " + valid.getMessage()) : "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
-				}					
+							.println("CommonDropAdapter.validateDrop NOT valid: " + (valid[0] != null ? (valid[0].getSeverity() + ": " + valid[0].getMessage()) : "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
+				}
 			}
 		}
 
 		if (Policy.DEBUG_DND) {
 			System.out
-					.println("CommonDropAdapter.validateDrop (returning " + (valid != null ? valid.getSeverity() + ": " + valid.getMessage() : "" + result) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+					.println("CommonDropAdapter.validateDrop (returning " + (valid[0] != null ? valid[0].getSeverity() + ": " + valid[0].getMessage() : "" + result) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		}
 
-
 		setScrollExpandEnabled(true);
 		return result;
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigator.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigator.java
index 832c18b..dc57c9c 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigator.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,7 @@ package org.eclipse.ui.navigator;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.PerformanceStats;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -41,6 +42,7 @@ import org.eclipse.ui.actions.ActionGroup;
 import org.eclipse.ui.internal.navigator.CommonNavigatorActionGroup;
 import org.eclipse.ui.internal.navigator.NavigatorContentService;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.part.ISetSelectionTarget;
 import org.eclipse.ui.part.IShowInSource;
 import org.eclipse.ui.part.IShowInTarget;
@@ -515,13 +517,12 @@ public class CommonNavigator extends ViewPart implements ISetSelectionTarget, IS
 	protected void initListeners(TreeViewer viewer) {
 
 		viewer.addDoubleClickListener(new IDoubleClickListener() {
-
-			public void doubleClick(DoubleClickEvent event) {
-				try {
-					handleDoubleClick(event);
-				} catch (RuntimeException re) {
-					re.printStackTrace();
-				}
+			public void doubleClick(final DoubleClickEvent event) {
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						handleDoubleClick(event);
+					}
+				});
 			}
 		});
 	}
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigatorManager.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigatorManager.java
index 12f7f69..623e00b 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigatorManager.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonNavigatorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,7 +14,6 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Menu;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.Status;
@@ -40,6 +39,7 @@ import org.eclipse.ui.actions.ActionContext;
 import org.eclipse.ui.actions.RetargetAction;
 import org.eclipse.ui.internal.navigator.CommonNavigatorMessages;
 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.progress.UIJob;
 
 /**
@@ -54,9 +54,6 @@ import org.eclipse.ui.progress.UIJob;
  */
 public final class CommonNavigatorManager implements ISelectionChangedListener {
 
-	// delay for updating the action bars (in ms)
-	private static final long DELAY = 200;
-
 	private final CommonNavigator commonNavigator;
 
 	private final INavigatorContentService contentService;
@@ -87,13 +84,7 @@ public final class CommonNavigatorManager implements ISelectionChangedListener {
 		}
 		  
 		public IStatus runInUIThread(IProgressMonitor monitor) {
-
-			SafeRunner.run(new ISafeRunnable() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.runtime.ISafeRunnable#run()
-				 */
+			SafeRunner.run(new NavigatorSafeRunnable() {
 				public void run() throws Exception {
 					if(commonNavigator.getCommonViewer().getInput() != null) {
 						IStructuredSelection selection = new StructuredSelection(commonNavigator.getCommonViewer().getInput());
@@ -101,14 +92,6 @@ public final class CommonNavigatorManager implements ISelectionChangedListener {
 						actionService.fillActionBars(commonNavigator.getViewSite().getActionBars());
 					}
 				}
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
-				 */
-				public void handleException(Throwable exception) {
-					NavigatorPlugin.logError(0, exception.getMessage(), exception);
-				}
 			});
 			return Status.OK_STATUS;
 		}
@@ -309,7 +292,7 @@ public final class CommonNavigatorManager implements ISelectionChangedListener {
 		viewMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS
 				+ "-end"));//$NON-NLS-1$
 		
-		updateActionBars.schedule(DELAY);
+		updateActionBars.schedule(NavigatorPlugin.ACTION_BAR_DELAY);
 		
 	}
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewer.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewer.java
index d63777e..9ddc7cd 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewer.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewerSorter.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewerSorter.java
index 642fb80..7c7071d 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewerSorter.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/CommonViewerSorter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorContentDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorContentDescriptor.java
index 51d3d1b..5c8191f 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorContentDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorContentDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorFilterService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorFilterService.java
index f4aec0a..cbc4fe5 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorFilterService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorFilterService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorPipelineService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorPipelineService.java
index 123f0f8..5eacdb4 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorPipelineService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorPipelineService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorViewerDescriptor.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorViewerDescriptor.java
index 1c382f4..9c85978 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorViewerDescriptor.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorViewerDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/IPipelinedTreeContentProvider.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/IPipelinedTreeContentProvider.java
index 2c286a7..e03ed74 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/IPipelinedTreeContentProvider.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/IPipelinedTreeContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -66,7 +66,9 @@ public interface IPipelinedTreeContentProvider extends ICommonContentProvider {
 	 *            The object being queried for a parent.
 	 * @param aSuggestedParent
 	 *            The parent already suggested from upstream extensions.
-	 * @return The intended parent from this pipelined content provider.
+	 * @return The intended parent from this pipelined content provider. If you
+	 *         wish to not influence the parent, then return the
+	 *         aSuggestedParent value.
 	 */
 	Object getPipelinedParent(Object anObject, Object aSuggestedParent);
 
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/NavigatorActionService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/NavigatorActionService.java
index fc0c4bd..0839457 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/NavigatorActionService.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/NavigatorActionService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,7 +17,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.IContributionItem;
@@ -34,7 +33,7 @@ import org.eclipse.ui.actions.ActionContext;
 import org.eclipse.ui.actions.ActionGroup;
 import org.eclipse.ui.activities.WorkbenchActivityHelper;
 import org.eclipse.ui.internal.navigator.NavigatorContentService;
-import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.NavigatorSafeRunnable;
 import org.eclipse.ui.internal.navigator.actions.CommonActionDescriptorManager;
 import org.eclipse.ui.internal.navigator.actions.CommonActionProviderDescriptor;
 import org.eclipse.ui.internal.navigator.extensions.CommonActionExtensionSite;
@@ -208,20 +207,21 @@ public final class NavigatorActionService extends ActionGroup implements IMement
 	/**
 	 * @param aMenu
 	 */
-	private void addCommonActionProviderMenu(IMenuManager aMenu) {
-
-		CommonActionProviderDescriptor[] providerDescriptors = CommonActionDescriptorManager.getInstance().findRelevantActionDescriptors(contentService, getContext());
+	private void addCommonActionProviderMenu(final IMenuManager aMenu) {
+		final CommonActionProviderDescriptor[] providerDescriptors = CommonActionDescriptorManager
+				.getInstance().findRelevantActionDescriptors(contentService, getContext());
 		if (providerDescriptors.length > 0) {
 			for (int i = 0; i < providerDescriptors.length; i++) {
-				try {
-					if (!filterActionProvider(providerDescriptors[i])) {
-						CommonActionProvider provider = getActionProviderInstance(providerDescriptors[i]);
-						provider.setContext(getContext());
-						provider.fillContextMenu(aMenu);
+				final CommonActionProviderDescriptor providerDescriptorLocal = providerDescriptors[i];
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						if (!filterActionProvider(providerDescriptorLocal)) {
+							CommonActionProvider provider = getActionProviderInstance(providerDescriptorLocal);
+							provider.setContext(getContext());
+							provider.fillContextMenu(aMenu);
+						}
 					}
-				} catch (Throwable t) {
-					NavigatorPlugin.logError(0, t.getMessage(), t);
-				}
+				});
 			}
 		}
 	}
@@ -235,7 +235,7 @@ public final class NavigatorActionService extends ActionGroup implements IMement
 	 *            The action bars in use by the current view site.
 	 * @see ActionGroup#fillActionBars(IActionBars)
 	 */
-	public void fillActionBars(IActionBars theActionBars) {
+	public void fillActionBars(final IActionBars theActionBars) {
 		Assert.isTrue(!disposed);
 
 		theActionBars.clearGlobalActionHandlers();
@@ -244,21 +244,23 @@ public final class NavigatorActionService extends ActionGroup implements IMement
 			context = new ActionContext(StructuredSelection.EMPTY);
 		}
 
-		CommonActionProviderDescriptor[] providerDescriptors = CommonActionDescriptorManager.getInstance().findRelevantActionDescriptors(contentService, context);
+		final CommonActionProviderDescriptor[] providerDescriptors = CommonActionDescriptorManager
+				.getInstance().findRelevantActionDescriptors(contentService, context);
 		if (providerDescriptors.length > 0) {
-			CommonActionProvider provider = null;
 			for (int i = 0; i < providerDescriptors.length; i++) {
-				try {
-					if (!filterActionProvider(providerDescriptors[i])) {
-						provider = getActionProviderInstance(providerDescriptors[i]);
-						provider.setContext(context);
-						provider.fillActionBars(theActionBars);
-						provider.updateActionBars();
+				final CommonActionProviderDescriptor providerDesciptorLocal = providerDescriptors[i];
+				final ActionContext actionContextLocal = context;
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						if (!filterActionProvider(providerDesciptorLocal)) {
+							CommonActionProvider provider = null;
+							provider = getActionProviderInstance(providerDesciptorLocal);
+							provider.setContext(actionContextLocal);
+							provider.fillActionBars(theActionBars);
+							provider.updateActionBars();
+						}
 					}
-
-				} catch (RuntimeException e) {
-					NavigatorPlugin.logError(0, e.getMessage(), e);
-				}
+				});
 			}
 		}
 		theActionBars.updateActionBars();
@@ -293,20 +295,15 @@ public final class NavigatorActionService extends ActionGroup implements IMement
 		memento = aMemento;
 
 		synchronized (actionProviderInstances) {
-			for (Iterator actionProviderIterator = actionProviderInstances.values().iterator(); actionProviderIterator.hasNext();) {
-				final CommonActionProvider provider = (CommonActionProvider) actionProviderIterator.next();
-				ISafeRunnable runnable = new ISafeRunnable() {
+			for (Iterator actionProviderIterator = actionProviderInstances.values().iterator(); actionProviderIterator
+					.hasNext();) {
+				final CommonActionProvider provider = (CommonActionProvider) actionProviderIterator
+						.next();
+				SafeRunner.run(new NavigatorSafeRunnable() {
 					public void run() throws Exception {
 						provider.restoreState(memento);
 					}
-
-					public void handleException(Throwable exception) {
-						NavigatorPlugin.logError(0, "Could not restore state for action provider " + provider.getClass(), exception); //$NON-NLS-1$
-
-					}
-				};
-				SafeRunner.run(runnable);
-
+				});
 			}
 		}
 	}
@@ -337,40 +334,47 @@ public final class NavigatorActionService extends ActionGroup implements IMement
 	 * @noreference This method is not intended to be referenced by clients.
 	 */
 	public CommonActionProvider getActionProviderInstance(
-			CommonActionProviderDescriptor aProviderDescriptor) {
+			final CommonActionProviderDescriptor aProviderDescriptor) {
 		CommonActionProvider provider = null;
-		try {
-			provider = (CommonActionProvider) actionProviderInstances
-					.get(aProviderDescriptor);
-			if (provider != null) {
-				return provider;
-			}
-			synchronized (actionProviderInstances) {
-				provider = (CommonActionProvider) actionProviderInstances
-						.get(aProviderDescriptor);
-				if (provider == null) {
-					provider = aProviderDescriptor.createActionProvider();
-					if (provider != null) {
-						actionProviderInstances.put(aProviderDescriptor, provider);
-						initialize(aProviderDescriptor.getId(), aProviderDescriptor.getPluginId(), provider);
-					} else {
-						actionProviderInstances.put(aProviderDescriptor,
-								(provider = SkeletonActionProvider.INSTANCE));
+		provider = (CommonActionProvider) actionProviderInstances.get(aProviderDescriptor);
+		if (provider != null) {
+			return provider;
+		}
+		synchronized (actionProviderInstances) {
+			provider = (CommonActionProvider) actionProviderInstances.get(aProviderDescriptor);
+			if (provider == null) {
+				final CommonActionProvider[] retProvider = new CommonActionProvider[1];
+				SafeRunner.run(new NavigatorSafeRunnable() {
+					public void run() throws Exception {
+						retProvider[0] = aProviderDescriptor.createActionProvider();
+						if (retProvider[0] != null) {
+							initialize(aProviderDescriptor.getId(), aProviderDescriptor
+									.getPluginId(), retProvider[0]);
+						}
 					}
-				}
+				});
+				// This could happen in the exception case
+				if (retProvider[0] == null)
+					retProvider[0] = SkeletonActionProvider.INSTANCE;
+				actionProviderInstances.put(aProviderDescriptor, retProvider[0]);
+				provider = retProvider[0];
 			}
-		} catch(Throwable t) {
-			NavigatorPlugin.logError(0, t.getMessage(), t);
 		}
 		return provider;
 	}
 
-	private void initialize(String id, String pluginId, CommonActionProvider anActionProvider) {
+	private void initialize(final String id, final String pluginId,
+			final CommonActionProvider anActionProvider) {
 		if (anActionProvider != null && anActionProvider != SkeletonActionProvider.INSTANCE) {
-			ICommonActionExtensionSite configuration = new CommonActionExtensionSite(id, pluginId, commonViewerSite, contentService, structuredViewer);
-			anActionProvider.init(configuration);
-			anActionProvider.restoreState(memento);
-			anActionProvider.setContext(new ActionContext(StructuredSelection.EMPTY));
+			SafeRunner.run(new NavigatorSafeRunnable() {
+				public void run() throws Exception {
+					ICommonActionExtensionSite configuration = new CommonActionExtensionSite(id,
+							pluginId, commonViewerSite, contentService, structuredViewer);
+					anActionProvider.init(configuration);
+					anActionProvider.restoreState(memento);
+					anActionProvider.setContext(new ActionContext(StructuredSelection.EMPTY));
+				}
+			});
 		}
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/PipelinedShapeModification.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/PipelinedShapeModification.java
index fb2cabd..15559c9 100644
--- a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/PipelinedShapeModification.java
+++ b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/PipelinedShapeModification.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
index d6657a7..9c74b53 100644
--- a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %Plugin.name
 Bundle-SymbolicName: org.eclipse.ui.views.properties.tabbed;singleton:=true
-Bundle-Version: 3.5.0.qualifier
+Bundle-Version: 3.5.100.qualifier
 Bundle-Activator: org.eclipse.ui.internal.views.properties.tabbed.TabbedPropertyViewPlugin
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PinPropertySheetAction.java b/eclipse/plugins/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PinPropertySheetAction.java
index 4d2d8df..9ad53d0 100644
--- a/eclipse/plugins/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PinPropertySheetAction.java
+++ b/eclipse/plugins/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PinPropertySheetAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 Versant Corp. and others.
+ * Copyright (c) 2008, 2010 Versant Corp. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@ package org.eclipse.ui.views.properties;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
 import org.eclipse.ui.internal.WorkbenchImages;
@@ -25,6 +26,9 @@ import org.eclipse.ui.internal.views.properties.PropertiesMessages;
  */
 public class PinPropertySheetAction extends Action {
 
+	/**
+	 * Creates a new <code>PinPropertySheetAction</code>.
+	 */
 	public PinPropertySheetAction() {
 		super(PropertiesMessages.Pin_text, IAction.AS_CHECK_BOX);
 
diff --git a/eclipse/plugins/org.eclipse.ui.win32/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.win32/META-INF/MANIFEST.MF
index fc72144..5466bee 100644
--- a/eclipse/plugins/org.eclipse.ui.win32/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.win32/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.ui.win32
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.compatibility/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.ui.workbench.compatibility/META-INF/MANIFEST.MF
index 539ec02..ee254d5 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench.compatibility/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.ui.workbench.compatibility/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentName
 Bundle-SymbolicName: org.eclipse.ui.workbench.compatibility
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.100.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.ui.workbench;bundle-version="[3.0.0,4.0.0)"
 Bundle-Localization: fragment-compatibility
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
index c38ffb1..d2dfee9 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
+++ b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
@@ -977,11 +977,11 @@ public abstract class AbstractTextEditor extends EditorPart implements ITextEdit
 
 			if (fActivePart == AbstractTextEditor.this) {
 				fIsHandlingActivation= true;
-				fHasBeenActivated= true;
 				try {
 					safelySanityCheckState(getEditorInput());
 				} finally {
 					fIsHandlingActivation= false;
+					fHasBeenActivated= true;
 				}
 			}
 		}
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLineAction.java b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLineAction.java
index bb3943d..a2ed256 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLineAction.java
+++ b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLineAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,21 +8,26 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.ui.texteditor;
 
-
 import java.util.ResourceBundle;
 
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.window.Window;
 
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
 
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.internal.texteditor.NLSUtility;
@@ -30,30 +35,30 @@ import org.eclipse.ui.internal.texteditor.TextEditorPlugin;
 
 
 /**
- * Action for jumping to a particular line in the editor's text viewer.
- * The user is requested to enter the line number into an input dialog.
- * The action is initially associated with a text editor via the constructor,
- * but that can be subsequently changed using <code>setEditor</code>.
+ * Action for jumping to a particular line in the editor's text viewer. The user is requested to
+ * enter the line number into an input dialog. The action is initially associated with a text editor
+ * via the constructor, but that can be subsequently changed using <code>setEditor</code>.
  * <p>
- * The following keys, prepended by the given option prefix,
- * are used for retrieving resources from the given bundle:
+ * The following keys, prepended by the given option prefix, are used for retrieving resources from
+ * the given bundle:
  * <ul>
- *   <li><code>"dialog.invalid_range"</code> - to indicate an invalid line number</li>
- *   <li><code>"dialog.invalid_input"</code> - to indicate an invalid line number format</li>
- *   <li><code>"dialog.title"</code> - the input dialog's title</li>
- *   <li><code>"dialog.message"</code> - the input dialog's message</li>
- * </ul></p>
+ * <li><code>"dialog.invalid_range"</code> - to indicate an invalid line number</li>
+ * <li><code>"dialog.invalid_input"</code> - to indicate an invalid line number format</li>
+ * <li><code>"dialog.title"</code> - the input dialog's title</li>
+ * <li><code>"dialog.message"</code> - the input dialog's message</li>
+ * </ul>
+ * </p>
  * <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 GotoLineAction extends TextEditorAction {
 
 	/**
-	 * Validates whether the text found in the input field of the
-	 * dialog forms a valid line number. A number is valid if it is
-	 * one to which can be jumped.
+	 * Validates whether the text found in the input field of the dialog forms a valid line number.
+	 * A number is valid if it is one to which can be jumped.
 	 */
 	class NumberValidator implements IInputValidator {
 
@@ -79,9 +84,8 @@ public class GotoLineAction extends TextEditorAction {
 	}
 
 	/**
-	 * Standard input dialog with custom dialog bounds
-	 * strategy and settings.
-	 *
+	 * Standard input dialog with custom dialog bounds strategy and settings.
+	 * 
 	 * @since 2.0
 	 */
 	static class GotoLineDialog extends InputDialog {
@@ -117,20 +121,21 @@ public class GotoLineAction extends TextEditorAction {
 
 	/** The biggest valid line number of the presented document */
 	private int fLastLine;
+
 	/** This action's resource bundle */
 	private ResourceBundle fBundle;
+
 	/** This action's prefix used for accessing the resource bundle */
 	private String fPrefix;
 
 
 	/**
-	 * Creates a new action for the given text editor. The action configures its
-	 * visual representation from the given resource bundle.
-	 *
+	 * Creates a new action for the given text editor. The action configures its visual
+	 * representation from the given resource bundle.
+	 * 
 	 * @param bundle the resource bundle
-	 * @param prefix a prefix to be prepended to the various resource keys
-	 *   (described in <code>ResourceAction</code> constructor), or
-	 *   <code>null</code> if none
+	 * @param prefix a prefix to be prepended to the various resource keys (described in
+	 *            <code>ResourceAction</code> constructor), or <code>null</code> if none
 	 * @param editor the text editor
 	 * @see TextEditorAction#TextEditorAction(ResourceBundle, String, ITextEditor)
 	 */
@@ -156,7 +161,7 @@ public class GotoLineAction extends TextEditorAction {
 
 	/**
 	 * Jumps to the given line.
-	 *
+	 * 
 	 * @param line the line to jump to
 	 */
 	private void gotoLine(int line) {
@@ -182,36 +187,60 @@ public class GotoLineAction extends TextEditorAction {
 	 * @see Action#run()
 	 */
 	public void run() {
-		try {
-
-			ITextEditor editor= getTextEditor();
+		ITextEditor editor= getTextEditor();
 
-			if (editor == null)
-				return;
+		if (editor == null)
+			return;
 
-			IDocumentProvider docProvider= editor.getDocumentProvider();
-			if (docProvider == null)
-				return;
+		IDocumentProvider docProvider= editor.getDocumentProvider();
+		if (docProvider == null)
+			return;
 
-			IDocument document= docProvider.getDocument(editor.getEditorInput());
-			if (document == null)
-				return;
+		IDocument document= docProvider.getDocument(editor.getEditorInput());
+		if (document == null)
+			return;
 
+		try {
 			fLastLine= document.getLineOfOffset(document.getLength()) + 1;
+		} catch (BadLocationException ex) {
+			IStatus status= new Status(IStatus.ERROR, TextEditorPlugin.PLUGIN_ID, IStatus.OK, "Go to Line failed", ex); //$NON-NLS-1$
+			TextEditorPlugin.getDefault().getLog().log(status);
+			return;
+		}
 
-			String title= fBundle.getString(fPrefix + "dialog.title"); //$NON-NLS-1$
-			String message= NLSUtility.format(fBundle.getString(fPrefix + "dialog.message"), new Integer(fLastLine)); //$NON-NLS-1$
-
-			GotoLineDialog d= new GotoLineDialog(editor.getSite().getShell(), title, message, "", new NumberValidator()); //$NON-NLS-1$
-			if (d.open() == Window.OK) {
+		String title= fBundle.getString(fPrefix + "dialog.title"); //$NON-NLS-1$
+		String message= NLSUtility.format(fBundle.getString(fPrefix + "dialog.message"), new Integer(fLastLine)); //$NON-NLS-1$
+
+		String currentLineStr= ""; //$NON-NLS-1$
+		ISelection selection= editor.getSelectionProvider().getSelection();
+		if (selection instanceof ITextSelection) {
+			ITextSelection textSelection= (ITextSelection)selection;
+			Control textWidget= (Control)editor.getAdapter(Control.class);
+			boolean caretAtStartOfSelection= false;
+			if (textWidget instanceof StyledText)
+				caretAtStartOfSelection= ((StyledText)textWidget).getSelection().x == ((StyledText)textWidget).getCaretOffset();
+			int currentLine;
+			if (caretAtStartOfSelection)
+				currentLine= textSelection.getStartLine();
+			else {
+				int endOffset= textSelection.getOffset() + textSelection.getLength();
 				try {
-					int line= Integer.parseInt(d.getValue());
-					gotoLine(line - 1);
-				} catch (NumberFormatException x) {
+					currentLine= document.getLineOfOffset(endOffset);
+				} catch (BadLocationException ex) {
+					currentLine= -1;
 				}
 			}
+			if (currentLine > -1)
+				currentLineStr= Integer.toString(currentLine + 1);
+		}
 
-		} catch (BadLocationException x) {
+		GotoLineDialog d= new GotoLineDialog(editor.getSite().getShell(), title, message, currentLineStr, new NumberValidator());
+		if (d.open() == Window.OK) {
+			try {
+				int line= Integer.parseInt(d.getValue());
+				gotoLine(line - 1);
+			} catch (NumberFormatException x) {
+			}
 		}
 	}
 }
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplatePreferencePage.java b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplatePreferencePage.java
index 67ebc9f..fbb8900 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplatePreferencePage.java
+++ b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplatePreferencePage.java
@@ -1110,7 +1110,9 @@ public abstract class TemplatePreferencePage extends PreferencePage implements I
 		viewer.setEditable(false);
 		Cursor arrowCursor= viewer.getTextWidget().getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
 		viewer.getTextWidget().setCursor(arrowCursor);
-		viewer.getTextWidget().setCaret(null);
+
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263
+//		viewer.getTextWidget().setCaret(null);
 
 		Control control= viewer.getControl();
 		data= new GridData(GridData.FILL_BOTH);
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java
index d73d9cb..1f0f45f 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,32 +11,34 @@
 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.
+ * 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>
+ * <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>
+ * 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 that doesn't start
+ * with a number. eg: [A-Za-z][A-Za-z0-9]* Using '.' is unsupported. 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.
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java
index 9437f7a..207ac77 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java
index 86a6533..3a4e75d 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -98,6 +98,14 @@ public class NewWizardDropDownAction extends Action implements
          */
         public void dispose() {
             if (dropDownMenuMgr != null) {
+				// remove the wizard menu before disposing the menu manager, the
+				// wizard menu is a workbench action and it should only be
+				// disposed when the workbench window itself is disposed,
+				// IMenuCreators will be disposed when the action is disposed,
+            	// we do not want this, the menu's disposal will be handled when
+				// the owning action (NewWizardDropDownAction) is disposed, see
+				// bug 309716
+				dropDownMenuMgr.remove(newWizardMenu);
                 dropDownMenuMgr.dispose();
                 dropDownMenuMgr = null;
             }
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java
index 0e639f0..344c404 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -232,7 +232,7 @@ public abstract class WorkbenchAdvisor {
 
 	/**
 	 * Performs arbitrary actions just before the first workbench window is
-	 * opened (or restored).
+	 * opened (or restored), and before the main event loop is run.
 	 * <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
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
index c203543..d057620 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
index 857ac8f..4af08aa 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java	
@@ -13,7 +13,6 @@ 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.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
@@ -55,6 +54,17 @@ import org.eclipse.ui.swt.IFocusService;
  */
 public class ContentAssistCommandAdapter extends ContentProposalAdapter {
 
+	private class ContentAssistHandler extends AbstractHandler {
+		public Object execute(ExecutionEvent event) {
+			openProposalPopup();
+			return null;
+		}
+
+		void setEnabled(boolean enabled) {
+			this.setBaseEnabled(enabled);
+		}
+	}
+
 	// ID used in the decoration registry.
 	private static final String CONTENT_ASSIST_DECORATION_ID = "org.eclipse.ui.fieldAssist.ContentAssistField"; //$NON-NLS-1$
 
@@ -76,13 +86,7 @@ public class ContentAssistCommandAdapter extends ContentProposalAdapter {
 	// a platform UI preference.
 	private static final int DEFAULT_AUTO_ACTIVATION_DELAY = 500;
 
-	private IHandler proposalHandler = new AbstractHandler() {
-		public Object execute(ExecutionEvent event) {
-			openProposalPopup();
-			return null;
-		}
-
-	};
+	private ContentAssistHandler proposalHandler = new ContentAssistHandler();
 	private ControlDecoration decoration;
 
 	/**
@@ -255,6 +259,7 @@ public class ContentAssistCommandAdapter extends ContentProposalAdapter {
 				decoration.hide();
 			}
 		}
+		proposalHandler.setEnabled(enabled);
 	}
 
 	private void activateHandler(final Control control) {
@@ -267,8 +272,7 @@ public class ContentAssistCommandAdapter extends ContentProposalAdapter {
 			final IHandlerActivation handlerActivation = hs.activateHandler(commandId,
 					proposalHandler, new Expression() {
 						public EvaluationResult evaluate(IEvaluationContext context) {
-							return context.getVariable(ISources.ACTIVE_FOCUS_CONTROL_NAME) == control
-									&& ContentAssistCommandAdapter.this.isEnabled() ? EvaluationResult.TRUE
+							return context.getVariable(ISources.ACTIVE_FOCUS_CONTROL_NAME) == control ? EvaluationResult.TRUE
 									: EvaluationResult.FALSE;
 						}
 
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
index bdbd211..a71aebf 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java
index 6d20ab3..d1fa612 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java
index cf1f567..bf9991e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
index 1d9514f..1e6475c 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java
index 55f4c50..b962aed 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java
index d6e1be4..6024b36 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java
index 524bda5..3d802c6 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java
index 198e6e2..ed38172 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java
index 1c3ffa9..9c0c049 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java
index a0cc270..662e95e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
index 6c2884c..24265fb 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java
index dc26a88..33f0244 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -624,7 +624,14 @@ public class FastViewManager {
 			secondaryId = idParts[1];
 		
 		List fvs = getFastViews(id);
-		if (fvs.isEmpty()) {
+
+		// Check for 'durable' folders
+		boolean isDurable = false;
+		if (perspective.getDesc() != null) {
+			isDurable = page.window.getWindowAdvisor().isDurableFolder(
+				perspective.getDesc().getId(), id);
+		}
+		if (fvs.isEmpty() && isDurable) {
 			// We are dealing with a durable view stack that is currently empty, so execute special logic to restore it from the minimized state
             LayoutPart part = perspective.getPresentation().findPart(id, null);	
             if (part instanceof ContainerPlaceholder) {
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
index 7770303..009e15b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -314,6 +314,12 @@ public interface IWorkbenchHelpContextIds {
 	public static final String WORKING_SET_TYPE_PAGE = PREFIX
 			+ "working_set_type_page"; //$NON-NLS-1$	
 
+	public static final String PREFERENCES_EXPORT_WIZARD_PAGE = PREFIX
+			+ "preferences_export_wizard_page"; //$NON-NLS-1$
+
+	public static final String PREFERENCES_IMPORT_WIZARD_PAGE = PREFIX
+			+ "preferences_import_wizard_page"; //$NON-NLS-1$
+
 	// Wizards
 	public static final String NEW_WIZARD = PREFIX + "new_wizard_context"; //$NON-NLS-1$
 
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java
index 2848c79..6c6c15d 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java
index 3fbd629..76fbb84 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java
index e0e7d54..2dc6adc 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java	
@@ -591,7 +591,7 @@ public class Perspective {
             if (activeFastView == ref) {
 				setActiveFastView(null);
 			}
-            if (pane != null) {
+			if (pane != null && pane.getControl() != null) {
 				pane.getControl().setEnabled(true);
 			}
             
@@ -1116,8 +1116,8 @@ public class Perspective {
      * deactivate.
      */
 	protected void onDeactivate() {
-		presentation.deactivate();
 		setActiveFastView(null);
+		presentation.deactivate();
 		setAllPinsVisible(false);
 
 		// Update fast views.
@@ -1928,7 +1928,7 @@ public class Perspective {
             ViewPane pane = getPane(activeFastView);
             if (pane != null) {
                 if (pane.isZoomed()) {
-                    presentation.zoomOut();
+					pane.setZoomed(false);
                 }
                 hideFastView(activeFastView, steps);
             }
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java
index feb9a71..38c1291 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java
index 2480d7b..3ec39d4 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java
index c6ccfbf..04175e4 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java
index 00a00e2..fa3d64d 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,7 +11,10 @@
 package org.eclipse.ui.internal;
 
 import org.eclipse.core.runtime.IProduct;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
 
 /**
  * Stores information about the product.  This class replaces the old AboutInfo.
@@ -26,6 +29,8 @@ public class ProductInfo {
 
     private String appName;
 
+	private Version appVersion;
+
     private ImageDescriptor[] windowImages;
 
     private ImageDescriptor aboutImage;
@@ -68,6 +73,32 @@ public class ProductInfo {
         return appName;
     }
 
+	/**
+	 * Return the application version, as defined by the product.
+	 * 
+	 * @return the application version, or the empty version.
+	 * @see org.eclipse.swt.widgets.Display#setAppVersion
+	 * @see Version#emptyVersion
+	 * @since 3.6
+	 */
+	public String getAppVersion() {
+		if (appVersion == null) {
+			if (product != null) {
+				Bundle bundle = product.getDefiningBundle();
+				if (bundle != null) {
+					appVersion = bundle.getVersion();
+				}
+			}
+			if (appVersion == null) {
+				// if we can't find a useful product bundle, try and return
+				// the org.eclipse.ui version (approx of the workbench)
+				Bundle bundle = Platform.getBundle("org.eclipse.ui"); //$NON-NLS-1$
+				appVersion = bundle == null ? Version.emptyVersion : bundle.getVersion();
+			}
+		}
+		return appVersion.toString();
+	}
+
     /**
      * 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 
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
index 2d918ef..e063e77 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java
index f7417e5..47ebd48 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java
index 0b60bbb..ef79269 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java
index c3ae723..ddd01ab 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java
index 3642f3c..1d8456a 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java
index 00fa3e3..b55a4e5 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java
index f301a7f..f3bc5c0 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -203,7 +203,7 @@ public final class ViewIntroAdapterPart extends ViewPart {
 			window.setCoolBarVisible(coolbarVisible);
 			window.setPerspectiveBarVisible(persBarVisible);
 		} else {
-			layout = !window.getCoolBarVisible() || !window.getPerspectiveBarVisible();
+			layout = window.getCoolBarVisible() || window.getPerspectiveBarVisible();
 			window.setCoolBarVisible(false);
 			window.setPerspectiveBarVisible(false);
 		}
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java
index 7fd1fed..99e662b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
index 7014072..f50710b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java	
@@ -10,6 +10,7 @@
  *     Francis Upton - <francisu at ieee.org> - 
  *     		Fix for Bug 217777 [Workbench] Workbench event loop does not terminate if Display is closed
  *     Tasktop Technologies -  Bug 304716 -  [UX] [Progress] Show Eclipse startup progress in the Eclipse icon on the Windows 7 Task Bar
+ *     Tom Schindl -  Bug 310153 -  Allow people to use CSS in 3.x plugins
  *******************************************************************************/
 
 package org.eclipse.ui.internal;
@@ -24,6 +25,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
+import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Dictionary;
@@ -47,6 +49,7 @@ 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.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.ListenerList;
 import org.eclipse.core.runtime.MultiStatus;
@@ -179,6 +182,7 @@ 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.BundleUtility;
 import org.eclipse.ui.internal.util.PrefUtil;
 import org.eclipse.ui.internal.util.Util;
 import org.eclipse.ui.intro.IIntroManager;
@@ -198,6 +202,7 @@ import org.eclipse.ui.testing.ContributionInfo;
 import org.eclipse.ui.themes.IThemeManager;
 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.Constants;
@@ -681,6 +686,11 @@ public final class Workbench extends EventManager implements IWorkbench {
 			Display.setAppName(applicationName);
 		}
 
+		String appVersion = WorkbenchPlugin.getDefault().getAppVersion();
+		if (appVersion != null) {
+			Display.setAppVersion(appVersion);
+		}
+
 		// create the display
 		Display newDisplay = Display.getCurrent();
 		if(newDisplay == null) {
@@ -1536,6 +1546,13 @@ public final class Workbench extends EventManager implements IWorkbench {
 		});
 		
 
+		StartupThreading.runWithoutExceptions(new StartupRunnable() {
+
+			public void runWithException() {
+				startSourceProviders();
+			}
+		});
+
 		// attempt to restore a previous workbench state
 		try {
 			UIStats.start(UIStats.RESTORE_WORKBENCH, "Workbench"); //$NON-NLS-1$
@@ -1723,8 +1740,6 @@ public final class Workbench extends EventManager implements IWorkbench {
 		// 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);
 		
 		
 
@@ -1810,48 +1825,11 @@ public final class Workbench extends EventManager implements IWorkbench {
 				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);
-			}});
+		// the source providers are now initialized in phase 3
 		
 		/*
-		 * Phase 3 of the initialization of commands. This handles the creation
+		 * Phase 2 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.
 		 */
@@ -2329,6 +2307,60 @@ public final class Workbench extends EventManager implements IWorkbench {
 		return Util.getArrayFromList(pref, ";"); //$NON-NLS-1$
 	}
 
+	private void startSourceProviders() {
+		/*
+		 * Phase 3 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 IEvaluationService evaluationService = (IEvaluationService) serviceLocator
+				.getService(IEvaluationService.class);
+		final IContextService contextService = (IContextService) serviceLocator
+				.getService(IContextService.class);
+
+		final SourceProviderService sourceProviderService = new SourceProviderService(
+				serviceLocator);
+		serviceLocator.registerService(ISourceProviderService.class, sourceProviderService);
+		SafeRunner.run(new ISafeRunnable() {
+			public void run() throws Exception {
+				// 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]);
+					}
+				}
+			}
+
+			public void handleException(Throwable exception) {
+				WorkbenchPlugin.log("Failed to initialize a source provider", exception); //$NON-NLS-1$
+			}
+		});
+
+		SafeRunner.run(new ISafeRunnable() {
+			public void run() throws Exception {
+				// 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);
+			}
+
+			public void handleException(Throwable exception) {
+				WorkbenchPlugin.log("Failed to initialize a source provider", exception); //$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
@@ -2423,6 +2455,21 @@ public final class Workbench extends EventManager implements IWorkbench {
 		if (createSplash)
 			createSplashWrapper();
 
+		// activate styling if available
+		Bundle stylingBundle = Platform.getBundle("org.eclipse.e4.ui.css.swt.theme"); //$NON-NLS-1$
+		if (BundleUtility.isReady(stylingBundle)) {
+			try {
+				Class c = stylingBundle
+						.loadClass("org.eclipse.e4.ui.css.swt.internal.theme.BootstrapTheme3x"); //$NON-NLS-1$
+				Constructor constructor = c.getConstructor(new Class[] { Display.class });
+				constructor.newInstance(new Object[] { display });
+			} catch (Exception ex) {
+				WorkbenchPlugin.log(StatusUtil.newStatus(IStatus.WARNING,
+						"Could not start styling support.", //$NON-NLS-1$
+						ex));
+			}
+		}
+
 		// ModalContext should not spin the event loop (there is no UI yet to
 		// block)
 		ModalContext.setAllowReadAndDispatch(false);
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
index 796ca3c..ba04d78 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java
index 7081ef6..b62dc40 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
+ * Copyright (c) 2004, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
index 924eab5..6085404 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java	
@@ -76,6 +76,7 @@ import org.osgi.framework.BundleListener;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.SynchronousBundleListener;
+import org.osgi.framework.Version;
 
 /**
  * This class represents the TOP of the workbench UI world
@@ -1056,6 +1057,18 @@ public class WorkbenchPlugin extends AbstractUIPlugin {
         return getProductInfo().getAppName();
     }
 
+	/**
+	 * Return the application version, as defined by the product.
+	 * 
+	 * @return the application version, or the empty version.
+	 * @see org.eclipse.swt.widgets.Display#setAppVersion
+	 * @see Version#emptyVersion
+	 * @since 3.6
+	 */
+	public String getAppVersion() {
+		return getProductInfo().getAppVersion();
+	}
+
     /**
      * Returns the name of the product.
      * 
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
index ba57f43..c3b801e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java
index bb0f2ed..bfe2f3c 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java
index 7c9874f..1229094 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java
index 5d0ebf9..138be88 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesPage.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -228,7 +228,10 @@ public class AboutFeaturesPage extends ProductInfoPage {
 
 		// text on the right
 		text = new StyledText(infoArea, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
-		text.setCaret(null);
+		
+		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263.
+//		text.setCaret(null);
+
 		text.setFont(parent.getFont());
 		data = new GridData(GridData.FILL, GridData.FILL, true, true);
 		text.setLayoutData(data);
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java
index f12f27d..fbbef18 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/BundleSigningInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
index 4dd542e..0aaf61a 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
index ef6f5e8..ab92826 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java
index e5ee35a..ae99836 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java
index 406b3c4..5fed814 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -310,7 +310,10 @@ public class AboutDialog extends TrayDialog {
     		textComposite.setLayout(layout);
 
     		text = new StyledText(textComposite, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
-    		text.setCaret(null);
+
+    		// Don't set caret to 'null' as this causes https://bugs.eclipse.org/293263.
+//    		text.setCaret(null);
+
             text.setFont(parent.getFont());
             text.setText(item.getText());
             text.setCursor(null);
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java
index 05ac8b0..58ac7e8 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -3104,6 +3104,9 @@ public class CustomizePerspectiveDialog extends TrayDialog {
 	}
 
 	private ArrayList getVisibleIDs(TreeItem root) {
+		if (root == null) {
+			return new ArrayList();
+		}
 		ArrayList ids = new ArrayList(root.getChildren().size());
 		for (Iterator i = root.getChildren().iterator(); i.hasNext();) {
 			DisplayItem object = (DisplayItem) i.next();
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
index eeb382d..123d300 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java
index 4ce91f3..23cb700 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java
index 72e1fed..412a698 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
index 4c22b4b..f744929 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
index e4e991c..eae0e1b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
index 0844fd4..908d1a2 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
index 6cde5bd..cb47089 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
index 8d75f04..921a378 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
index b25ab1f..730914e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
index bce7f99..022184c 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
index 546403d..f2b55d2 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,6 @@ 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;
@@ -334,60 +333,55 @@ public class WorkingSetSelectionDialog extends AbstractWorkingSetDialog {
      * 
      * @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()) {
+	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()) {
+		} 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 
+			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 {
+			} else {
 				String setId = getAggregateIdForSets(typedResult);
-				IWorkingSetManager workingSetManager = workbenchWindow
-						.getWorkbench().getWorkingSetManager();
-				IWorkingSet aggregate = workingSetManager
-						.getWorkingSet(setId);
+				IWorkingSetManager workingSetManager = workbenchWindow.getWorkbench()
+						.getWorkingSetManager();
+				IWorkingSet aggregate = workingSetManager.getWorkingSet(setId);
 				if (aggregate == null) {
-					aggregate = workingSetManager
-							.createAggregateWorkingSet(
-									setId,
-									WorkbenchMessages.WorkbenchPage_workingSet_multi_label,
-									typedResult);
+					aggregate = workingSetManager.createAggregateWorkingSet(setId,
+							WorkbenchMessages.WorkbenchPage_workingSet_multi_label, typedResult);
 					workingSetManager.addWorkingSet(aggregate);
 				}
-				setSelection(new IWorkingSet[] {aggregate});
+				setSelection(new IWorkingSet[] { aggregate });
 				setResult(Collections.singletonList(aggregate));
 			}
-    		}
-        
-        super.okPressed();
-    }
+		}
 
-    /**
+		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 
+	 * @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++) {
+	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();
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
index 0800bf4..758e00c 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
index 9d88dad..d7d314e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java
index 4c4c8e4..1d929b9 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SpyHandler.java	
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, 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.internal.testing.ContributionInfoMessages;
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java
index eff2e27..d8c195a 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/TraversePageHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
index ceee659..80efa86 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java
index 6a34bd2..85a921a 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
index d595111..ceb2aec 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties	
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
+# Copyright (c) 2000, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java
index 59cc015..5181d1f 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java
index d732c6a..560c907 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -61,7 +61,6 @@ public final class MacKeyFormatter extends AbstractKeyFormatter {
         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$
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
index 6c83fc7..a300841 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -68,7 +68,6 @@ public class NativeKeyFormatter extends AbstractKeyFormatter {
         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$
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
index 15fbbe3..5ade509 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java
index 142ea44..b3fcaa4 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
index e0f7026..804d1ee 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java
index 5d72f4d..dd4ba56 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
index 973c80a..00032c7 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java
index 3c28ca7..3de777e 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java
index 3d644f6..cae2ca1 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
index 6e7b140..f13909c 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
index c8a91db..52646e3 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java
index eae9cd0..99eb6f0 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java
index 95305af..d2d2f24 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
index 61c70a8..4c114d0 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java
index 5b8364b..3f2ceb5 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
index fa03623..6e1b98b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java
index 2a51334..8a7a121 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java	
@@ -1,7 +1,5 @@
-package org.eclipse.ui.internal.progress;
-
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +8,8 @@ package org.eclipse.ui.internal.progress;
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
+package org.eclipse.ui.internal.progress;
+
 import com.ibm.icu.text.DateFormat;
 import java.net.URL;
 import java.util.ArrayList;
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java
index b2e48b1..f168ee7 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java
index 3ce7fd1..9205d79 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
index 2814f8e..551d5da 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java
index f932a68..41f6725 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java	
@@ -17,10 +17,12 @@ import org.eclipse.core.commands.ParameterizedCommand;
 import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.bindings.TriggerSequence;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.internal.keys.BindingService;
+import org.eclipse.ui.internal.menus.CommandMessages;
 import org.eclipse.ui.internal.misc.StatusUtil;
 import org.eclipse.ui.keys.IBindingService;
 import org.eclipse.ui.statushandlers.StatusManager;
@@ -81,7 +83,13 @@ public class CommandElement extends QuickAccessElement {
 		return null;
 	}
 
-	public String getLabel() {
+	/**
+	 * Returns a formatted string describes this command.
+	 * 
+	 * @return a description of the command of this element
+	 * @since 3.6
+	 */
+	public String getCommand() {
 		final StringBuffer label = new StringBuffer();
 
 		try {
@@ -95,11 +103,16 @@ public class CommandElement extends QuickAccessElement {
 			label.append(command.toString());
 		}
 
-		String binding = getQualifier();
+		return label.toString();
+	}
+
+	public String getLabel() {
+		String command = getCommand();
+		String binding = getBinding();
 		if (binding != null) {
-			label.append(' ').append(binding);
+			return NLS.bind(CommandMessages.Tooltip_Accelerator, command, binding);
 		}
-		return label.toString();
+		return command;
 	}
 
 	/**
@@ -110,13 +123,13 @@ public class CommandElement extends QuickAccessElement {
 	 *         <code>null</code>
 	 * @since 3.6
 	 */
-	public String getQualifier() {
+	public String getBinding() {
 		BindingService service = (BindingService) PlatformUI.getWorkbench().getService(
 				IBindingService.class);
 		TriggerSequence[] triggerSeq = service.getBindingManager()
 				.getActiveBindingsDisregardingContextFor(command);
 		if (triggerSeq != null && triggerSeq.length > 0) {
-			return '(' + triggerSeq[0].format() + ')';
+			return triggerSeq[0].format();
 		}
 		return null;
 	}
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
index ae3d1cd..372a614 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java
index 9b715f2..8a028d3 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java	
@@ -35,14 +35,8 @@ public abstract class QuickAccessElement {
 
 	/**
 	 * Returns the label to be displayed to the user.
-	 * <p>
-	 * Starting from 3.6, if this element's qualifier string is not
-	 * <code>null</code>, the string <b>must</b> be included as an ending suffix
-	 * to this label.
-	 * </p>
 	 * 
 	 * @return the label
-	 * @see #getQualifier()
 	 */
 	public abstract String getLabel();
 
@@ -76,20 +70,6 @@ public abstract class QuickAccessElement {
 	}
 
 	/**
-	 * Returns qualifier information about this element. <code>null</code> may
-	 * be returned if there is no qualifier information for this element. This
-	 * information <b>must</b> included at the end of this element's label.
-	 * 
-	 * @return this element's qualifier information, or <code>null</code> if it
-	 *         has none
-	 * @see #getLabel()
-	 * @since 3.6
-	 */
-	public String getQualifier() {
-		return null;
-	}
-
-	/**
 	 * @return Returns the provider.
 	 */
 	public QuickAccessProvider getProvider() {
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
index 15beb84..50562ad 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java	
@@ -12,6 +12,7 @@
 package org.eclipse.ui.internal.quickaccess;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Rectangle;
@@ -21,11 +22,11 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableItem;
 
-import org.eclipse.jface.preference.JFacePreferences;
 import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ResourceManager;
+import org.eclipse.jface.viewers.StyledCellLabelProvider;
+import org.eclipse.jface.viewers.StyledString;
 
 import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
 import org.eclipse.ui.internal.WorkbenchImages;
@@ -138,21 +139,23 @@ class QuickAccessEntry {
 			break;
 		case 1:
 			String label = element.getLabel();
-			String qualifier = element.getQualifier();
-			if (qualifier != null) {
-				// this element has a qualifier, we need to style it
-				Color qualifierColor = JFaceResources.getColorRegistry().get(
-						JFacePreferences.QUALIFIER_COLOR);
-				TextStyle qualifierStyle = new TextStyle(boldStyle);
-				// we don't want the bold font
-				qualifierStyle.font = null;
-				qualifierStyle.foreground = qualifierColor;
-				// qualifiers are spec'd to be at the end of an element's label
-				textLayout.setStyle(qualifierStyle, label.length() - qualifier.length(), label.length());
+			if (element instanceof CommandElement) {
+				CommandElement commandElement = (CommandElement) element;
+				String binding = commandElement.getBinding();
+				if (binding != null) {
+					StyledString styledString = StyledCellLabelProvider.styleDecoratedString(label,
+							StyledString.QUALIFIER_STYLER, new StyledString(commandElement
+									.getCommand()));
+					StyleRange[] styleRanges = styledString.getStyleRanges();
+					for (int i = 0; i < styleRanges.length; i++) {
+						textLayout.setStyle(styleRanges[i], styleRanges[i].start,
+								styleRanges[i].start + styleRanges[i].length);
+					}
+				}
 			}
 			Image image = getImage(element, resourceManager);
 			event.gc.drawImage(image, event.x + 1, event.y + 1);
-			textLayout.setText(element.getLabel());
+			textLayout.setText(label);
 			if (boldStyle != null) {
 				for (int i = 0; i < elementMatchRegions.length; i++) {
 					int[] matchRegion = elementMatchRegions[i];
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
index 854dc63..ed0db10 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
index e2aacbb..0639f1a 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
index 4fe87fb..6055a5b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java
index ee6203f..88c3ff9 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchSourceProvider.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,7 +13,6 @@ package org.eclipse.ui.internal.services;
 
 import java.util.HashMap;
 import java.util.Map;
-
 import org.eclipse.core.expressions.IEvaluationContext;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
@@ -229,7 +228,6 @@ public class WorkbenchSourceProvider extends AbstractSourceProvider implements
 	private IWorkbenchPartSite lastActivePartSite = null;
 
 	private Object lastShowInInput = null;
-	private ISelection lastShowInSelection = null;
 
 	private final IPartListener partListener = new IPartListener() {
 
@@ -344,17 +342,8 @@ public class WorkbenchSourceProvider extends AbstractSourceProvider implements
 			sources |= ISources.ACTIVE_SITE;
 			lastShowInInput = newShowInInput;
 		}
-		if (updateShowInSelection) {
-			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;
-				}
-			}
+		if (currentState.get(ISources.SHOW_IN_SELECTION) != IEvaluationContext.UNDEFINED_VARIABLE) {
+			sources |= ISources.ACTIVE_SITE;
 		}
 		Object newActiveEditor = currentState.get(ISources.ACTIVE_EDITOR_NAME);
 		if (!Util.equals(newActiveEditor, lastActiveEditor)) {
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java
index bceed7b..ba4a1fd 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/IStatusDialogConstants.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
index ecd6c6d..5a38f5b 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java
index 0d1526a..c4b1e5f 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
index c0ccb33..fa43c46 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,8 @@ 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.PlatformUI;
+import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
 import org.eclipse.ui.internal.WorkbenchPlugin;
 import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
 
@@ -103,6 +105,19 @@ public class WizardPreferencesExportPage1 extends WizardPreferencesPage  {
 		createOptionsGroup(composite);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#
+	 * createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		PlatformUI.getWorkbench().getHelpSystem()
+				.setHelp(getControl(), IWorkbenchHelpContextIds.PREFERENCES_EXPORT_WIZARD_PAGE);
+
+	}
+
 	/**
 	 * Answer the string to display in self as the destination type
 	 * 
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
index 721422b..08a27be 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,8 @@ 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.PlatformUI;
+import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
 import org.eclipse.ui.internal.WorkbenchPlugin;
 import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
 
@@ -51,6 +53,19 @@ public class WizardPreferencesImportPage1 extends WizardPreferencesPage {
         this("preferencesImportPage1");//$NON-NLS-1$
     }
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#
+	 * createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		PlatformUI.getWorkbench().getHelpSystem()
+				.setHelp(getControl(), IWorkbenchHelpContextIds.PREFERENCES_IMPORT_WIZARD_PAGE);
+
+	}
+
     /* (non-Javadoc)
      * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getAllButtonText()
      */
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java
index 3efce4b..44b2170 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/ExtensionContributionFactory.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java
index f662eaa..bd9d9a7 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
index ae72290..3d71aeb 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java
index 010460a..d3811ce 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java
index 84c07bc..2c83875 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,9 +41,7 @@ import org.eclipse.ui.IWorkbenchPartReference;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.SubActionBars;
 import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.testing.ContributionInfoMessages;
 import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.testing.ContributionInfo;
 
 /**
  * Abstract superclass of all multi-page workbench views.
@@ -410,20 +408,6 @@ public abstract class PageBookView extends ViewPart implements IPartListener {
 		PageRec rec = doCreatePage(part);
 		if (rec != null) {
 			mapPartToRec.put(part, rec);
-			// super-defensive programming, see bug 201301 comment 14:
-			if (rec.page != null) {
-				Control control = rec.page.getControl();
-				if (control != null && !control.isDisposed()) {
-					if (part != null && part.getSite() != null
-							&& part.getSite().getPluginId() != null) {
-						// set contribution information
-						control.setData(new ContributionInfo(part.getSite().getPluginId(),
-								ContributionInfoMessages.ContributionInfo_ViewContent, null));
-					} else {
-						control.setData(null);
-					}
-				}
-			}
 			preparePage(rec);
 		}
 		return rec;
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
index 3fd786e..d705ead 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
index 125c5f1..deb4c93 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
index c274257..90f89f1 100644
--- a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java	
+++ b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java	
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
+ * Copyright (c) 2008, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui/buildnotes_workbench.html b/eclipse/plugins/org.eclipse.ui/buildnotes_workbench.html
index 52f76c1..ec42904 100644
--- a/eclipse/plugins/org.eclipse.ui/buildnotes_workbench.html
+++ b/eclipse/plugins/org.eclipse.ui/buildnotes_workbench.html
@@ -12,6 +12,148 @@
 <h1>Eclipse Platform Build Notes (3.5)<br>
 JFace and Workbench</h1>
 
+<p>Integration Build (June 03, 2010, 10:58 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315532">Bug 315532</a>. [Workbench] ClassCastException: org.eclipse.ui.testing.ContributionInfo cannot be cast to org.eclipse.gef.EditPart (FIXED)<br>
+  </p>
+
+<p>Integration Build (June 02, 2010, 10:48 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314102">Bug 314102</a>. Incorrect summary and missing links on Import/Export Preferences page (FIXED)<br>
+  </p>
+
+<p>Integration Build (June 01, 2010, 11:48 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314864">Bug 314864</a>. [Wizards] chkpii in org_eclipse_ui_keywords.html in I20100527-1200 (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315281">Bug 315281</a>. update copyrights for 3.6 (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 27, 2010, 2:45 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312698">Bug 312698</a>. [Wizards] org.eclipse.ui.keywords extension point description should mention wizards (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 26, 2010, 12:34 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314302">Bug 314302</a>. [Workbench] javadoc for WorkbenchAdvisor.preStartup() should mention that event loop is not running yet (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314320">Bug 314320</a>. [CommonNavigator] Infinite loop in WorkingSetActionProvider.setWorkingSetFilter if misconfigured (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314475">Bug 314475</a>. Advanced button not working again (FIXED)<br>
+  </p>
+
+<p>Integration Build (Mai 20, 2010, 1:24 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312966">Bug 312966</a>. [hovering] Some text in Javadoc hover/view not visible using Ubuntu 10.04 (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 20, 2010, 2:14 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=122341">Bug 122341</a>. [Model] IMemento rejects keys that begin with # (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=298770">Bug 298770</a>. [GTK2.18] Clicking in hover help eats left clicks for entire X session (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=300545">Bug 300545</a>. [Viewers] New column scrolling breaks on first cell selection if you have scrolled the table (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309746">Bug 309746</a>. [CommonNavigator] intermittent test failure in org.eclipse.ui.tests.navigator.SorterTest.testSorterContentOverride (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310446">Bug 310446</a>. [LinkedResources] "Preferences > Linked Resources > New..." should not show "Variable..." (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311599">Bug 311599</a>. [LinkedResources] TVT36:TCT115: FRA - Advanced button not working (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311853">Bug 311853</a>. [Perspectives] [Min/Max] Maximize and Minimizing views causes nullpointer exception (NEW)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312343">Bug 312343</a>. [Wizards] TVT36:TCT220: FRA - Truncated drop down box for Select File System (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312888">Bug 312888</a>. Problems when entering the linked folder location (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313066">Bug 313066</a>. [Workbench] Workbench.createDisplay() needs to call Display.setAppVersion() (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313106">Bug 313106</a>. [CommonNavigator] Regression: Show In > Project Explorer removes selection after setting it (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313138">Bug 313138</a>. [LinkedResources] Conflicting mnemonic in 'Linked Resources' preference page (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 17, 2010, 3:23 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312339">Bug 312339</a>. [IDE] TVT36:TCT216: CHS: Duplicate Mnemonic 'a' on 'Workspace' page (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 17, 2010, 3:23 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312339">Bug 312339</a>. [IDE] TVT36:TCT216: CHS: Duplicate Mnemonic 'a' on 'Workspace' page (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 13, 2010, 7:41 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309407">Bug 309407</a>. [Viewers] [viewers] #expandToLevel(Object, level) retrieves all children when virtual (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 13, 2010, 7:24 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309407">Bug 309407</a>. [Viewers] [viewers] #expandToLevel(Object, level) retrieves all children when virtual (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 13, 2010, 7:21 a.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309407">Bug 309407</a>. [Viewers] [viewers] #expandToLevel(Object, level) retrieves all children when virtual (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 12, 2010, 12:58 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312686">Bug 312686</a>. [CommonNavigator] double click on a tree item causes File to open in the editor (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 12, 2010, 3:13 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=297402">Bug 297402</a>. [IDE] [Wizards] Improvements to the advanced section of new folder wizard (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=300114">Bug 300114</a>. [CommonNavigator] PipelineShapeModification does not handle all set operations correctly (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309746">Bug 309746</a>. [CommonNavigator] intermittent test failure in org.eclipse.ui.tests.navigator.SorterTest.testSorterContentOverride (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310277">Bug 310277</a>. Revert the Navigator support of DROP_LINK (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310461">Bug 310461</a>. [Commands] [actions] 'Show In'  action works only once for IStructuredSelection (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310494">Bug 310494</a>. [LinkedResources] Preference "Link and create virtual folders" does not work (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310671">Bug 310671</a>. [LinkedResources] "New > Folder" wizard: Bad dialog resizing when clicking "Advanced" (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310878">Bug 310878</a>. [LinkedResources] Exception while importing resources in a virtual folder (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311515">Bug 311515</a>. Wrong dialog title (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311778">Bug 311778</a>. [CommonNavigator] Project Explorer selects File object instead of the requested object in the Explorer tree (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 11, 2010, 5:22 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=170956">Bug 170956</a>. [Progress] Would like ability to change icon on the Jobs progress bar (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=302694">Bug 302694</a>. [PropertiesDialog] UI polish for file system attributes on Resource properties page (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=305529">Bug 305529</a>. [Markers] NPE in MarkerFieldEditor if MarkerFieldConfiguration scope is unset (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309684">Bug 309684</a>. Chkpii errors in N20100418-2000 (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310444">Bug 310444</a>. [LinkedResources] Drag and Drop dialogs not disabled when Linked Resources turned off (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310499">Bug 310499</a>. [LinkedResources] Import > File System > Advanced: "Copy into workspace" should be "Create links in workspace" (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310908">Bug 310908</a>. [Markers] NPE thrown by markers job (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311194">Bug 311194</a>. [Dialogs] FilteredResourcesSelectionDialog's constructor doesn't specify what to put in the 'typesMask' parameter (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311438">Bug 311438</a>. please tag these ui bundles so they include source references for the 3.6 release (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311584">Bug 311584</a>. [build path] "Extend" path variable button does nothing (FIXED)<br>
+  </p>
+
+<p>Integration Build (May 08, 2010, 10:33 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=9262">Bug 9262</a>. [Viewers] Recursion with multiple equal elements in IStructuredContentProvider/ITreeContentProvider (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=170956">Bug 170956</a>. [Progress] Would like ability to change icon on the Jobs progress bar (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=284558">Bug 284558</a>. [Perspectives] NPE: CustomizePerspectiveDialog in method getVisibleIDs (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=293263">Bug 293263</a>. [Accessibility] Read-only text boxes not accessible (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306736">Bug 306736</a>. [Workbench] Contributed sourceProvider can cause troubles on start (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309716">Bug 309716</a>. [Perspectives] Resetting a perspective removes all shortcuts from the New toolbar button (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310601">Bug 310601</a>. [FieldAssist] ContentAssistCommandAdapter enablement not toggled when field has focus (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311438">Bug 311438</a>. please tag these ui bundles so they include source references for the 3.6 release (FIXED)<br>
+  </p>
+
+<p>Integration Build (April 25, 2010, 10:27 p.m.)</p>
+  <p>Problem reports updated</p>
+  <p>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310394">Bug 310394</a>. [CommonNavigator] CommonViewer refresh never turns on redraw sometimes - Breaks Team sync view (FIXED)<br>
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310408">Bug 310408</a>. [CommonNavigator] Scary looking error messages incorrectly appear in log (FIXED)<br>
+  </p>
+
 <p>Integration Build (March 11, 2010, 11:14 a.m.)</p>
   <p>Problem reports updated</p>
   <p>
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/ovr16/running_ovr.gif b/eclipse/plugins/org.eclipse.ui/icons/full/ovr16/running_ovr.gif
new file mode 100644
index 0000000..edb42cb
Binary files /dev/null and b/eclipse/plugins/org.eclipse.ui/icons/full/ovr16/running_ovr.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_error.gif b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_error.gif
index 553252c..d374e5f 100644
Binary files a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_error.gif and b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_error.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_none.gif b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_none.gif
index 4aa54a6..9cb9332 100644
Binary files a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_none.gif and b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_none.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_ok.gif b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_ok.gif
index 0fc45ba..ac5f321 100644
Binary files a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_ok.gif and b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_ok.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_task.gif b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_task.gif
index 09d5848..fa92f81 100644
Binary files a/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_task.gif and b/eclipse/plugins/org.eclipse.ui/icons/full/progress/progress_task.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/icons/full/progress/pview.gif b/eclipse/plugins/org.eclipse.ui/icons/full/progress/pview.gif
index 4aa54a6..e3af1ba 100644
Binary files a/eclipse/plugins/org.eclipse.ui/icons/full/progress/pview.gif and b/eclipse/plugins/org.eclipse.ui/icons/full/progress/pview.gif differ
diff --git a/eclipse/plugins/org.eclipse.ui/plugin.properties b/eclipse/plugins/org.eclipse.ui/plugin.properties
index 73226e3..0c95fc0 100644
--- a/eclipse/plugins/org.eclipse.ui/plugin.properties
+++ b/eclipse/plugins/org.eclipse.ui/plugin.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2010 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.ui/schema/keywords.exsd b/eclipse/plugins/org.eclipse.ui/schema/keywords.exsd
index f1dde3a..4f2d146 100644
--- a/eclipse/plugins/org.eclipse.ui/schema/keywords.exsd
+++ b/eclipse/plugins/org.eclipse.ui/schema/keywords.exsd
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.ui">
+<schema targetNamespace="org.eclipse.ui" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
       <appInfo>
          <meta.schema plugin="org.eclipse.ui" id="keywords" name="Keywords"/>
@@ -8,14 +8,15 @@
       <documentation>
          The keywords extension point defines keywords and a unique id for reference by other schemas.
 
-See propertyPages and preferencePages.
+See propertyPages, newWizards, importWizards, exportWizards and preferencePages.
       </documentation>
    </annotation>
 
    <element name="extension">
       <annotation>
-         <documentation>
-         </documentation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
       </annotation>
       <complexType>
          <choice>
@@ -49,10 +50,6 @@ See propertyPages and preferencePages.
    </element>
 
    <element name="keyword">
-      <annotation>
-         <documentation>
-         </documentation>
-      </annotation>
       <complexType>
          <attribute name="id" type="string" use="required">
             <annotation>
@@ -116,7 +113,7 @@ See propertyPages and preferencePages.
          <meta.section type="implementation"/>
       </appInfo>
       <documentation>
-         Keywords are used only with preference and property pages.  See the &lt;samp&gt;keywordReference&lt;/samp&gt; element of the org.eclipse.ui.propertyPages and org.eclipse.ui.preferencePages extension points.
+         Keywords are used with workbench wizards (new, import &amp;amp; export), preference and property pages.  See the &lt;samp&gt;keywordReference&lt;/samp&gt; element of the org.eclipse.ui.propertyPages and org.eclipse.ui.preferencePages extension points.
       </documentation>
    </annotation>
 
@@ -125,7 +122,7 @@ See propertyPages and preferencePages.
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2005,2006 IBM Corporation and others.&lt;br&gt;
+         Copyright (c) 2005, 2010 IBM Corporation and others.&lt;br&gt;
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0 which accompanies
 this distribution, and is available at &lt;a 
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/ConfiguratorUtils.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/ConfiguratorUtils.java
index cbe2cc0..6afed3a 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/ConfiguratorUtils.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/ConfiguratorUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2003, 2009 IBM Corporation and others.
+ *  Copyright (c) 2003, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.osgi.framework.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ConfiguratorUtils {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfiguration.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfiguration.java
index 58a5a02..63b95ac 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfiguration.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import java.net.URL;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IPlatformConfiguration {
 
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfigurationFactory.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfigurationFactory.java
index bc0f044..bd41b89 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfigurationFactory.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/configurator/IPlatformConfigurationFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ import java.net.URL;
  * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
  * (repeatedly) as the API evolves.
  * </p>
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IPlatformConfigurationFactory {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleGroupComponent.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleGroupComponent.java
index eef0902..8dd577a 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleGroupComponent.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleGroupComponent.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,7 +21,12 @@ import org.eclipse.core.runtime.IBundleGroupProvider;
 public class BundleGroupComponent implements IBundleGroupProvider {
 
 	public IBundleGroup[] getBundleGroups() {
-		return ConfigurationActivator.getConfigurator().getBundleGroups();
+		ConfigurationActivator activator = ConfigurationActivator.getConfigurator();
+		if (activator.bundleGroupProviderSR != null)
+			// we manually registered the group in the activator; return no groups
+			// the manually registered service will handle the groups we know about
+			return new IBundleGroup[0];
+		return activator.getBundleGroups();
 	}
 
 	public String getName() {
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
index e5df17d..2a32318 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,7 +42,7 @@ public class ConfigurationActivator implements BundleActivator, IBundleGroupProv
 
 	private static BundleContext context;
 	private ServiceRegistration configurationFactorySR;
-	private ServiceRegistration bundleGroupProviderSR;
+	ServiceRegistration bundleGroupProviderSR;
 	private PlatformConfiguration configuration;
 
 	// Location of the configuration data
@@ -65,7 +65,13 @@ public class ConfigurationActivator implements BundleActivator, IBundleGroupProv
 		context = ctx;
 		loadOptions();
 		acquireFrameworkLogService();
-		initialize();
+		try {
+			initialize();
+		} catch (Exception e) {
+			//we failed to start, so make sure Utils closes its service trackers
+			Utils.shutdown();
+			throw e;
+		}
 
 		//Short cut, if the configuration has not changed
 		if (canRunWithCachedData()) {
@@ -525,7 +531,7 @@ public class ConfigurationActivator implements BundleActivator, IBundleGroupProv
 		return configurator;
 	}
 
-	private void acquireFrameworkLogService() throws Exception {
+	private void acquireFrameworkLogService() {
 		ServiceReference logServiceReference = context.getServiceReference(FrameworkLog.class.getName());
 		if (logServiceReference == null)
 			return;
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
index db64d2a..10e2d39 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -66,7 +66,7 @@ public class ConfigurationParser extends DefaultHandler implements IConfiguratio
 			configURL = url;
 			this.installLocation = installLocation;
 			if ("file".equals(url.getProtocol())) { //$NON-NLS-1$
-				File inputFile = new File(url.getFile());
+				File inputFile = URIUtil.toFile(URIUtil.toURI(url));
 				if (!inputFile.exists() || !inputFile.canRead())
 					return null;
 				lastModified = inputFile.lastModified();
@@ -311,7 +311,7 @@ public class ConfigurationParser extends DefaultHandler implements IConfiguratio
 				ConfigurationParser parser = new ConfigurationParser();
 				Configuration sharedConfig = parser.parse(sharedURL, installLocation);
 				if (sharedConfig == null)
-					throw new Exception();
+					throw new Exception("Failed to parse shared configuration: " + sharedURL);
 				config.setLinkedConfig(sharedConfig);
 			}
 		} catch (Exception e) {
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
index 3331300..e8548fe 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/Utils.java b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/Utils.java
index cb932b4..7aacd63 100644
--- a/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/Utils.java
+++ b/eclipse/plugins/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/Utils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -138,7 +138,7 @@ public class Utils {
 	 */
 	public static boolean isRunning() {
 		Bundle bundle = getBundle(PI_OSGI);
-		return  bundle == null ? false : bundle.getState() == Bundle.ACTIVE;
+		return  bundle == null ? false : (bundle.getState() & (Bundle.ACTIVE | Bundle.STARTING)) != 0;
 	}
 
 	/**
@@ -320,7 +320,7 @@ public class Utils {
 	 * corresponding to the key is not found in the resource bundle
 	 * the key value, or any default text following the key in the
 	 * argument value is returned as the resource string.
-	 * A key is identified as a string begining with the "%" character.
+	 * A key is identified as a string beginning with the "%" character.
 	 * Note that the "%" character is stripped off prior to lookup
 	 * in the resource bundle.
 	 * <p>
diff --git a/eclipse/plugins/org.eclipse.update.core.linux/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.update.core.linux/META-INF/MANIFEST.MF
index da92e5f..4df0396 100644
--- a/eclipse/plugins/org.eclipse.update.core.linux/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.update.core.linux/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentNameLinux
 Bundle-SymbolicName: org.eclipse.update.core.linux
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.update.core;bundle-version="[3.0.0,4.0.0)"
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.update.core.linux/src/update.c b/eclipse/plugins/org.eclipse.update.core.linux/src/update.c
index b2acc26..6fc0e0f 100644
--- a/eclipse/plugins/org.eclipse.update.core.linux/src/update.c
+++ b/eclipse/plugins/org.eclipse.update.core.linux/src/update.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -112,7 +112,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nat
 
 	int result;
 	
-	// Linux implemantation
+	// Linux implementation
 
 	result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH;
 	return result;
diff --git a/eclipse/plugins/org.eclipse.update.core.win32/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.update.core.win32/META-INF/MANIFEST.MF
index 9091590..69038c3 100644
--- a/eclipse/plugins/org.eclipse.update.core.win32/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.update.core.win32/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %fragmentNameWin
 Bundle-SymbolicName: org.eclipse.update.core.win32
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-Vendor: %providerName
 Fragment-Host: org.eclipse.update.core;bundle-version="[3.0.0,4.0.0)"
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.update.core.win32/src/make_ia64.bat b/eclipse/plugins/org.eclipse.update.core.win32/src/make_ia64.bat
index 0099dab..035a5b5 100644
--- a/eclipse/plugins/org.eclipse.update.core.win32/src/make_ia64.bat
+++ b/eclipse/plugins/org.eclipse.update.core.win32/src/make_ia64.bat
@@ -1,5 +1,5 @@
 rem *******************************************************************************
-rem  Copyright (c) 2005, 2006 IBM Corporation and others.
+rem  Copyright (c) 2005, 2008 IBM Corporation and others.
 rem  All rights reserved. This program and the accompanying materials
 rem  are made available under the terms of the Eclipse Public License v1.0
 rem  which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.update.core/plugin.xml b/eclipse/plugins/org.eclipse.update.core/plugin.xml
index 7d24227..db0d7fd 100644
--- a/eclipse/plugins/org.eclipse.update.core/plugin.xml
+++ b/eclipse/plugins/org.eclipse.update.core/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2006 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -9,7 +10,7 @@
      Contributors:
          IBM Corporation - initial API and implementation
  -->
-
+
 <plugin>
 
    <extension-point id="featureTypes" name="%featureTypes.name" schema="schema/featureTypes.exsd"/>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IActivity.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IActivity.java
index 47b7d45..6c18192 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IActivity.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IActivity.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import org.eclipse.core.runtime.*;
  * </p>
  * @see org.eclipse.update.configuration.IInstallConfiguration
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IActivity extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSite.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSite.java
index 58d3249..8c5aaf8 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSite.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.update.core.IVerificationListener;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IConfiguredSite extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSiteChangedListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSiteChangedListener.java
index 44de641..7266208 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSiteChangedListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IConfiguredSiteChangedListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ import org.eclipse.update.core.IFeature;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IConfiguredSiteChangedListener {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfiguration.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfiguration.java
index eb78cff..473b970 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfiguration.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallConfiguration extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfigurationChangedListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfigurationChangedListener.java
index 1183177..d6f02c2 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfigurationChangedListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallConfigurationChangedListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -19,8 +19,8 @@ package org.eclipse.update.configuration;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallConfigurationChangedListener {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallDeltaHandler.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallDeltaHandler.java
index d3348ad..71e92e2 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallDeltaHandler.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IInstallDeltaHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,7 +20,8 @@ package org.eclipse.update.configuration;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated Do not use this interface. The extension point deltaHandler has been deprecated.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallDeltaHandler{
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSite.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSite.java
index d4e8279..bcc03e9 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSite.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import org.eclipse.update.core.IFeature;
  * (repeatedly) as the API evolves.
  * </p> 
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ILocalSite extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSiteChangedListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSiteChangedListener.java
index 51b0d66..98cc3ea 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSiteChangedListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSiteChangedListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -19,8 +19,8 @@ package org.eclipse.update.configuration;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ILocalSiteChangedListener {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSystemInfoListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSystemInfoListener.java
index ae52dd8..a2f3987 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSystemInfoListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ILocalSystemInfoListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ package org.eclipse.update.configuration;
  * @see LocalSystemInfo#removeInfoListener(ILocalSystemInfoListener)
  * @see LocalSystemInfo#fireSystemInfoChanged(IVolume,int)
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ILocalSystemInfoListener {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IProblemHandler.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IProblemHandler.java
index 46ca5b8..037d672 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IProblemHandler.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IProblemHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ package org.eclipse.update.configuration;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IProblemHandler {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ISessionDelta.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ISessionDelta.java
index 29b0790..1d843a5 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ISessionDelta.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/ISessionDelta.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,7 @@ import org.eclipse.update.core.*;
  * </p>
  * @since 2.0
  * @deprecated Do not use this interface
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISessionDelta extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IVolume.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IVolume.java
index 7612622..c120efc 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IVolume.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/IVolume.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * </p>
  * @see org.eclipse.update.configuration.LocalSystemInfo
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IVolume extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/LocalSystemInfo.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/LocalSystemInfo.java
index 7cf2076..038cb4f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/LocalSystemInfo.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/LocalSystemInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.internal.core.Volume;
  * </p>
  * @see ILocalSystemInfoListener
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class LocalSystemInfo {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/package.html
index 3cf1e8e..a35e812 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/configuration/package.html
@@ -16,10 +16,8 @@ system installation and configuration information. In general, users extending
 the update support&nbsp; by writing additional feature and site implementation
 do not need to make use of interfaces defined in this package.
 <p>
-<b>Note:</b> This package is part of an interim API that is still under development and expected to
-change significantly before reaching stability. It is being made available at this early stage to solicit feedback
-from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
-(repeatedly) as the API evolves.
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ArchiveReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ArchiveReference.java
index d5ced7b..0ee0248 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ArchiveReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ArchiveReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -26,8 +26,8 @@ import org.eclipse.update.core.model.ArchiveReferenceModel;
  * @see org.eclipse.update.core.IArchiveReference
  * @see org.eclipse.update.core.model.ArchiveReferenceModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ArchiveReference
 	extends ArchiveReferenceModel
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseFeatureFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseFeatureFactory.java
index f37279a..79fe2df 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseFeatureFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseFeatureFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -42,8 +42,8 @@ import org.eclipse.update.core.model.URLEntryModel;
  * @see org.eclipse.update.core.IFeatureFactory
  * @see org.eclipse.update.core.model.FeatureModelFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class BaseFeatureFactory extends FeatureModelFactory implements IFeatureFactory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseInstallHandler.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseInstallHandler.java
index 82cc097..a3f5f11 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseInstallHandler.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseInstallHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.core.runtime.CoreException;
  * </p> 
  * @see org.eclipse.update.core.IInstallHandler
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class BaseInstallHandler implements IInstallHandler {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
index 5e7225c..650bd1d 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -52,8 +52,8 @@ import org.eclipse.update.internal.core.connection.IResponse;
  * @see org.eclipse.update.core.ISiteFactory
  * @see org.eclipse.update.core.model.SiteModelFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class BaseSiteFactory extends SiteModelFactory implements ISiteFactory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Category.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Category.java
index c87d33b..73d1d56 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Category.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Category.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -26,8 +26,8 @@ import org.eclipse.update.core.model.CategoryModel;
  * @see org.eclipse.update.core.ICategory
  * @see org.eclipse.update.core.model.CategoryModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class Category extends CategoryModel implements ICategory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
index 2055915..632e409 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -43,8 +43,8 @@ import org.eclipse.update.internal.core.connection.IResponse;
  * @see org.eclipse.update.core.JarContentReference
  * @see org.eclipse.update.core.JarEntryContentReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ContentReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
index afc6f6a..329ef57 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
@@ -54,8 +54,8 @@ import org.eclipse.update.internal.core.UpdateSiteIncludedFeatureReference;
  * @see org.eclipse.update.core.IFeature
  * @see org.eclipse.update.core.model.FeatureModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class Feature extends FeatureModel implements IFeature {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
index e131244..0ceea5a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -58,8 +58,8 @@ import org.eclipse.update.internal.core.UpdateManagerUtils;
  * </p>
  * @see org.eclipse.update.core.IFeatureContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class FeatureContentProvider implements IFeatureContentProvider {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
index 615c31e..520081c 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -36,8 +36,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * @see org.eclipse.update.core.IFeatureReference
  * @see org.eclipse.update.core.model.FeatureReferenceModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class FeatureReference extends FeatureReferenceModel implements IFeatureReference, IPlatformEnvironment {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IArchiveReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IArchiveReference.java
index c56589a..776226c 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IArchiveReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IArchiveReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * </p>
  * @see org.eclipse.update.core.ArchiveReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IArchiveReference extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ICategory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ICategory.java
index acca787..c3ac959 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ICategory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ICategory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * </p>
  * @see org.eclipse.update.core.Category
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ICategory  extends IAdaptable{
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IContentConsumer.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IContentConsumer.java
index 19ece44..74fc952 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IContentConsumer.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IContentConsumer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * </p>
  * @see org.eclipse.update.core.IFeatureContentConsumer
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IContentConsumer {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeature.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeature.java
index c4bb09f..8af1af9 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeature.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeature.java
@@ -42,8 +42,8 @@ import org.eclipse.update.core.model.InstallAbortedException;
  * </p>
  * @see org.eclipse.update.core.Feature
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeature extends IAdaptable, IPlatformEnvironment {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentConsumer.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentConsumer.java
index a08af85..116d3dd 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentConsumer.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentConsumer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -39,8 +39,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * </p>
  * @see org.eclipse.update.core.IContentConsumer
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeatureContentConsumer {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
index d0657e5..d09f6f1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -46,8 +46,8 @@ import org.eclipse.core.runtime.CoreException;
  * </p>
  * @see org.eclipse.update.core.FeatureContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeatureContentProvider {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureFactory.java
index 35d8b40..7e0736d 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * </p>
  * @see org.eclipse.update.core.BaseFeatureFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeatureFactory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureReference.java
index e4624f3..e8bd3a3 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * </p>
  * @see org.eclipse.update.core.FeatureReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeatureReference extends IAdaptable,IPlatformEnvironment {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IImport.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IImport.java
index 30051dd..4dc6c70 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IImport.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IImport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * </p>
  * @see org.eclipse.update.core.Import
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IImport extends IAdaptable, IUpdateConstants, IPlatformEnvironment {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IIncludedFeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IIncludedFeatureReference.java
index 4a344bf..7511a62 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IIncludedFeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IIncludedFeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.update.configuration.IConfiguredSite;
  * </p>
  * @see org.eclipse.update.core.FeatureReference
  * @since 2.0.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IIncludedFeatureReference extends IFeatureReference, IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandler.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandler.java
index fac1223..a18790a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandler.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * </p>
  * @see org.eclipse.update.core.BaseInstallHandler
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallHandler {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerEntry.java
index a7a39b9..206cece 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * @see org.eclipse.update.core.InstallHandlerEntry
  * @see org.eclipse.update.core.IInstallHandler
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallHandlerEntry extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerWithFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerWithFilter.java
index cf5c056..30ae8ea 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerWithFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IInstallHandlerWithFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -12,8 +12,8 @@ package org.eclipse.update.core;
 
 /**
  * Custom install handler.
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallHandlerWithFilter extends IInstallHandler{
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/INonPluginEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/INonPluginEntry.java
index e00a8d8..7bd158d 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/INonPluginEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/INonPluginEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -35,8 +35,8 @@ import org.eclipse.core.runtime.IAdaptable;
  * @see org.eclipse.update.core.NonPluginEntry
  * @see org.eclipse.update.core.FeatureContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface INonPluginEntry extends IPlatformEnvironment, IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPlatformEnvironment.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPlatformEnvironment.java
index 025cabd..bad0bfb 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPlatformEnvironment.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPlatformEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.*;
  * @see org.eclipse.update.core.PluginEntry
  * @see org.eclipse.update.core.FeatureContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IPlatformEnvironment extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPluginEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPluginEntry.java
index 788595c..d3c2eb0 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPluginEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IPluginEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.*;
  * @see org.eclipse.update.core.PluginEntry
  * @see org.eclipse.update.core.FeatureContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IPluginEntry extends IPlatformEnvironment,IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISite.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISite.java
index d8a3ea8..663bf80 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISite.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.update.core.model.*;
  * </p>
  * @see org.eclipse.update.core.Site
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISite extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteContentProvider.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteContentProvider.java
index 0dc0457..be7c97b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteContentProvider.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.core.runtime.*;
  * </p>
  * @see org.eclipse.update.core.SiteContentProvider
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISiteContentProvider {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactory.java
index cf493d8..9d908eb 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.update.core.model.*;
  * </p>
  * @see org.eclipse.update.core.BaseSiteFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISiteFactory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactoryExtension.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactoryExtension.java
index 27e4039..b0422b6 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactoryExtension.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFactoryExtension.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -35,8 +35,8 @@ import org.eclipse.update.core.model.*;
  * </p>
  * @see org.eclipse.update.core.BaseSiteFactory
  * @since 2.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISiteFactoryExtension {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFeatureReference.java
index 925197b..0ba2c01 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteFeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.core.runtime.*;
  * </p>
  * @see org.eclipse.update.core.SiteFeatureReference
  * @since 2.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISiteFeatureReference extends IFeatureReference, IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteWithMirrors.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteWithMirrors.java
index 31b5c95..7a0ec9c 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteWithMirrors.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/ISiteWithMirrors.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -14,11 +14,11 @@ import org.eclipse.core.runtime.*;
 
 /**
  * An extension of ISite that supports mirrors.
- * The regular update site contains features (optionally groupped by categories), while
+ * The regular update site contains features (optionally grouped by categories), while
  * a mirrored site can define zero or more updates sites (mirrors) with the same content.
  * This allows users to pick their own update site, for performance purposes.
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface ISiteWithMirrors extends ISite {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IURLEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IURLEntry.java
index 3538178..93ebf0f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IURLEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IURLEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.core.runtime.*;
  * </p>
  * @see org.eclipse.update.core.URLEntry
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IURLEntry extends IAdaptable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IUpdateConstants.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IUpdateConstants.java
index 5f3c550..c4a1381 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IUpdateConstants.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IUpdateConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ package org.eclipse.update.core;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0.2
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateConstants {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationListener.java
index e041f53..16ac847 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ package org.eclipse.update.core;
  * @see org.eclipse.update.core.IVerificationResult
  * @see org.eclipse.update.core.IVerifier
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IVerificationListener {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationResult.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationResult.java
index d400cc0..8ceacc5 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationResult.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerificationResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ package org.eclipse.update.core;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IVerificationResult {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerifier.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerifier.java
index 5b7bfee..61d835a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerifier.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IVerifier.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.core.runtime.*;
  * @see org.eclipse.update.core.IVerificationResult
  * @see org.eclipse.update.core.IFeatureContentProvider#getVerifier()
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IVerifier {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Import.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Import.java
index 5504b3f..156b006 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Import.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Import.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.internal.core.UpdateManagerUtils;
  * @see org.eclipse.update.core.IImport
  * @see org.eclipse.update.core.model.ImportModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class Import extends ImportModel implements IImport {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
index 16a869d..7b8ee28 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -35,8 +35,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * </p>
  * @see org.eclipse.update.core.VersionedIdentifier
  * @since 2.0.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class IncludedFeatureReference
 	extends IncludedFeatureReferenceModel
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallHandlerEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallHandlerEntry.java
index bffb6fa..900254b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallHandlerEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallHandlerEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.core.model.InstallHandlerEntryModel;
  * @see org.eclipse.update.core.model.InstallHandlerEntryModel
  * @see org.eclipse.update.core.IInstallHandler
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InstallHandlerEntry
 	extends InstallHandlerEntryModel
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
index 8df5d85..b722575 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.internal.core.Messages;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InstallMonitor implements IProgressMonitor {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarContentReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarContentReference.java
index 2d8d1a5..1ea7f3a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarContentReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarContentReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -34,8 +34,8 @@ import org.eclipse.update.internal.core.*;
  * @see org.eclipse.update.core.ContentReference
  * @see org.eclipse.update.core.JarEntryContentReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class JarContentReference extends ContentReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarEntryContentReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarEntryContentReference.java
index 08ce0b1..336532c 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarEntryContentReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/JarEntryContentReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import java.util.jar.*;
  * @see org.eclipse.update.core.ContentReference
  * @see org.eclipse.update.core.JarContentReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class JarEntryContentReference extends ContentReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/NonPluginEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/NonPluginEntry.java
index ab5d24b..f854de1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/NonPluginEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/NonPluginEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -26,8 +26,8 @@ import org.eclipse.update.core.model.*;
  * @see org.eclipse.update.core.INonPluginEntry
  * @see org.eclipse.update.core.model.NonPluginEntryModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class NonPluginEntry
 	extends NonPluginEntryModel
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/PluginEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/PluginEntry.java
index 08eb298..3a92eb9 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/PluginEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/PluginEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.internal.core.*;
  * @see org.eclipse.update.core.IPluginEntry
  * @see org.eclipse.update.core.model.PluginEntryModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class PluginEntry extends PluginEntryModel implements IPluginEntry {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Site.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
index 97ddff2..2c6b211 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -40,8 +40,8 @@ import org.eclipse.update.internal.core.*;
  * @see org.eclipse.update.core.ISite
  * @see org.eclipse.update.core.model.SiteModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class Site extends SiteModel implements ISiteWithMirrors {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
index df40967..8f38779 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,8 +25,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
  * (repeatedly) as the API evolves.
  * </p>
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class SiteContentProvider implements ISiteContentProvider {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReference.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReference.java
index 137a3e2..7876b03 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReference.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -32,8 +32,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * @see org.eclipse.update.core.ISiteFeatureReference
  * @see org.eclipse.update.core.SiteFeatureReferenceModel 
  * @since 2.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SiteFeatureReference extends SiteFeatureReferenceModel implements ISiteFeatureReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReferenceModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReferenceModel.java
index 6cf716b..671c69e 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReferenceModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteFeatureReferenceModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import java.util.List;
  * </p>
  * @see org.eclipse.update.core.FeatureReference
  * @since 2.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SiteFeatureReferenceModel extends FeatureReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteManager.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteManager.java
index 8171165..8aeebcf 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteManager.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/SiteManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -36,8 +36,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * @see org.eclipse.update.configuration.ILocalSite
  * @see org.eclipse.update.configuration.IConfiguredSite
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SiteManager {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/URLEntry.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/URLEntry.java
index d3a3082..21342b7 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/URLEntry.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/URLEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.internal.core.*;
  * @see org.eclipse.update.core.IURLEntry
  * @see org.eclipse.update.core.model.URLEntryModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class URLEntry extends URLEntryModel implements IURLEntry {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
index 2b55523..ccde29f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.internal.core.*;
  * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
  * (repeatedly) as the API evolves.
  * </p>
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class Utilities {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Verifier.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Verifier.java
index 52095bd..3692132 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Verifier.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/Verifier.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,8 +25,8 @@ import org.eclipse.core.runtime.*;
  * </p>
  * @see org.eclipse.update.core.IVerifier
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class Verifier implements IVerifier {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
index 2947363..a578772 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.internal.core.*;
  * </p>
  * @see org.eclipse.core.runtime.PluginVersionIdentifier
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class VersionedIdentifier {
 	private String id;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ArchiveReferenceModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ArchiveReferenceModel.java
index f0a0f4d..7359dec 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ArchiveReferenceModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ArchiveReferenceModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import java.net.URL;
  * </p>
  * @see org.eclipse.update.core.ArchiveReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ArchiveReferenceModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/CategoryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/CategoryModel.java
index 8e7a2ea..a99d88b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/CategoryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/CategoryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.update.core.Site;
  * </p>
  * @see org.eclipse.update.core.Category
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class CategoryModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ContentEntryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ContentEntryModel.java
index c972caa..cf71f8d 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ContentEntryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ContentEntryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -26,8 +26,8 @@ package org.eclipse.update.core.model;
  * @see org.eclipse.update.core.model.PluginEntryModel
  * @see org.eclipse.update.core.model.NonPluginEntryModel
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class ContentEntryModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
index 3c6348a..89f9738 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -38,8 +38,8 @@ import org.xml.sax.helpers.DefaultHandler;
  * </ul>
  * 
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class DefaultFeatureParser extends DefaultHandler {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
index afccb07..e60d979 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -63,8 +63,8 @@ import org.xml.sax.helpers.DefaultHandler;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class DefaultSiteParser extends DefaultHandler {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModel.java
index 947faf2..6535672 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModel.java
@@ -40,8 +40,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * </p>
  * @see org.eclipse.update.core.Feature
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class FeatureModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModelFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModelFactory.java
index 1d54f19..4af40a5 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModelFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureModelFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -34,8 +34,8 @@ import org.xml.sax.SAXException;
  * </p>
  * @see org.eclipse.update.core.BaseFeatureFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class FeatureModelFactory {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureReferenceModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureReferenceModel.java
index b4c816b..3536dc0 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureReferenceModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/FeatureReferenceModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -33,8 +33,8 @@ import org.eclipse.update.internal.core.UpdateManagerUtils;
  * </p>
  * @see org.eclipse.update.core.FeatureReference
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class FeatureReferenceModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ImportModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ImportModel.java
index 32da688..29dada1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ImportModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ImportModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,8 +25,8 @@ package org.eclipse.update.core.model;
  * </p>
  * @see org.eclipse.update.core.Import
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ImportModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/IncludedFeatureReferenceModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/IncludedFeatureReferenceModel.java
index aaa9ea5..a2cce0a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/IncludedFeatureReferenceModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/IncludedFeatureReferenceModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.update.core.IUpdateConstants;
  * </p>
  * @see org.eclipse.update.core.IncludedFeatureReference
  * @since 2.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class IncludedFeatureReferenceModel extends FeatureReference {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallAbortedException.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallAbortedException.java
index a732f8c..544a934 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallAbortedException.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallAbortedException.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,8 +23,8 @@ import org.eclipse.core.runtime.Status;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InstallAbortedException extends CoreException {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallHandlerEntryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallHandlerEntryModel.java
index da6f7e4..ea22ec7 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallHandlerEntryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InstallHandlerEntryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import java.net.URL;
  * </p>
  * @see org.eclipse.update.core.InstallHandlerEntry
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InstallHandlerEntryModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InvalidSiteTypeException.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InvalidSiteTypeException.java
index 7ad18ee..50c9214 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InvalidSiteTypeException.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/InvalidSiteTypeException.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ package org.eclipse.update.core.model;
  * </p>
  * @see org.eclipse.update.core.model.SiteModelFactory#canParseSiteType(String)
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InvalidSiteTypeException extends Exception {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ModelObject.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ModelObject.java
index bdcc399..9b55b02 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ModelObject.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/ModelObject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -44,8 +44,8 @@ import org.eclipse.update.internal.core.UpdateManagerUtils;
  * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
  * (repeatedly) as the API evolves.
  * </p>
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class ModelObject extends PlatformObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/NonPluginEntryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/NonPluginEntryModel.java
index 7ae2bd3..44ec8f5 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/NonPluginEntryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/NonPluginEntryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,15 +25,15 @@ package org.eclipse.update.core.model;
  * </p>
  * @see org.eclipse.update.core.NonPluginEntry
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class NonPluginEntryModel extends ContentEntryModel {
 
 	private String id = null;
 
 	/**
-	 * Creates a uninitialized non-plug-in entry model object.
+	 * Creates a uninitialised non-plug-in entry model object.
 	 * 
 	 * @since 2.0
 	 */
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/PluginEntryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/PluginEntryModel.java
index 02259d3..b78c1dc 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/PluginEntryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/PluginEntryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -26,8 +26,8 @@ package org.eclipse.update.core.model;
  * </p>
  * @see org.eclipse.update.core.PluginEntry
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class PluginEntryModel extends ContentEntryModel {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModel.java
index d124825..bd8f17c 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -40,8 +40,8 @@ import org.eclipse.update.internal.model.ConfiguredSiteModel;
  * </p>
  * @see org.eclipse.update.core.Site
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SiteModel extends ModelObject {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
index cdc5411..097884f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -35,8 +35,8 @@ import org.xml.sax.SAXException;
  * </p>
  * @see org.eclipse.update.core.BaseSiteFactory
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SiteModelFactory {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/URLEntryModel.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/URLEntryModel.java
index 1ef1b91..2d4f866 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/URLEntryModel.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/URLEntryModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.update.internal.core.UpdateCore;
  * </p>
  * @see org.eclipse.update.core.URLEntry
  * @since 2.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class URLEntryModel extends ModelObject {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/package.html
index 414eb5b..03886d3 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/model/package.html
@@ -19,5 +19,9 @@ they can use the corresponding derived implementation classes contained
 in package <b>org.eclipse.update.core</b>.
 <p>Classes in this package would typically only be used directly when writing
 and alternate set of model objects for a feature and type implementation.
+<p>
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
+</p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/package.html
index 05da6c8..693e7b1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/core/package.html
@@ -21,5 +21,9 @@ of the API based on a model (<tt>IFooModel</tt> in the pattern) contained
 in package <b>org.eclipse.update.core.model</b>. In general, developers
 should extend the convenience classes rather than completely reimplementing
 the specified interfaces.
+<p>
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
+</p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalFeatureParser.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalFeatureParser.java
index a35363f..dd71997 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalFeatureParser.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalFeatureParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IBatchOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IBatchOperation.java
index 04eb2ca..db561f2 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IBatchOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IBatchOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IBatchOperation  extends IOperation {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IConfigFeatureOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IConfigFeatureOperation.java
index 5b2376b..4b5fcb2 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IConfigFeatureOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IConfigFeatureOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -20,8 +20,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
-  * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
 */
 public interface IConfigFeatureOperation extends IFeatureOperation {
 }
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IFeatureOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IFeatureOperation.java
index 55336fd..69ab740 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IFeatureOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IFeatureOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,8 +23,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IFeatureOperation extends IOperation {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IInstallFeatureOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IInstallFeatureOperation.java
index 7cbf0fa..c946349 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IInstallFeatureOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IInstallFeatureOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IInstallFeatureOperation extends IFeatureOperation {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperation.java
index 10ab50a..161518a 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ import org.eclipse.core.runtime.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IOperation {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationFactory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationFactory.java
index 7b2c811..88d416f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationFactory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,8 +23,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IOperationFactory {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationListener.java
index 755996b..8d15625 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IOperationListener {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationValidator.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationValidator.java
index a6139a8..31cf00b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationValidator.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IOperationValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IOperationValidator {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IReplaceFeatureVersionOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IReplaceFeatureVersionOperation.java
index d9a9dd2..d52e5c4 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IReplaceFeatureVersionOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IReplaceFeatureVersionOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -20,8 +20,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IReplaceFeatureVersionOperation extends IFeatureOperation {
 }
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IRevertConfigurationOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IRevertConfigurationOperation.java
index 1bece29..90fabc9 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IRevertConfigurationOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IRevertConfigurationOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -19,8 +19,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IRevertConfigurationOperation extends IOperation {
 }
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IToggleSiteOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IToggleSiteOperation.java
index 35a971b..f85833b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IToggleSiteOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IToggleSiteOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -19,8 +19,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IToggleSiteOperation extends IOperation {
 }
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUnconfigFeatureOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUnconfigFeatureOperation.java
index 828a325..53b88e3 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUnconfigFeatureOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUnconfigFeatureOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUnconfigFeatureOperation  extends IFeatureOperation {
 }
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUninstallFeatureOperation.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUninstallFeatureOperation.java
index aba6598..f5c7080 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUninstallFeatureOperation.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUninstallFeatureOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -21,8 +21,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUninstallFeatureOperation extends IFeatureOperation {
 	public final static String UNINSTALL = "uninstall"; //$NON-NLS-1$
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUpdateModelChangedListener.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUpdateModelChangedListener.java
index 9176b37..b9dbe91 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUpdateModelChangedListener.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/IUpdateModelChangedListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ package org.eclipse.update.operations;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateModelChangedListener {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/OperationsManager.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/OperationsManager.java
index 71d15d1..50cff42 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/OperationsManager.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/OperationsManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.internal.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class OperationsManager {
 	private static IOperationValidator validator;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/package.html
index 277f616..0588f6e 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/operations/package.html
@@ -13,10 +13,8 @@ Package Specification</h2>
 This package contains interfaces for performing update/install operations 
 without using the Update Manager user interface. 
 <p>
-<b>Note:</b> This package is part of an interim API that is still under development and expected to
-change significantly before reaching stability. It is being made available at this early stage to solicit feedback
-from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
-(repeatedly) as the API evolves.
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BackLevelFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BackLevelFilter.java
index 6f0baa4..b5c3dc0 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BackLevelFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BackLevelFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.internal.operations.*;
  * @see UpdateSearchRequest
  * @see IUpdateSearchFilter
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class BackLevelFilter extends BaseFilter {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BaseFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BaseFilter.java
index c364f57..1d374e1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BaseFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/BaseFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ import org.eclipse.update.core.*;
  * @see UpdateSearchRequest
  * @see IUpdateSearchFilter
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class BaseFilter implements IUpdateSearchFilter {
     /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/EnvironmentFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/EnvironmentFilter.java
index e77e014..f9aa1f6 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/EnvironmentFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/EnvironmentFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.internal.core.*;
  * @see UpdateSearchRequest
  * @see IUpdateSearchFilter
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class EnvironmentFilter extends BaseFilter {
 	
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IQueryUpdateSiteAdapter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IQueryUpdateSiteAdapter.java
index b76d1a5..c96ffa1 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IQueryUpdateSiteAdapter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IQueryUpdateSiteAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ package org.eclipse.update.search;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IQueryUpdateSiteAdapter extends IUpdateSiteAdapter {
 /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchCategory.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchCategory.java
index b206666..f0a52e3 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchCategory.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchCategory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ package org.eclipse.update.search;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchCategory {
 /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchFilter.java
index f6b0724..68df1d5 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchFilter {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchQuery.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchQuery.java
index ebd6025..23023e8 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchQuery.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchQuery.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -22,8 +22,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchQuery {
 /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollector.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollector.java
index 7d31f42..329c5cf 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollector.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,8 +25,8 @@ import org.eclipse.update.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchResultCollector {
 /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollectorFromMirror.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollectorFromMirror.java
index fea4134..a69c790 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollectorFromMirror.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchResultCollectorFromMirror.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.core.IURLEntry;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.1
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchResultCollectorFromMirror extends
 		IUpdateSearchResultCollector {
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchSite.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchSite.java
index 9cda395..e4b7fb7 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchSite.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSearchSite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@ package org.eclipse.update.search;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSearchSite extends IUpdateSiteAdapter {
 /**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSiteAdapter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSiteAdapter.java
index 2e456c2..d1539a8 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSiteAdapter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/IUpdateSiteAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,8 +23,8 @@ import java.net.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public interface IUpdateSiteAdapter {
 	/**
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchRequest.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchRequest.java
index c658f59..d5a7481 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchRequest.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchRequest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -59,8 +59,8 @@ import org.eclipse.update.internal.search.UpdatesSearchCategory;
  * @see UpdateSearchScope
  * @see IUpdateSearchCategory
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UpdateSearchRequest {
 	private IUpdateSearchCategory category;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchScope.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchScope.java
index e7a797a..13f56f2 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchScope.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/UpdateSearchScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import org.eclipse.update.internal.search.*;
  * </p>
  * @see UpdateSearchRequest
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UpdateSearchScope {
 	private Vector sites;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/VersionedIdentifiersFilter.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/VersionedIdentifiersFilter.java
index cd87938..996bd02 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/VersionedIdentifiersFilter.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/VersionedIdentifiersFilter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -29,8 +29,8 @@ import org.eclipse.update.core.*;
  * @see UpdateSearchRequest
  * @see IUpdateSearchFilter
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class VersionedIdentifiersFilter extends BaseFilter {
 	private ArrayList vids;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/package.html
index 62e8f20..350db90 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/search/package.html
@@ -10,12 +10,9 @@ Provides support for performing searches and filtering of features.
 <h2>
 Package Specification</h2>
 This package contains interfaces and helper classes for creating and executing search operations. 
-
 <p>
-<b>Note:</b> This package is part of an interim API that is still under development and expected to
-change significantly before reaching stability. It is being made available at this early stage to solicit feedback
-from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
-(repeatedly) as the API evolves.
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/AddSiteCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/AddSiteCommand.java
index 01a7f8d..8af4b11 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/AddSiteCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/AddSiteCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class AddSiteCommand extends ScriptedCommand {
 	private ISite site;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
index f1aebc6..7ca7891 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.internal.mirror.MirrorCommand;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class CmdLineArgs {
 	private HashMap options = new HashMap();
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
index eb941d3..856ad73 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class DisableCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
index a5fa684..7fdf105 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class EnableCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/InstallCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/InstallCommand.java
index 2cb134e..4dbc525 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/InstallCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/InstallCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -53,8 +53,8 @@ import org.eclipse.update.search.VersionedIdentifiersFilter;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class InstallCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ListFeaturesCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ListFeaturesCommand.java
index c34b9d2..8ac038b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ListFeaturesCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ListFeaturesCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.internal.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class ListFeaturesCommand extends ScriptedCommand {
 	private IConfiguredSite[] sites = getConfiguration().getConfiguredSites();
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/RemoveSiteCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/RemoveSiteCommand.java
index b920762..bbfece4 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/RemoveSiteCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/RemoveSiteCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,8 +27,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class RemoveSiteCommand extends ScriptedCommand {
 	private IConfiguredSite csite;
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ScriptedCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ScriptedCommand.java
index 839347b..eead53b 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ScriptedCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/ScriptedCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,8 +25,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public abstract class ScriptedCommand implements IOperationListener {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/SearchCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/SearchCommand.java
index 272cfc7..a6c989d 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/SearchCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/SearchCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -28,8 +28,8 @@ import org.eclipse.update.search.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class SearchCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
index 5b712d0..f27932f 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,8 +23,8 @@ import org.eclipse.update.internal.core.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class StandaloneUpdateApplication implements IPlatformRunnable {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
index ae3d826..b360535 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -30,8 +30,8 @@ import org.eclipse.update.operations.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UninstallCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
index 1f64c55..8312c5e 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -31,8 +31,8 @@ import org.eclipse.update.search.*;
  * (repeatedly) as the API evolves.
  * </p>
  * @since 3.0
- * @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
- * provisional API was never promoted to stable API, and may be removed from a future release of the platform.
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UpdateCommand extends ScriptedCommand {
 
diff --git a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/package.html b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/package.html
index 7aa8db2..7044920 100644
--- a/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/package.html
+++ b/eclipse/plugins/org.eclipse.update.core/src/org/eclipse/update/standalone/package.html
@@ -14,10 +14,8 @@ This package contains interfaces for performing update/install operations
 without using the Update Manager user interface. In general, it is best to use these
 classes for command line invocation, but it is possible to also use them programmatically.
 <p>
-<b>Note:</b> This package is part of an interim API that is still under development and expected to
-change significantly before reaching stability. It is being made available at this early stage to solicit feedback
-from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
-(repeatedly) as the API evolves.
+<b>Note:</b> This package has been deprecated and will be deleted in a future
+release.  See bug 311590 for details.
 </p>
 </body>
 </html>
diff --git a/eclipse/plugins/org.eclipse.update.scheduler/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.update.scheduler/META-INF/MANIFEST.MF
index f7e3bf0..7003ff4 100644
--- a/eclipse/plugins/org.eclipse.update.scheduler/META-INF/MANIFEST.MF
+++ b/eclipse/plugins/org.eclipse.update.scheduler/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true
-Bundle-Version: 3.2.200.qualifier
+Bundle-Version: 3.2.300.qualifier
 Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/eclipse/plugins/org.eclipse.update.ui/plugin.xml b/eclipse/plugins/org.eclipse.update.ui/plugin.xml
index 4e05f6c..5a460a0 100644
--- a/eclipse/plugins/org.eclipse.update.ui/plugin.xml
+++ b/eclipse/plugins/org.eclipse.update.ui/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
<!--
-     Copyright (c) 2005, 2008 IBM Corporation and others.
+<?eclipse version="3.0"?>
+<!--
+     Copyright (c) 2005, 2010 IBM Corporation and others.
      All rights reserved. This program and the accompanying materials
      are made available under the terms of the Eclipse Public License v1.0
      which accompanies this distribution, and is available at
@@ -9,7 +10,7 @@
      Contributors:
          IBM Corporation - initial API and implementation
  -->
-
+
 <plugin>
 
      <extension
diff --git a/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateJob.java b/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateJob.java
index dfe423d..6b33838 100644
--- a/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateJob.java
+++ b/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateJob.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -42,6 +42,7 @@ import org.eclipse.update.search.UpdateSearchRequest;
  * 
  * @since 3.1
  * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UpdateJob extends Job {
 
diff --git a/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateManagerUI.java b/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateManagerUI.java
index 0146193..0d8fb64 100644
--- a/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateManagerUI.java
+++ b/eclipse/plugins/org.eclipse.update.ui/src/org/eclipse/update/ui/UpdateManagerUI.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2009 IBM Corporation and others.
+ *  Copyright (c) 2000, 2010 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@ import org.eclipse.update.search.*;
  * Clients can use this class to launch the configuration manager window or the install wizard.
  * @since 3.0
  * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
  */
 public class UpdateManagerUI {
 
diff --git a/eclipse/plugins/org.junit4/about.html b/eclipse/plugins/org.junit4/about.html
index 65c03f7..d3184c8 100644
--- a/eclipse/plugins/org.junit4/about.html
+++ b/eclipse/plugins/org.junit4/about.html
@@ -8,7 +8,7 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>September 17 2009</p>	
+<p>November 26 2009</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.RSA
deleted file mode 100644
index 289fbe6..0000000
Binary files a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.RSA and /dev/null differ
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.SF
deleted file mode 100644
index e20ae30..0000000
--- a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/ECLIPSEF.SF
+++ /dev/null
@@ -1,20 +0,0 @@
-Signature-Version: 1.0
-SHA1-Digest-Manifest: zU+/8me6UasPPEdlVosJVqKLSsk=
-Created-By: 1.6.0 (IBM Corporation)
-SHA1-Digest-Manifest-Main-Attributes: 7z1AYCA2GipycLQZpj8d+bU1e2c=
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
-
-Name: junit.jar
-SHA1-Digest: W2LMM686gEQVBCewD+s97Jf7H34=
-
-Name: about.html
-SHA1-Digest: OB4tUYTIdwsIAbpHUAzVaDJ+OHQ=
-
-Name: about_files/cpl-v10.html
-SHA1-Digest: YZUV+BFnw6XLRdU0eCv1FYdy8cQ=
-
-Name: plugin.properties
-SHA1-Digest: 5XC7EdM8EOCa1VASp4M/bgut2mk=
-
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/MANIFEST.MF b/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/MANIFEST.MF
deleted file mode 100644
index 17a8e82..0000000
--- a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ClassPath: junit.jar
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.3
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.junit
-Export-Package: junit.awtui;version="3.8.2",junit.extensions;version="
- 3.8.2",junit.framework;version="3.8.2",junit.runner;version="3.8.2",j
- unit.swingui;version="3.8.2",junit.swingui.icons;version="3.8.2",juni
- t.textui;version="3.8.2"
-Bundle-Version: 3.8.2.v20090203-1005
-Bundle-ManifestVersion: 2
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
-
-Name: junit.jar
-SHA1-Digest: GaQUmzJOviUoolZpiF9CQYOpTU8=
-
-Name: about_files/cpl-v10.html
-SHA1-Digest: o0b19ceZ+HQHVX0Ops751AQVdwM=
-
-Name: about.html
-SHA1-Digest: UFe6k4Ad9XpZmuWF46WW3vk9dVA=
-
-Name: plugin.properties
-SHA1-Digest: mL9yvXBmAAJi7G1tls7akuyPG+A=
-
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/plugin.properties b/eclipse/plugins/org.junit_3.8.2.v20090203-1005/plugin.properties
deleted file mode 100644
index f588160..0000000
--- a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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=JUnit Testing Framework
-providerName=Eclipse.org
diff --git a/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.RSA
new file mode 100644
index 0000000..5b022db
Binary files /dev/null and b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.RSA differ
diff --git a/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.SF
new file mode 100644
index 0000000..d6981b2
--- /dev/null
+++ b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/ECLIPSEF.SF
@@ -0,0 +1,20 @@
+Signature-Version: 1.0
+SHA1-Digest-Manifest: yZRBsd82su+9g+NVIe7TDI6hI6I=
+Created-By: 1.6.0 (IBM Corporation)
+SHA1-Digest-Manifest-Main-Attributes: aF40eMCnlmmT3YC6fdijAlyveCQ=
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
+
+Name: junit.jar
+SHA1-Digest: JmCYuFYsOR7AT5JiGmszoPUAFRY=
+
+Name: about.html
+SHA1-Digest: OB4tUYTIdwsIAbpHUAzVaDJ+OHQ=
+
+Name: about_files/cpl-v10.html
+SHA1-Digest: YZUV+BFnw6XLRdU0eCv1FYdy8cQ=
+
+Name: plugin.properties
+SHA1-Digest: 9r0GiUvSCEu/hSKDiIxBDU+lQRc=
+
diff --git a/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/MANIFEST.MF b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8d18823
--- /dev/null
+++ b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ClassPath: junit.jar
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.3
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.junit
+Export-Package: junit.awtui;version="3.8.2",junit.extensions;version="
+ 3.8.2",junit.framework;version="3.8.2",junit.runner;version="3.8.2",j
+ unit.swingui;version="3.8.2",junit.swingui.icons;version="3.8.2",juni
+ t.textui;version="3.8.2"
+Bundle-Version: 3.8.2.v3_8_2_v20100427-1100
+Bundle-ManifestVersion: 2
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
+
+Name: junit.jar
+SHA1-Digest: YGbHcevShHSz1CGxtuZmi4xgtl0=
+
+Name: about_files/cpl-v10.html
+SHA1-Digest: o0b19ceZ+HQHVX0Ops751AQVdwM=
+
+Name: about.html
+SHA1-Digest: UFe6k4Ad9XpZmuWF46WW3vk9dVA=
+
+Name: plugin.properties
+SHA1-Digest: Czd59izsFwoMYKizyqPC7C25hzQ=
+
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/eclipse.inf b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/eclipse.inf
similarity index 100%
rename from eclipse/plugins/org.junit_3.8.2.v20090203-1005/META-INF/eclipse.inf
rename to eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/META-INF/eclipse.inf
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/about.html b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/about.html
similarity index 100%
rename from eclipse/plugins/org.junit_3.8.2.v20090203-1005/about.html
rename to eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/about.html
diff --git a/eclipse/plugins/org.junit_3.8.2.v20090203-1005/about_files/cpl-v10.html b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/about_files/cpl-v10.html
similarity index 100%
rename from eclipse/plugins/org.junit_3.8.2.v20090203-1005/about_files/cpl-v10.html
rename to eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/about_files/cpl-v10.html
diff --git a/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/plugin.properties b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/plugin.properties
new file mode 100644
index 0000000..a495ea8
--- /dev/null
+++ b/eclipse/plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2000, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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=JUnit Testing Framework
+providerName=Eclipse Orbit
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.RSA
deleted file mode 100644
index 4d5a999..0000000
Binary files a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.RSA and /dev/null differ
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.SF
deleted file mode 100644
index 9a6b6ce..0000000
--- a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/ECLIPSEF.SF
+++ /dev/null
@@ -1,20 +0,0 @@
-Signature-Version: 1.0
-SHA1-Digest-Manifest: qmu22v6UTe+Jy/tpNzmplDFGNjs=
-Created-By: 1.6.0 (IBM Corporation)
-SHA1-Digest-Manifest-Main-Attributes: 0vIMwp2D9MI0IECYKgA8Wb78qo0=
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
-
-Name: junit.jar
-SHA1-Digest: Otjh96QVhtqV4wM/+zk5nUKyuL0=
-
-Name: about.html
-SHA1-Digest: NrCxtJrQLeggavKie0H5Jf2NgVg=
-
-Name: about_files/cpl-v10.html
-SHA1-Digest: MIzNDpOYPvPiuf1zBtCLIJle7hg=
-
-Name: plugin.properties
-SHA1-Digest: T0zk4mIcl2BSwOaH8KE6IwXTwjs=
-
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/MANIFEST.MF b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/MANIFEST.MF
deleted file mode 100644
index ca15e0f..0000000
--- a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,46 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ClassPath: junit.jar
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.junit
-Require-Bundle: org.hamcrest.core;bundle-version="1.1.0";visibility:=r
- eexport
-Export-Package: junit.extensions;version="4.8.1",junit.framework;versi
- on="4.8.1",junit.runner;version="4.8.1",junit.textui;version="4.8.1",
- org.junit;version="4.8.1",org.junit.experimental;version="4.8.1",org.
- junit.experimental.categories;version="4.8.1",org.junit.experimental.
- max;version="4.8.1",org.junit.experimental.results;version="4.8.1",or
- g.junit.experimental.runners;version="4.8.1",org.junit.experimental.t
- heories;version="4.8.1",org.junit.experimental.theories.internal;vers
- ion="4.8.1";x-internal:=true,org.junit.experimental.theories.supplier
- s;version="4.8.1",org.junit.internal;version="4.8.1";x-internal:=true
- ,org.junit.internal.builders;version="4.8.1";x-internal:=true,org.jun
- it.internal.matchers;version="4.8.1";x-internal:=true,org.junit.inter
- nal.requests;version="4.8.1";x-internal:=true,org.junit.internal.runn
- ers;version="4.8.1";x-internal:=true,org.junit.internal.runners.model
- ;version="4.8.1";x-internal:=true,org.junit.internal.runners.statemen
- ts;version="4.8.1";x-internal:=true,org.junit.matchers;version="4.8.1
- ",org.junit.rules;version="4.8.1",org.junit.runner;version="4.8.1",or
- g.junit.runner.manipulation;version="4.8.1",org.junit.runner.notifica
- tion;version="4.8.1",org.junit.runners;version="4.8.1",org.junit.runn
- ers.model;version="4.8.1"
-Bundle-Version: 4.8.1.v4_8_1_v20100114-1600
-Bundle-ManifestVersion: 2
-
-Name: META-INF/eclipse.inf
-SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
-
-Name: junit.jar
-SHA1-Digest: XIT/0/dzpzuuA72Vv7gtkiGAY6k=
-
-Name: about_files/cpl-v10.html
-SHA1-Digest: REygXYi+T14Sj1v8XnnKycNjpN4=
-
-Name: about.html
-SHA1-Digest: w3lIEWRkSmgtAui4qxGRJmqgDw4=
-
-Name: plugin.properties
-SHA1-Digest: yg4cr1Fc8Pkzv804Pu1BHvrWCC4=
-
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/plugin.properties b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/plugin.properties
deleted file mode 100644
index ba4d477..0000000
--- a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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=JUnit Testing Framework
-providerName=Eclipse.org
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.RSA b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.RSA
new file mode 100644
index 0000000..05bf3d8
Binary files /dev/null and b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.RSA differ
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.SF b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.SF
new file mode 100644
index 0000000..ac50b6b
--- /dev/null
+++ b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/ECLIPSEF.SF
@@ -0,0 +1,20 @@
+Signature-Version: 1.0
+SHA1-Digest-Manifest: r/COsuwQgJvh0v56+4Oa9oKJ9yQ=
+Created-By: 1.6.0 (IBM Corporation)
+SHA1-Digest-Manifest-Main-Attributes: +9QXoDk9nmtLRlSF4mBR1u3j0NU=
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
+
+Name: junit.jar
+SHA1-Digest: 3nIr0cIEq1xGZ8kGEKRtO5ptt9I=
+
+Name: about.html
+SHA1-Digest: NrCxtJrQLeggavKie0H5Jf2NgVg=
+
+Name: about_files/cpl-v10.html
+SHA1-Digest: MIzNDpOYPvPiuf1zBtCLIJle7hg=
+
+Name: plugin.properties
+SHA1-Digest: y6pZhnJCqH6f8fjcHiGi3l3i5l4=
+
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/MANIFEST.MF b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9fd116c
--- /dev/null
+++ b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/MANIFEST.MF
@@ -0,0 +1,46 @@
+Manifest-Version: 1.0
+Bundle-ClassPath: junit.jar
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.junit
+Require-Bundle: org.hamcrest.core;bundle-version="1.1.0";visibility:=r
+ eexport
+Export-Package: junit.extensions;version="4.8.1",junit.framework;versi
+ on="4.8.1",junit.runner;version="4.8.1",junit.textui;version="4.8.1",
+ org.junit;version="4.8.1",org.junit.experimental;version="4.8.1",org.
+ junit.experimental.categories;version="4.8.1",org.junit.experimental.
+ max;version="4.8.1",org.junit.experimental.results;version="4.8.1",or
+ g.junit.experimental.runners;version="4.8.1",org.junit.experimental.t
+ heories;version="4.8.1",org.junit.experimental.theories.internal;vers
+ ion="4.8.1";x-internal:=true,org.junit.experimental.theories.supplier
+ s;version="4.8.1",org.junit.internal;version="4.8.1";x-internal:=true
+ ,org.junit.internal.builders;version="4.8.1";x-internal:=true,org.jun
+ it.internal.matchers;version="4.8.1";x-internal:=true,org.junit.inter
+ nal.requests;version="4.8.1";x-internal:=true,org.junit.internal.runn
+ ers;version="4.8.1";x-internal:=true,org.junit.internal.runners.model
+ ;version="4.8.1";x-internal:=true,org.junit.internal.runners.statemen
+ ts;version="4.8.1";x-internal:=true,org.junit.matchers;version="4.8.1
+ ",org.junit.rules;version="4.8.1",org.junit.runner;version="4.8.1",or
+ g.junit.runner.manipulation;version="4.8.1",org.junit.runner.notifica
+ tion;version="4.8.1",org.junit.runners;version="4.8.1",org.junit.runn
+ ers.model;version="4.8.1"
+Bundle-Version: 4.8.1.v4_8_1_v20100427-1100
+Bundle-ManifestVersion: 2
+
+Name: META-INF/eclipse.inf
+SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
+
+Name: junit.jar
+SHA1-Digest: zPmrTAyba4ZMLFgf8QAHILhgZ9o=
+
+Name: about_files/cpl-v10.html
+SHA1-Digest: REygXYi+T14Sj1v8XnnKycNjpN4=
+
+Name: about.html
+SHA1-Digest: w3lIEWRkSmgtAui4qxGRJmqgDw4=
+
+Name: plugin.properties
+SHA1-Digest: f1fR+Wdi2X4qLQSIBEgwenAuk2c=
+
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/eclipse.inf b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/eclipse.inf
similarity index 100%
rename from eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/META-INF/eclipse.inf
rename to eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/META-INF/eclipse.inf
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/about.html b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/about.html
similarity index 100%
rename from eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/about.html
rename to eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/about.html
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/about_files/cpl-v10.html b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/about_files/cpl-v10.html
similarity index 100%
rename from eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100114-1600/about_files/cpl-v10.html
rename to eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/about_files/cpl-v10.html
diff --git a/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/plugin.properties b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/plugin.properties
new file mode 100644
index 0000000..bcf0c26
--- /dev/null
+++ b/eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.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=JUnit Testing Framework
+providerName=Eclipse Orbit


hooks/post-receive
-- 
eclipse - Powerful IDE written in java - Debian package.



More information about the pkg-java-commits mailing list